Новые дискретные настройки Fessel Flug контроллера и регулятора Castle для электро пилотажек
Дело не в паяльнике, а в размере плат. Две платы это у же 60 мм в длину и 20 мм в ширину, плюс перемычки с проводами, кнопки…
А теперь прикиньте эти размеры в капоте, уже довольно громоздко получается все это…
Плат со встроенным блютус, в размере мини или нано, я пока не нашел(((
Платы можно склеить 2-х сторонним пористым скотчем, выпаяв соединительные колодки (шины), а после в термоусадку. В полноразмерной пилотажке места хватит - контейнер же под силовой акк тоже нужно делать. А если пилотажка с плоским фюзом, то эту приблуду (таймер) можно и в крыло засунуть. С USB тоже обсуждали, но тут проблема в том, что не на всех телефонах возможно имеющийся порт эмулировать в USB. Хотя если использовать небольшой планшетник… К тому же программист сказал, что блютус-модуль потребуется на следующем этапе, когда будет настраиваться акселерометр (с него надо будет считывать данные для прописания в программе увеличения-уменьшения мощности движка для реализации полноценного пилотажного режима).
Хорошо, если получится и все будет работать, то в принципе можно и самый дешевый телефон под блютус модуль подобрать (правда это уже будет почти бюджет забугорного варианта))).
Либо просто блютус снимать на время полета, для экономии места в модели.
Просто все эти провода занимают места, больше чем кажется)))
ух и интересная тема вырисовывается!, слежу с интересом
очень перспективное направление!
сегодня с почты забрал Ардуино Нано, сажусь за видеоуроки (надеюсь общими усилиями доведем дело до ума)
Я уже месяц сижу, и могу ток слегка поправить готовый скетч, но вот чтоб с нуля , пока только ноль)))))
Не так все легко как кажется))
Радует то, что один и тот же скетч, можно загрузить на разные форматы платы Ардуино! При минимальных изменениях, согласно принципиальных схем.
Очень интересное видео о пилотажках вообще и особенно об электричках Боба Ханта.
При отключении питания на контроллере (таймере Ардуино), не поступает сигнала на регулятор, чтобы убрать газ в ноль.
зачем отключать питание от контролера ??
простейший вариант это использование самого легкого выключателя, включая вариант пары штырьков на которые одевается перемычка,
выведенные на поверхность модели и подключенные к одному из портов,
вполне решает вопрос старта программы.
Да и как то расточительно очень использовать Ардуино просто как таймер, когда можно убирать шасси и работать с акселерометром.
механизм уборки шасси, та же самая серва, портов с ШИМ на Ардуинке, даже самой простенькой хватит на десяток серв.
убрать шасси, в скетче две команды (если каналов два) выпустить еще две ))
По правилам надо отключать основную батарею! Там большие токи и используется перемычка , такая же по сечению как и провода батареи.
Кнопка нужна для того, чтобы начать старт и прервать его в любой момент, дергать силовую перемычку не комильфо.
Уборка шасси должна быть не просто вкл и выкл, а через 5-10 секунд после взлета и за 5-10 секунд до посадки, в зависимости от выставленного времени полета. А это уже не две команды. Это уже небольшая логика, с которой сейчас я борюсь. Если знаете как это прописать в скетче, буду очень рад помощи. Спасибо.
Я не много не правильно выразился.
Перед стартом
-устанавливается батарея
-закрывается кабина (опционально)
-пилот уходит в центр
-помощник снимает перемычку/включает тумблер/нажимает на кнопку (не силовая цепь)
стартует программа
Уборка шасси должна быть не просто вкл и выкл, а через 5-10 секунд после взлета и за 5-10 секунд до посадки, в зависимости от выставленного времени полета.
это вообще не вопрос )), это на самом деле две команды через старт+секунд время.
помогу ))
мало того, все эти параметры есть смысл сразу хранить в епром, тогда появится возможность изменения и сохранения настроек минуя компьютер
Кнопка нужна для того, чтобы начать старт и прервать его в любой момент
пусть будет кнопка, только не отключение питания ардуинки, а на один из цифровых портов.
в скетче проверка на нажатие
нажали/сняли перемычку/выключили тумблер - старт цикла (запуск двигателя, через t - убрали шасси)
тут надо иметь в виду, что обычные кнопки имеют дребезг, именно поэтому я рекомендую простой тумблер (вкл/выкл)
или слаботочную перемычку, типа таких которые намамках стоят, вес пол грамма вместо с проводами
еще раз нажали/вернули перемычку/включили тумблер - аварийное завершение цикла (газ в ноль, шасси на выпуск)
не нажали до выхода из цикла - стандартное завершение цикла (выпустили шасси, начинаем снижать обороты)
Что перемычка, что кнопка, эту логику надо прописать в Ардуино, чтобы она знала, что делать.
Reset не предлагать, там иногда проскакивают импульсы при перезагрузке , на которые реагирует регулятор включением двигателя. Как раз на днях это было проверено)) Слишком ардуинка чувствительна, даже на прикосновение пальца к контактам.
Задержка на нажатие кнопка 5мс как раз на дребезг…
Логику я как раз понимаю, а вот в коммандах пока никак)))
И еще момент, что по газу хорошо бы было уйти от серво бибилотеки, а как то задавать обороты в скетче. Чтобы прописал 10 000, а ардуина сама все прерывания и уровни выставила…
теперь еще момент,
почитал тему и очень удивился цеплянию за говернер, этот так необходимо?
в правилах что то есть касательно неизменных оборотов ??
на самом деле акселерометр достаточно просто решает вопрос изменения оборотов двигателя в зависимости от направления полета.
причем можно заложить в логику график изменения оборотов в зависимости от скорости изменения высоты ))
современные регуляторы (я не говорю о китайцах-китайцах), но даже китайский Hobby Wing Platinum,
не говоря уже о CC Phoenix Edge очень быстро реагируют на изменение положения стика газа.
Иначе на радио пилотажках на них никто бы не летал )
Задержка на нажатие кнопка 5мс как раз на дребезг…
я не видел Ваш скетч, если можно ткните носом.
но использование задержек это не комильфо
у ардуины есть таймер, им надо пользоваться, тогда логика ломаться не будет
www.arduino.ru
не знаю видели этот сайт или нет, но там масса примеров, плюс описание языка
обычные кнопки имеют дребезг
Кондер в параллель снимает эту проблему.
выпуск шасси
делаете две маленькие функции
gearup() и geardown()
вот arduino.ru/Reference/Millis функция работы с временем
проверяете состояние перемычки и если сняли
timestart = millis(); - с этого времени идет отсчет всего, старта останова выпуска уборки и прочее ))
…
flytime = millis()-timestart;
if (flytime > 5000) gearup(); через пять секунд
то же самое для убрать )
Кондер в параллель снимает эту проблему.
далеко не всегда, проверено
перемычка и проще и легче
Видел сайт уже второй месяц на нем тусуюсь и туплю, ну не мое это программирование))
Скетча как такового нет, играюсь с тем что выложил Евгений. Как напишу с нуля, выложу. Сейчас еще разбираюсь.
Нужно обеспечить 3 режима за полет, мордой вверх, мордой вниз, горизонт. Гувернер больше нужен для того чтобы следить за батарейкой и держать обороты.
Кондер может и не снять, надо с осциллографом смотреть.
самое простое разбить скетч на маленькие функции
и из них уже строить.
а скетч Евгения это где ?
Нужно обеспечить 3 режима за полет, мордой вверх, мордой вниз, горизонт.
как я понимаю, для начала нужно обеспечить взлет полет и посадку по времени, с уборкой шасси или без оной.
и получить что то законченное, поверьте мне, сразу городить большой огород не стоит )
дальше можно будет расширять функционал
if (flytime > 5000) gearup(); через пять секунд
А в это время модель только начала разбег… 😃
Гувернер больше нужен для того чтобы следить за батарейкой и держать обороты.
единственное достоинство говернера, это поддержание постоянны оборотов при изменении напряжения на батарее.
скажем так, этот вопрос тоже можно решить без говернера, ардуина умеет измерять напряжение,
дальше по мере проседания напряжения на батарее можно увеличивать ширину импульса на входе в регулятор.
но это все опять же позже )
Так взлет, посадка и полет уже написано и работает.
Надо теперь кнопку добавить, лампочку чтоб моргала показываю режим шасси можно уже потом.
Вот оно github.com/MrPix/CLAAT
А в это время модель только начала разбег…
я стесняюсь спросить, а вы сколько времени держите кордовую модель в руках, после того как пилот натянул корды.
а кроме того, условия для убирания шасси могут быть разными.
если у Вас нет конструктивных предложений …
Вот оно github.com/MrPix/CLAAT
этот скетч запустится как только на ардуину будет подано питание
сколько времени держите кордовую модель в руках
Модель с колёсами?! Нисколько не держу.
условия для убирания шасси могут быть разными.
Меня очень интересуют мысли по поводу того, как определить, что модель уже взлетела.
Уборка шасси это не самое нужное, это просто понты…
Можно определить по сигналу акселерометра, если уж очень надо.
этот скетч запустится как только на ардуину будет подано питание
Да, а это и не есть хорошо, нужно нажатие кнопки, на отсчет времени, старта (подготовки), и дальнейший полет. Лучше по двойному нажатию. Отключение одно нажатие.
Модель с колёсами?! Нисколько не держу.
и вы хотите сказать, что пяти секунд не хватит на взлет с колес ?
мало пяти секунд, поставьте 10.
Сергей, давайте так, если есть конструктивные мысли - пишите, нет - не пишите.
Можно определить по сигналу акселерометра
во когда он прикрутится, тогда можно будет, а пока по времени
примерно как сделать кнопку
int key = 7; // кнопка/перемычка/тумблер на ногу номер 7
void setup()
{
…
pinMode(key, INPUT); // устанавливает режим работы - вход
…
}void loop() {
unsigned long currentMillis = millis();
if (!digitalRead(key) {
if (currentMillis - previousMillis >= currentInterval) {
if (currentState == 0) {
// we are ready to fly, throttle max!
for (curThrottle = 0; curThrottle <= maxThrottle; curThrottle += 1) {
esc.write(curThrottle);
delay(20); // Throlle up delay
}
if (curThrottle < maxThrottle) {
curThrottle = maxThrottle;
}
esc.write(curThrottle);
currentInterval = flyingTime;
previousMillis = millis();
currentState = 1;
} else if (currentState == 1) {
// flying time is gone, time to landing
for (curThrottle = maxThrottle; curThrottle > 0; curThrottle -= 1) {
esc.write(curThrottle);
delay(100);// Throlle down delay
}
if (curThrottle < 0) {
curThrottle = 0;
}
esc.write(curThrottle);
currentState = 2;
} else {
// done
}
}
}
}
что бы было понятно, прописана кнопка
это самый простой вариант, кнопка на выключение.
т.е. выключили, и пока она выключена, все работает так как у Вас было )
написано конечно криво, но постарался прикрутить к не самому оптимальному коду.