MultiWii
ардуино и прочий хлам где то заплутали, а поделать что нибудь уж очень хотелось
решил таки провести стендовые испытания ITG-3205, чтобы потом уже не грешить на него. Перерезал на WMP все лишние дорожки прицепил гиру напрямую к контроллеру. Ардуинины нет, так что цеплял к ARM-ой оценочной плате (проц STM32F100Rb), ну что в данном случае практически неважно
параметры инициализации гиры взял ровно такие как в 1.7 и схему подключения тоже родную (без согласователей уровней только. этот проц прерасно работает от 3В)
померял что же он там выдает без внешних воздействий
а выдает она очень даже неплохо - значения пляшут всего навсего в пределах ±2-3 единицы (и это на полной 16 битной шкале)
изменение температуры на 20С (приставил вплотную к плате настольную лампу) уводит значения где то на 40-60 единиц (по разным каналам по разному)
встроеный датчик температуры ведет себя тоже адекватно, так что вполне реально без лишних деталей сделать практически “неуплывающую” гиру (на основе таблицы поправок для всего диапазона полетных температур)
чувствительность очень хорошая - легкий щелчок по столу - значения на выходе изменяются примерно на сотню
попробую еще написать какую нито хрень для оценки всего в динамике (ну какую нито идиотскую программу типа угломера)
предваительные выводы - гира вполне себе нормальная и нечего на нее балоны катить 😃 проблемы в прошивке вия, подключении и и.т.д.
никто не в курсе кстати почему в мультивии не используют прерывания по готовности результатов измерений от гиры?
С прерываниями
- не нужно будет никаких извращений с подсчетом времени между измерениями (прерывния будут сыпаться строго с частотой которую зададим гире),
- нет риска потерять результаты если в основном цикле не успели считать (выполняли, например, какой нито расчет ужасный)
- нет риска считать один байт от первого измерения, один от следующего - там внутри 16 битные регистры, а считывание идет побайтно. Cоответственно возможно считать 1 байт, регистры в этот момент обновятся и следующий байт будет от нового измерения.
насчет (3) до конца не уверен что проблема есть (даташит кроме как настойчивой рекомендации использовать прерывания остальное умалчивает). Eдинственное что обнаржил на блок схеме потрохов некую очередб FIFO для регистров данных - возможно она исключает данную ситуацию (хз в общем)
никто не в курсе кстати почему в мультивии не используют прерывания по готовности результатов измерений от гиры? С прерываниями 1. не нужно будет никаких извращений с подсчетом времени между измерениями (прерывния будут сыпаться строго с частотой которую зададим гире), 2. нет риска потерять результаты если в основном цикле не успели считать (выполняли, например, какой нито расчет ужасный) 3. нет риска считать один байт от первого измерения, один от следующего - там внутри 16 битные регистры, а считывание идет побайтно. соответственно возможно считать 1 байт, регистры в этот момент обновятся и следующий байт будет от нового измерения.
Роман, вообще к прошивкам multiwii у многих накопилось и позитивного и негативного 😃 Алекса можно понять, он занимается какойто своей доводкой, тем более у него свои коптеры, свои сенсоры, короче он не может охватить все и вся. Если вы, мы, всем миром сможем улучшить прошивку, то от этого мы только выйграем 😃
Стяжки отлично играют роль пропсейверов, так как гайка не сильно затянута, чтобы не вытянуть вал из мотора. При ударе винта о стену, он останавливается, вал крутится, стяжка рвется.
а может лучше без стяжки, т.к. они вносят дисбаланс. Просто снизу такую же гайку, винд и сверху гаяка (если резьбы хватает.
Нет, не лучше, они практически ничего не весят и не вносят никакого дисбаланса. Это проверенная схема пользователей таких движков (DT700, DT750), я тут ничего нового не придумал.
Алил, спасибо огромное за софт трим, это нечно.
Коптер если не висит как вкопанный, то реально мегастабилен. Видео через час 😃
Для тек кто пропустил тему фот трима аскеля в прошивках 1.7:
1. Останавливаем моторы (газ в минимум, руддер влево до упора),
2. газ в максимум (это вы вошли в режим софт трима) и
3. a) если у вас коптер смешался в стабмоде влево, вы дергаете один-два раз стик РОЛЛа вправо, и наоборот
3. b) если у вас коптер смешался назад, вы дергаете один-два раза стик ПИТЧа вперед.
4. Газ в минимум, запускаем моторы, смотрел как летает. Если надо повторяем процедуру с пункта 1.
ITG-3205
Отпилил от ВМП, получилось так:
LLC не использую. На ВМА020 подтяжки по 10 кОм, на 3205 - по 1.9 кОм. Итого 1.5 кОм. Все отлично работает от 3v3. Только я не понял, почему при малом сопротивлении подтягивающих резисторов “сгорят датчики”? Я думаю, сгорит выход Ардуины.
По поводу прерываний- уже несколько раз встречал проблемы у людей и ошибки в даташитах. Что-то насчет “0 или 1” на CS, INT, SDO, точно не помню. И с адресацией косяки какие-то вылазили на ВМА180.
почему при малом сопротивлении подтягивающих резисторов “сгорят датчики”
А где про это писали?
При 1,5кОм ничего не сгорит. это чуть больше 2mA при логическом нуле на выходе хоть ардуинины, хоть гиры при питании от 3.3в. для ITG-3205 типовое для ножек SDA и SCL - 3mA. Для атмелов хз скока - лень смотреть - но точно не меньше.
В принципе от совсем мелких резюков сгореть может хоть контроллер, хоть датчики. I2C двунаправленная и “прижать” линию к нулю имеет право любое устройство на шине.
Номиналы резисторов подбираются чтобы не было заваленных фронтов у импульсов на шине. В 0 то их “прижимают” устройства, а в 1 они возвращаются сами. Чем меньше номинал, тем быстрее вернутся.
где про это писали
wbb.multiwii.com/viewtopic.php?f=15&t=91 и много встречал в ветке Мультивии на рцгроупс. Люди переживают, что без LLC сгорят itg3205 (3200), BMA180 и прочие чипы 3v3. BMA020 имеет на плате LLC и гарантировано от 5В уровня работает. И еще некоторые жалуются, что СпаркФановские LLC “шумные” и портят сигнал - A logic level converter should not be used. It makes the readings very noisy..
Благодарю за пояснения. Вылетело из головы, что шина двунаправленная, значит, всем будет плохо при “КЗ”. Кстати, на LLC типа таких www.sparkfun.com/products/8745 будут задействованы сразу 2 канала “туда” и “обратно”.
Более полный вариант как я подключил adxl335 по схеме от tarik
Датчик ориентирован точно так же, как при использовании нунчака: сенсор вверх ногами и точечка на сенсоре и буковки ориентирована в противоположную сторону движения (тут наверное проще картинку или фотку, если надо - сделаю)
проводки припаяны напрямую к дорожкам от сенсора
X -> A3
Y -> A2
Z -> A1
- в прошивке поменял местами (лениво перепаивать было)
void adc_ACC_getRawADC() {
accADC[ROLL] = -analogRead(A2); // Y
accADC[PITCH] = -analogRead(A3); // X
accADC[YAW] = -analogRead(A1); // Z
А теперь результат (wmp на 400мгц, видео чуток ускорено):
раньше был глючный нунчак и время цикла 8000 =)
Какой у нас бурный процесс покорения мультивия идет, скажите парни? Аж приятно 😃
Комсомольская стройка 😃
Комсомольская стройка
Догнать и перегнать! =)
Слово “wii” скоро только в названии проекта останется.
бурный процесс покорения мультивия идет,
еще бы это скомпановать, чтоб отделить конечные результаты от кучи обсуждения
чтоб отделить конечные результаты от кучи обсуждения
Думаешь новички будут читать твою компановку и не задавать вопросов? ЩАС! компануй не компануй, все равно получим … 😃
wbb.multiwii.com/viewtopic.php?f=15&t=91 и много встречал в ветке Мультивии на рцгроупс. Люди переживают, что без LLC сгорят itg3205 (3200), BMA180 и прочие чипы 3v3. BMA020 имеет на плате LLC и гарантировано от 5В уровня работает.
Теперь понял о чем разговор 😃 Прошлый ответ считать общеобразовательным по I2C.
Имхо подключать без LLC с подтяжкой к 3.3 вольтам можно достаточно безопасно, главное понимать что там происходит. Самое главное чтобы от контроллера на линии SCL и SDA не пошел сигнал больше напряжения питания датчиков. Иначе да, могут погореть, ибо там уже ток потечет наверное даже через подложку датчиков неисповедимыми путями и что будет с таким датчиком - хз.
С контроллером не будет скорее всего ничего. То есть самое главное чтобы программно выходы SDA и SCL ардуинины не оказались никогда сконфигурены как обычные выходы и на них не была выведена правильная пятивольтовая “единица”. Т.е. всё в руках прошивки и прошивальшика 😃
Зато получаем коптер с системой самоуничтожения датчиков 😃
В общем решение имеет право на жизнь - надо просто отдавать себе отчет что с ним можно делать а что нельзя
А вообще думается пора всю эту пятивольтовую хрень на пенсию. Вот лежит у меня на столе та самая отладочная плата за 350 рублей на ARM-ском процессоре (24 мгц при 3 вольтах питания, доступны экземпляры до 120 мгц, осенью обещают CORTEX-M4 со всроенным DSP (все наши пиды, векторная арифметика, преобразование фурье в железе)и аппаратной поддержкой операций с плавающей точкой) и бродят всякие нехорошие мысли портировать мультиивии под нее.
Если-б еще форум позволял FAQ сделать…
Через пару дней буду писать цикл статей о коптерах. Там же опишу свой путь от закупки и до первых полётов. новичков можно будет туда отправлять.
при 3 вольтах питания
Тогда понадобятся LLC для управления ESC (5В) и приема сигналов от RX (5В).
На следующей неделе постараюсь добраться к осциллографу и узнать амплитуду в шине i2c.
Тогда понадобятся LLC для управления ESC (5В) и приема сигналов от RX (5В).
почти на все ноги STM32F можно подавать 5В (считайте что LLC встроена)
не факт что ESC внутри не 3,3 вольтовые с такими же встроенными в проц “LLC” (для большинства думаю что так).
Дополнение: приемники в основной массе питаются без проблем в диапазоне 3.7~9.6V, значит внутри он с очень большой вероятностью 3,3 и кормит ESC 3,3 вольтовыми сигналами. Последние в основной массе не жалуются 😃
Народ, а кто-нибудь домашний микрокоптер пытался собрать на WMP?
Поделитесь ссылкой, если видели что-нибудь подобное на забугорных форумах
домашний микрокоптер
Вчера видел на буржуйском форуме фотки… попробую найти
микрокоптер
radio-commande.com/generic/micro-quad/
Сам хотел, даже микро-движки присмотрел, еще меньше этих. Пропеллеры 4"-5". Датчики нужны хорошие и балансировка, чтобы не бился о стены.
Да, это именно то, что я видел