Создание собственной системы стабилизации
А какие причины были?
+2 выхода, легче развести плату, ну и вместо неё можно что-нибудь другое повесить…
Эта микруха всего лишь детектирует синхро сигнал в видеопотоке (начало каждой линии)
Уже забыл, сколькотам строк? 200-300? ну 500, ерунда все это. У меня с такой частотой гира обсчитывается.
выкладывайте новый гуй!
пжалста, хоть эта и не гуй) просто индикатор.
Ну и ещё исходники ИНС. Правда там вроде как косяк ещё остался в функциях millis() и micros(), иногда затыкается вывод в терминал,но сути это не меняет
Да как угодно, но его можно легко назвать гуем без обратной связи с пользователем 😃
А сорсы под какую среду? Coocox гад не саппортит ф3, а только ф4…
Серега, так когда мы будем у тебя уже плату покупать? ))
либо если она опен сорс, то создай проект под GPL или как там принято…
пока всё в руинах 😃 github.com/SergDoc/Nev_MultirotorControl , я же писал выше - доделаю выложу полный пакет 😃
Кеил
вот нашел… можно под eclipse настроить …blogspot.ro/…/stm32f3-discovery-eclipse-openocd.h…
А сорсы под какую среду? Coocox гад не саппортит ф3, а только ф4…
кейл 4,60, размер кода войдёт в бесплатныю версию. Файл проекта там же, только поправить нужно размещение библиотек, )) ну и скачать их с оф.сайта.
Кста, Александр, покажи скрины с идикатора, хочу посмотреть какой вектор кажет магнитометр.
вот нашел… можно под eclipse настроить www.engineering-diy.blogspot....e-openocd.html
Да и ещё на СТшном сайте есть дока по настройке среды под кейл, эклипс и пр., Квик Стартед вроде…
зы: приложил расписание выводов для своего проекта под Ф3.
СПИ1-дус;и2ц1-аксель и маг;ТИМ2/3-ппм;ТИМ1/4-шим; УСАРТ1-терминал/телеметрия; СПИ2/И2Ц2/УСАРТ2/3-пока свободны.
Я чёт тут подумал, для тех кто в теме - если вместо надписи “Логотип?” невзначай впихнуть M25P16 (там SPI разъём рядом и места хватает) что получится? Правильно порт Рево, ну почти, входы выходы не совпадают (их больше и другие таймеры) ну и естественно I2C и SPI другие. Но как говорится “Она конечно не Венера, но что-то венерическое в ней есть” (С) 😃 Думаю впихну на всякий случай - ну вот, показал картинку - переделать захотелось 😃 а ещё там не видно - под магнитометром EEprom-ка стоит, так что девайс становится довольно универсальным - можно много чего портировать 😃
Да, Вопрос - в какую религию обращать? MultiWii пробовал, CC - тоже летал… конечно субъективное мнение, но Wii понравился больше: код более понятен (ну не программер я) и танцев с бубном и I2C не было, но ведь кругом ещё столько опенсорсных вариантов…
В общем на обеде флешка влезла 😃
Вечером наконец-то начну верхнюю плату 😃
Вот и моя Ф3 полетела:
Ролик короткий для удобства выкладывания в тубу. Вариант ПО ещё очень сырой и не полный, портирован только только лётный алгоритм и ИНС, по мере переноса менял структуру кода, посему есть нестыковчки в процессах подготки к пуску (почему-то прерывается калибровка ДУС). Вобщем работы ещё много, но хотелось похвастаться:) Как только допилю старт и терминал с сохранением настроек выложу хекс.
Александр, покажи скрины с идикатора, хочу посмотреть какой вектор кажет магнитометр.
на вых-х сделаю… а то вчера дрюкался со стабилизацией предсказателя высоты… таки стабилизировал его гада! 😃
Да, Вопрос - в какую религию обращать? MultiWii пробовал, CC - тоже летал… конечно субъективное мнение, но Wii понравился больше: код более понятен (ну не программер я) и танцев с бубном и I2C не было, но ведь кругом ещё столько опенсорсных вариантов…
посмотри mwc-ng от ziss_dm у него там правильная архитектура заложена… кросплатформенность avr/arm, tasks management with fixed time loop наскока помню…
code.google.com/p/mwc-ng/
Всё сошлось - можно плату изготавливать
Красиво. Какой софт портировать будешь? Когда ждать первый полет?
Барометр с гудлака оказался паяный (до этого времени не распаковывал)
Интересно, он не в заводской упаковке? Мож предпродажная проверка?
Наверно Мультипилот - он в VET6 влезет, на барометре пластик родной но был заклеен скотчем - перевернул - следы флюса и припой на лапах, если с какой дефектной платы сняли - куда ни шло, а если бракованный сам - плохо…
Как вам такой датчик давления www.st.com/internet/analog/product/251601.jsp
В наших краях можно купить за $3.75
Как вам такой датчик давления www.st.com/internet/analog/product/251601.jsp В наших краях можно купить за $3.75
Хотел прикупить такую платку, но так руки и не дошли;(
Кста, Александр, покажи скрины с идикатора, хочу посмотреть какой вектор кажет магнитометр.
отлично компас отрабатывает! никуда не скачет при наклонах… и это без калибровки? точненькА юг север запад восток показывает!
я так понимаю у тебя автокалибровка компаса сделана? т.к. на команду “c” по идее только гира и аксель калибруется…
только один баг странный, иногда гуй подвисает на 1-3 сек, потом оклемается и дальше пашет…
Ты получается ближе меня к “магнитному пупу” Земли, судя по вектору )))
отлично компас отрабатывает! никуда не скачет при наклонах… и это без калибровки?
Да, это без калибровки. Особо не вижу в этом смысла, по кругу расхождение в максимумах единицы градусов.
я так понимаю у тебя автокалибровка компаса сделана? т.к. на команду “c” по идее только гира и аксель калибруется…
нет, автокалибровки нет. Пробовал делать, но мне не понравилась, т.к. случайные выбросы смещают центры и масштаб осей. Клибровку компаса надо делать в услових близким к идельным, но как писал выше смысла не вижу… По команде “с” делается клибровка ДУС в части постоянных дрейфа осей, калибровка акселя тут не правильная (это не страшно если оси пропорциональны и отцентрованы), выполняется только замер средней магнитуды вектора G. Нужна была для экспериментов с измерением акселем линейных перемещений.
только один баг странный, иногда гуй подвисает на 1-3 сек, потом оклемается и дальше пашет…
Проблема в функциях millis() и micros(), надо заменить их на это hw_config.c
__IO uint16_t Sys_time_ms;
__IO uint8_t SysTime_256;
uint16_t millis(void)
{
Sys_time_ms = (((uint32_t)~SysTick->VAL>>16)&0x0ff)|((uint16_t)SysTime_256)<<8;
return Sys_time_ms;
}
hw_config.h
#define SysTick_Reload (uint32_t)0x00ffffff
#define micros() ((uint16_t)~SysTick->VAL>>3)
extern __IO uint16_t Sys_time_ms;
extern __IO uint8_t SysTime_256;
uint16_t millis(void);
stm32f30x_it.c
void SysTick_Handler(void)
{
if (inLoop){
/* àâàðèéíûé çàïðîñ ÄÓÑà */
if (GPIO_ReadInputDataBit(L3GD20_SPI_INT2_GPIO_PORT,L3GD20_SPI_INT2_PIN)==Bit_SET)
if(EXTI_GetITStatus(L3GD20_SPI_INT2_EXTI_LINE)==RESET)
if (cntDUSRdy--==0){
cntDUSRdy=5;
DUS_Zapros();
}
/* àâàðèéíûé çàïðîñ àêñåëÿ */
if (GPIO_ReadInputDataBit(LSM303DLHC_I2C_INT1_GPIO_PORT,LSM303DLHC_I2C_INT1_PIN)==Bit_SET)
if(EXTI_GetITStatus(LSM303DLHC_I2C_INT1_EXTI_LINE)==RESET)
if (cntAccRdy--==0){
cntAccRdy=20;
Acc_Zapros();
}
}
/* ñèñòåìíîå âðåìÿ */
SysTime_256 ++;
Sys_time_ms = (((uint32_t)~SysTick->VAL>>16)&0xff)|((uint16_t)SysTime_256)<<8;
}
Кто нибудь знает, какие есть критерии при выборе частоты LPF фильтра гиры и акселя?
Я пока только одно упоминание увидел более-менее вразумительное, в исходниках ArduCopter’a: “Частота LPF выбирается в два раза меньше SAMPLE Rate”
“Частота LPF выбирается в два раза меньше SAMPLE Rate”
Это классика, следствие из теоремы Котельникова.
Вполне справедливо, нужно чтобы отсчёты не “пролетели” мимо обработки.