Создание собственной системы стабилизации
Эта микруха всего лишь детектирует синхро сигнал в видеопотоке (начало каждой линии)
Уже забыл, сколькотам строк? 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”
Это классика, следствие из теоремы Котельникова.
Вполне справедливо, нужно чтобы отсчёты не “пролетели” мимо обработки.
Это классика, следствие из теоремы Котельникова. Вполне справедливо, нужно чтобы отсчёты не “пролетели” мимо обработки.
Как теорему Котельникова применить к обработке Аналогово сигнала я знаю.
Sample Rate тут по всей видимости никаким боком (Это частота на которой обновляются регистры с выходными данными). Потому что гира на самом деле оцифровывается с частотой 1KHz или 8KHz (для MPU6000). Если я правильно понимаю, LPF отсеивает вибрации ниже определенной частоты. Вопрос только в том, какие частоты в виде помех обычно бывают на коптере. Отсюда видимо и надо плясать при выборе LPF (и возможно HPF).
Надо попробовать написать тулзу, для вывода графика FFT и подбора значений фильтра по нему. Причем при работающих моторах…