MultiWii

SovGVD
YAN=:

Cколько ms получилось?

идеально нолик =)))
в общем шикарно, время цикла с 8000 до 2700 упало (при движении подскакивает до 3000-5000), но где то всетаки явно перепутал оси - осталось понять где или погуглить как народ располагает wmp относительно датчика

YAN=

Значит стоит переделывать?

SovGVD

я пока доволен как слон, всетаки 2700 (wmp на 400мгц) намного лучше 8000 и постоянно отваливающегося и глючного нунчака
upd: судя по картинкам я его кверхногами присобачил, развернув на 90* блин =)

Covax
SovGVD:

я пока доволен как слон, всетаки 2700 (wmp на 400мгц) намного лучше 8000 и постоянно отваливающегося и глючного нунчака upd: судя по картинкам я его кверхногами присобачил, развернув на 90* блин =)

Видишь какой ты молодец 😃 на счет к верх ногами в прошивке знаки где надо поменяй и все

V8Max:

это разводка печатной платы или самого датчика???

V8Max:

Господи, меня сегодня не кто не понимает))))

спрашивается, зачем задаешь вопрос, если уже нашел на него ответ, не стыдно? 😃

Бадаюсь с коптером 2.0: убрал нафиг адаптеры алюминиевые на винт и прямо присобачил винты на вал, через термоусадку, подстраховал стяжками, ну как было на первой версии, ВИБРАЦИЯ ЗАМЕТНО СНИЗИЛАСЬ, наконецто я узнал свой коптер, свои моторы, свои винты. Если у вас коптер подкалбашивает (треммор на лучах, но висит вроде бы) однозначно проблема вибрации на аппарате! Теперь впереди софт триммирование акселя, оставайтсь на связи 😃

SovGVD
Covax:

на счет к верх ногами

фигня какая то, когда датчиком вверх ставлю - значения сами собой понемногу убавляются, а когда датчиком вниз - стоят на месте
видимо проще в коде поменять местами всё, чем в реальности =)
UPD: собстно припаял вот так:

YAN=
Covax:

присобачил винты на вал, через термоусадку, подстраховал стяжками,

А можно по подробнее (в картинках). У самого адаптеры кривые.

SovGVD:

когда датчиком вверх ставлю - значения сами собой понемногу убавляются, а когда датчиком вниз - стоят на месте

Так он, по паспорту, должен быть в верх ногами.

Covax
YAN=:

А можно по подробнее (в картинках). У самого адаптеры кривые.

Если вал с резьбой, то повторить легко.
Стяжки отлично играют роль пропсейверов, так как гайка не сильно затянута, чтобы не вытянуть вал из мотора. При ударе винта о стену, он останавливается, вал крутится, стяжка рвется.

rdol

ардуино и прочий хлам где то заплутали, а поделать что нибудь уж очень хотелось

решил таки провести стендовые испытания ITG-3205, чтобы потом уже не грешить на него. Перерезал на WMP все лишние дорожки прицепил гиру напрямую к контроллеру. Ардуинины нет, так что цеплял к ARM-ой оценочной плате (проц STM32F100Rb), ну что в данном случае практически неважно

параметры инициализации гиры взял ровно такие как в 1.7 и схему подключения тоже родную (без согласователей уровней только. этот проц прерасно работает от 3В)
померял что же он там выдает без внешних воздействий

а выдает она очень даже неплохо - значения пляшут всего навсего в пределах ±2-3 единицы (и это на полной 16 битной шкале)
изменение температуры на 20С (приставил вплотную к плате настольную лампу) уводит значения где то на 40-60 единиц (по разным каналам по разному)
встроеный датчик температуры ведет себя тоже адекватно, так что вполне реально без лишних деталей сделать практически “неуплывающую” гиру (на основе таблицы поправок для всего диапазона полетных температур)

чувствительность очень хорошая - легкий щелчок по столу - значения на выходе изменяются примерно на сотню
попробую еще написать какую нито хрень для оценки всего в динамике (ну какую нито идиотскую программу типа угломера)

предваительные выводы - гира вполне себе нормальная и нечего на нее балоны катить 😃 проблемы в прошивке вия, подключении и и.т.д.

никто не в курсе кстати почему в мультивии не используют прерывания по готовности результатов измерений от гиры?
С прерываниями

  1. не нужно будет никаких извращений с подсчетом времени между измерениями (прерывния будут сыпаться строго с частотой которую зададим гире),
  2. нет риска потерять результаты если в основном цикле не успели считать (выполняли, например, какой нито расчет ужасный)
  3. нет риска считать один байт от первого измерения, один от следующего - там внутри 16 битные регистры, а считывание идет побайтно. Cоответственно возможно считать 1 байт, регистры в этот момент обновятся и следующий байт будет от нового измерения.

насчет (3) до конца не уверен что проблема есть (даташит кроме как настойчивой рекомендации использовать прерывания остальное умалчивает). Eдинственное что обнаржил на блок схеме потрохов некую очередб FIFO для регистров данных - возможно она исключает данную ситуацию (хз в общем)

Covax
rdol:

никто не в курсе кстати почему в мультивии не используют прерывания по готовности результатов измерений от гиры? С прерываниями 1. не нужно будет никаких извращений с подсчетом времени между измерениями (прерывния будут сыпаться строго с частотой которую зададим гире), 2. нет риска потерять результаты если в основном цикле не успели считать (выполняли, например, какой нито расчет ужасный) 3. нет риска считать один байт от первого измерения, один от следующего - там внутри 16 битные регистры, а считывание идет побайтно. соответственно возможно считать 1 байт, регистры в этот момент обновятся и следующий байт будет от нового измерения.

Роман, вообще к прошивкам multiwii у многих накопилось и позитивного и негативного 😃 Алекса можно понять, он занимается какойто своей доводкой, тем более у него свои коптеры, свои сенсоры, короче он не может охватить все и вся. Если вы, мы, всем миром сможем улучшить прошивку, то от этого мы только выйграем 😃

Volver
Covax:

Стяжки отлично играют роль пропсейверов, так как гайка не сильно затянута, чтобы не вытянуть вал из мотора. При ударе винта о стену, он останавливается, вал крутится, стяжка рвется.

а может лучше без стяжки, т.к. они вносят дисбаланс. Просто снизу такую же гайку, винд и сверху гаяка (если резьбы хватает.

Covax

Нет, не лучше, они практически ничего не весят и не вносят никакого дисбаланса. Это проверенная схема пользователей таких движков (DT700, DT750), я тут ничего нового не придумал.

Алил, спасибо огромное за софт трим, это нечно.
Коптер если не висит как вкопанный, то реально мегастабилен. Видео через час 😃

Для тек кто пропустил тему фот трима аскеля в прошивках 1.7:
1. Останавливаем моторы (газ в минимум, руддер влево до упора),
2. газ в максимум (это вы вошли в режим софт трима) и
3. a) если у вас коптер смешался в стабмоде влево, вы дергаете один-два раз стик РОЛЛа вправо, и наоборот
3. b) если у вас коптер смешался назад, вы дергаете один-два раза стик ПИТЧа вперед.
4. Газ в минимум, запускаем моторы, смотрел как летает. Если надо повторяем процедуру с пункта 1.

Musgravehill
rdol:

ITG-3205

Отпилил от ВМП, получилось так:

LLC не использую. На ВМА020 подтяжки по 10 кОм, на 3205 - по 1.9 кОм. Итого 1.5 кОм. Все отлично работает от 3v3. Только я не понял, почему при малом сопротивлении подтягивающих резисторов “сгорят датчики”? Я думаю, сгорит выход Ардуины.

По поводу прерываний- уже несколько раз встречал проблемы у людей и ошибки в даташитах. Что-то насчет “0 или 1” на CS, INT, SDO, точно не помню. И с адресацией косяки какие-то вылазили на ВМА180.

rdol
Musgravehill:

почему при малом сопротивлении подтягивающих резисторов “сгорят датчики”

А где про это писали?

При 1,5кОм ничего не сгорит. это чуть больше 2mA при логическом нуле на выходе хоть ардуинины, хоть гиры при питании от 3.3в. для ITG-3205 типовое для ножек SDA и SCL - 3mA. Для атмелов хз скока - лень смотреть - но точно не меньше.
В принципе от совсем мелких резюков сгореть может хоть контроллер, хоть датчики. I2C двунаправленная и “прижать” линию к нулю имеет право любое устройство на шине.
Номиналы резисторов подбираются чтобы не было заваленных фронтов у импульсов на шине. В 0 то их “прижимают” устройства, а в 1 они возвращаются сами. Чем меньше номинал, тем быстрее вернутся.

Musgravehill
rdol:

где про это писали

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 канала “туда” и “обратно”.

SovGVD

Более полный вариант как я подключил 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 =)

Covax

Какой у нас бурный процесс покорения мультивия идет, скажите парни? Аж приятно 😃
Комсомольская стройка 😃

Musgravehill
Covax:

Комсомольская стройка

Догнать и перегнать! =)

Слово “wii” скоро только в названии проекта останется.

SovGVD
Covax:

бурный процесс покорения мультивия идет,

еще бы это скомпановать, чтоб отделить конечные результаты от кучи обсуждения