ArduCopter Mega: порт на обычную Arduino (тестим)
Подскажите, не помню. Как подключить светодиодную ленту, чтобы при просадке батареи начинала моргать.
Там слишком много ковырять надо.
- Знать, как подключить батарею.
- В коде найти где эти данные описываются.
- В зависимости от данных врубать нужную программу секвенсора.
Спросите Алекса-Исраэль. У него, вроде, какие-то решения есть.
Коптер стал падать вниз, но горизонтально, без крена. Ощущение что летел на авторотации.
Я тоже так пробовал, но с меньшей высоты. Удивился, что квадрик не кувыркнулся. Но потом понял - масса сосредоточена внизу, а парусящие винты - вверху. Это и стабилизирует машину при падении. До авторотации не доводил, только холостой ход.
Я тоже так пробовал, но с меньшей высоты. Удивился, что квадрик не кувыркнулся. Но потом понял - масса сосредоточена внизу, а парусящие винты - вверху. Это и стабилизирует машину при падении. До авторотации не доводил, только холостой ход.
До авторотации и не доведете. На вертолете есть подшипник специальный, ван вэй биринг. Расцепляется передача с мотора на ротор. И лопасти намного тяжелее. Если вырубить питание на моторы, так просто остановятся пропеллеры, и все. Кстати и вертолеты на авторотации нормально летают 50 класса. Не меньше. На 450 классе авторотация убогое зрелище.
Там слишком много ковырять надо.
- Знать, как подключить батарею.
- В коде найти где эти данные описываются.
- В зависимости от данных врубать нужную программу секвенсора.
Спросите Алекса-Исраэль. У него, вроде, какие-то решения есть.
Ничего сложного, если есть система измерения напряжения. Запрограммировать Олегов секвенсер еще проще. Но придется копаться в коде. У меня при просадке до 9.5 вольт никакой реакции на экране Планнера, кроме цифр напряжения. По идее должен писать большими буквами о критической просадке батареи. Там в sensors.pde в конце код контроля батареи. Я его малость подправил под свой датчик. Напряжение более менее правильно показывает, но программа обработки критического разряда не вызывается. Где она в коде х.з. Пока не до нее.
До авторотации и не доведете
Так и не доводил. Самый мелкий газ, когда винты крутятся.
Я его малость подправил под свой датчик.
У меня датчика нет. А средствами ардуины можно натряжение мерять? И, хотя бы приблизительно, что и где в коде править. Я только учусь 😃
Отчед: Начал портировать 2.0.43
Как успехи?
Знакомтесь ER9x-ARDUPILOT
Как эта прошивка? Заказал дешевую Турнигу. Кто-нибудь пробовал? Есть смысл перешивать?
Как эта прошивка? Заказал дешевую Турнигу. Кто-нибудь пробовал? Есть смысл перешивать?
Я пока не понял чем версия ARDUPILOT отличается от простой ER9x. И еще - не нашел упоминаний о том, что на экране передатчика можно видеть какие-то параметры коптера. Да и не понятно каким образом это организовать.
У меня датчика нет. А средствами ардуины можно натряжение мерять? И, хотя бы приблизительно, что и где в коде править. Я только учусь
Самый простой вариант без копания в коде: через резистивный делитель подаем напряжение с аккумулятора на аналоговый вход Ардуины 0…5В! Советую начать с “резистор + высокоомный переменник” и постепенно повышать напряжение, чтобы не спалить порт. Потом измерите их суммарное сопротивление. Считываем попугаев analog_read(A*), калибруем. При понижении попугаев до *** запускаем “мигание” на цифровом выходе, который управляет светодиодной лентой через транзисторный ключик. Секвенсор мне без надобности.
А по делу - смотрите sensors.pde и Arducopter.pde в тех местах, где попадается battery. Алекс Шалдыбин писал об этом уже страниц 20 назад…сегодня как раз искал среди “все сообщения Алекса”. И ссылку на арду_вики давал.
Как эта прошивка? Заказал дешевую Турнигу. Кто-нибудь пробовал? Есть смысл перешивать?
Я использую непрошитую с ФР_скай. Доволен. Не вижу смысла в лишних телодвижениях. “Работает - не трогай!”
И еще - не нашел упоминаний о том, что на экране передатчика можно видеть какие-то параметры коптера. Да и не понятно каким образом это организовать.
Если не ошибаюсь, выводится телеметрия с RX FRsky, проводки надо заводить на ATmega внутри аппы. Я сделал иначе: в небольшую коробочку поместил простую ардуинку и мониторчик, подсоединил к передатчику FRsky. Коробочка крепится сверху аппы, но пользуюсь редко. Просто руки чесались.
Как успехи?
Нормально, осталось с компасом разобраться и посмотреть, что там намудрили в RC каналах…
Самое трудное - удалось победить гиры с акселями 😃
удалось победить гиры с акселями
можно поподробнее??
не понятно каким образом это организовать
Через ХВее
можно поподробнее??
Ну если в кратце, то пришлось изучить что выдают гиры и аксель и как их результат передать в AP_IMU а оттуда в DCM. Раньше их результат умножался и делился на коэффициенты, полученные методом тыка, что бы привести к виду, которые выдает ардукоптеровский OilPan. Теперь, результат работы переводится напрямую в рад/с(гира) и дальше в DCM.
А вообще, они много переделали, не могу пока сказать в какую сторону.
Самый простой вариант без копания в коде: через резистивный делитель подаем напряжение с аккумулятора на аналоговый вход Ардуины 0…5В! Советую начать с “резистор + высокоомный переменник” и постепенно повышать напряжение, чтобы не спалить порт. Потом измерите их суммарное сопротивление. Считываем попугаев analog_read(A*), калибруем. При понижении попугаев до *** запускаем “мигание” на цифровом выходе, который управляет светодиодной лентой через транзисторный ключик.
Eto uje est v MultiWii. Deliteli 33k i 51k.
51k na “+”, 33k na “-”… t.e. 33/(33+51) * 12.6v ~= 5v
/* for V BAT monitoring
after the resistor divisor we should get [0V;5V]->[0;1023] on analog V_BATPIN
with R1=33k and R2=51k
vbat = [0;1023]*16/VBATSCALE */
#define VBAT // comment this line to suppress the vbat code
#define VBATSCALE 131 // change this value if readed Battery voltage is different than real voltage
#define VBATLEVEL1_3S 107 // 10,7V
#define VBATLEVEL2_3S 103 // 10,3V
#define VBATLEVEL3_3S 99 // 9.9V
#define NO_VBAT 16 // Avoid beeping without any battery
Proboval ranshe… rabotaet, pravda chto mne tam ne nravilos tak eto razlichnie chastoti morganiya dlya kajdogo VBATLEVEL[N]_3S…
Залил в 2.0.40 версию возможность подключения GPS к i2c шине. Работает только с Ublox модулем, который стоит на AllInOne2.
- Прописываем в APM_Config.h:
#define GPS_PROTOCOL GPS_PROTOCOL_UBLOX_I2C- НЕ подключаем gps через tx-rx
- Тестим
Протестировал - все работает. Сетодиод на плате AllInOne2 мигает, в планере показывает местоположение. Только со сдвигом на север метров 50. У всех так ? Может надо датум GPS настраивать ?
При взлете идет юлой,
А верхние и нижние моторы в разные стороны крутятся?
И движки и пропеллеры крутятся и установленны согласно схемы. После пробы взлета несколько раз перепроверил.
И движки и пропеллеры крутятся и установленны согласно схемы. После пробы взлета несколько раз перепроверил.
Тоже с таким столкнулся на гексе. На взгляд все движки крутятся, а потом глянул raw sensors/radio в планере - а он, оказывается, только на 5 движков нормальный сигнал выводил. Разбираться особо не стал, сменил B8 на Test8 - в ней на все 6 движков идет.
Спасибо, сейчас попробую.
Протестировал - все работает. Сетодиод на плате AllInOne2 мигает, в планере показывает местоположение. Только со сдвигом на север метров 50. У всех так ? Может надо датум GPS настраивать ?
Возможно мало спутников было видно. У меня начиная только с 5 спутников где-то выдает точные координаты.
у меня при 5-6 спутниках прыгает на югозапад метров на 40 (находясь в квартире)
прыгает на югозапад метров на 40
Возникла идея! Использовать 2 GPS, стоящих рядом. Сигналы завести на мелкую Ардуинку.
Расстояние между датчиками = 0 = SQRT{ (long2 - long1)^2 + (lat2-lat1)^2 } = L
В LOOP проверяется, если L > ***, то эти данные слишком шумные и отбрасываются, иначе
ардуинка усредняет long и lat, выбрасывает их наружу. Т.е. она сама имитирует GPS, который можно подключить к АрдуПирату.
Вопрос только в том, как часто будут отбрасываться данные (L > *** )?
И показания GPS имеют нормальное распределение? Тогда довольно часто будет L около нуля, и Ардуино будет выдавать координаты.
Слишком длинные векторы отбрасываем (оранжевый крестик). Синяя точка - усредненное положение по 2м координатам. Красная и зеленая точки в паре - 2 точки, полученные с 2х GPS. Маловероятно, что датчики дадут 2 близко_расположенные точки, но вдалеке от истинного положения. Наиболее вероятно, что близкорасположенные точки будут встречаться рядом с истинными координатами места.
PS предлагать погуглить псевдоскорость и биение фаз не надо.
Выпущена АЛЬФА версия 2.0.44
Ссылки:
Firmware: code.google.com/p/megapirateng/downloads/list
Planer: code.google.com/p/ardupilot-mega/downloads/list
Что нового:
- Используется родная библиотека ArduCopter’a для магнетометра (Магнетометр калибруется автоматически. Offsets так же измеряются на лету, но записываются в прошивку раз в 4 минуты, когда коптер находится на земле (наверное после посадки))
- Гира и аксель выдают свои родные значения и потом в AP_IMU они преобразуются в единицы измерения (рад/с и ускорение)
- Управление LED Секвенсором перенесено на 8й канал, т.к. 7й теперь занят переключателем дополнительных режимов полета
Примечание 1 - Данная прошивка не проверялась в полете (мной и в том числе командой ArduCopter’a). Первым делом, снимите винты!
Примечание 2 - В этой прошивке, изменился формат хранения данных в EEPROM. Это значит, что после перепрошивки, она сама почисти все настройки и вам надо будет пройти всю процедуру настроек.
Примечание 3 - Когда в планере вводите Declination, после ввода, нажмите просто TAB, при этом, значение запишется в прошивку. Если у вас включено отображение консоли, то вы там увидете командку записи declination и новое значение.
Примечание 4 - Я не помню как раньше, но в этой версии, если комтер подключен через USB. MAVLink подключается только, если в момент пока он ищет коннект, сбросить прошивку (Лучше это контроллировать в консоли, т.к. почему то ресет не срабатывает всегда)
Примечание 5 - Планер надо использовать последний (1.0.74)
Внимание! После обновления, первым делом проверьте, что бы ВСЕ датчики работали корректно (и управление то же)! Только потом, пробуйте взлетать.
P.S. Прошивку я у себя проверял только на Arduino + шилд (т.е. без моторов и приемника)