Создание собственной системы стабилизации

SergDoc

Бяда, приличные значит дорогие и для них внутреннего АЦП маловато 😦 vis.asta использует, а для меня, например, это недостижимо дорого…

rual
SergDoc:

на выходных попробую вывести прерывание с акселя - посмотрю что выйдет… хотя смотрю у тебя на lsm тоже вектор некисло скачет даже в спокойном состоянии… а может её переделать совсем? а то уже страшная…

Я хороших акселей пока не пользовал, были бы доступны демки МПУ6000 SPI можно было бы попробовать. Еще говорят у МПУ есть режим трансляции компаса из собственной и2ц во внутренние регистры - был бы отличный вариант совсем без и2ц.

oleg70:

Интересно, а есть ли приличные аналоговые датчики (гиры,аксели,магнитометры) ? Было б красиво - АЦП внутри STMа, и ничего не надо передавать с тормозами… “поэзия”…

Программно всё вообще отлично получается - все данные ПДП разложит в ОЗУ с максимально возможной скоростью.

SergDoc:

Бяда, приличные значит дорогие и для них внутреннего АЦП маловато vis.asta использует, а для меня, например, это недостижимо дорого…

12 бит АЦП должно хватить,надо спросить у Виктора крайний набор его датчиков, думаю не сильно дороже СПИайного МПУ.

SergDoc

у YS-X4 тоже внешний АЦП и у AutoQuad и Мультипилота есть два ИМУ различных на аналоговых датчиках, на всем известных IDG и ISZ и на дорогиж гирах и у всех внешний АЦП…

Sir_Alex
rual:

Еще говорят у МПУ есть режим трансляции компаса из собственной и2ц во внутренние регистры - был бы отличный вариант совсем без и2ц.

Есть в исходниках multiwii, можно подсмотреть, правда там и сам MPU работает через I2C…

SergDoc

Ковыряюсь в AeroQuad32 никак не могу понять, AeroQuad - ардуино, но 32 не могу разобраться, поддерживаемые платы f1 f4 DiscoveryF4 и FF - та которую Таймкоп в назе32 первой версии превратил, код довольно аккуратный, но блин под что? попробовать в само собранную среду на eclipse запихнуть ?

oleg70
rual:

все данные ПДП разложит в ОЗУ

Кстати… (сейчас подошел к датчикам) стоит ли мне связываться с ПДП ? По моему должно быстрее работать, т.к. отвлекать проц. совсем не придется (но опыта НЕТ и поэтому сомневаюсь… грабли, какие ?).
Т.е. прерывание от гиро " толкает" ПДП ? или SPI ?
Как выстроить алгоритм по Вашему?

Razek
SergDoc:

Ковыряюсь в AeroQuad32 никак не могу понять, AeroQuad - ардуино

Она кросплатформенная правда это кросплатформенность на дно их тянет

SergDoc
Razek:

Она кросплатформенная

ага, надо ардуино 1 и выше, maple ide в пролёте, а потом спрашивает - а где ваши STM?, а где бутлоадер в проце? а есть там только на ф103, ну и т.д. буду ковырять дальше…

Razek

Либы там маполвские переписанные под F407. Все идет в дистре исходников. Компилер CodeSourcery ARM EABI (2011.09-69) новый криво компилирует, бутлоадер, да смотря чем заливать прошивки собираешься, могу скинуть оригинальный бутлоадер. Да кстати все что не 407 и не ардуино 100% поддержки нет.

SergDoc

надо всё-таки под eclipse (ide с поддержкой мапловских библиотек) перетянуть - будет счастье…

Razek

Гробага будет скорей всего, надо эклипс настроить на CodeSourcery компилер

rual
oleg70:

Т.е. прерывание от гиро " толкает" ПДП ? или SPI ? Как выстроить алгоритм по Вашему?

Уменя так: готовность ДУС-вн.прерывание-запуск ПДП-прерывание окнчания ПДП-расчет ДУС

Razek:

правда это кросплатформенность на дно их тянет

Ну эт смотря как писать, ну и не скрешивать бульдога с носорогом (АВР и АРМ). У меня, допустим, достаточно 2 файла заменить для перехода между СТМами, и 3й файл если менять датчики.

Alexsis1109

Подскажите, кто знает наверняка, в Atmega128 есть таймер с функцией захвата? Я смотрел в pdf, там есть много функций и есть что-то подобное на захват. Но оно ли это?

oleg70
Alexsis1109:

и есть что-то подобное на захват

Захват у таймеров 1 и 3 , вход называется “input capture”

Razek
rual:

Ну эт смотря как писать, ну и не скрешивать бульдога с носорогом

Да как не пиши, а все равно написать код который будет работать и на АВР и на АРМ требует большего времени чем просто на что-то одно да и за универсальность всегда приходится платить или функционалом или производительностью.

SergDoc

короче да не получилось, ну что ж буду сам собирать проект… когдато ж надо начинать учится 😃

RaJa
SergDoc:

а по поводу с чего всё начиналось: один человек мне пообещал опупенный алгоритм, а как только я начал делать что-то, утёк в кусты, вот и мучаюсь 😃

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

Alexsis1109
oleg70:

Захват у таймеров 1 и 3 , вход называется “input capture”

спасибо. т.е. их два. а для считываня шимов с каналов достаточно только одного таймера? его просто по событиям переключать, сначало из 0 в 1 , потом из 1 в 0?

Sir_Alex
Alexsis1109:

а для считываня шимов с каналов достаточно только одного таймера? его просто по событиям переключать, сначало из 0 в 1 , потом из 1 в 0?

Я уже писал вам, одного ICP(Input Capture Pin) хватит для обработки PPM(CPPM) сигнала. Для этого достаточно ловить только Rising Edge (из 0 в 1). Если вам надо каждый канал по отдельности обрабатывать, то разумеется вам надо столько ICP пинов, сколько у вас каналов и в этом случае надо его переключать из 0 в 1 и 1 в 0.

oleg70
Alexsis1109:

спасибо. т.е. их два.

Если Вы хотите сделать “систему стабилизации для моделей” то аппаратных ресурсов чтения ШИМ Вам не хватит (на таймерах AVR по захвату),
я Вам выше постом изложил приблизительный алгоритм чтения по прерыванию на “ноге” где счетчик используется в обычном режиме измерения длительности, его надо по положительному фронту импульса запустить и по отрицательному фронту остановить…

rual:

Уменя так: готовность ДУС-вн.прерывание-запуск ПДП-прерывание окнчания ПДП-расчет ДУС …

В Вашем проекте нашел функции по ДЕинициализации петли ДУСа, каково их применение ?
И еще, я так понял, что для чтения акселя и магнетометра ПДП не применяется (?).

Alexsis1109
Sir_Alex:

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

вот на примере приемника Futaba 7C, по идее выход - РРМ сигнал, но опрашивать же нужно каждый канал в отдельности?