Проект "Трикоптер" — различия между версиями
Строка 38: | Строка 38: | ||
Программирование осуществлялось на языке/диалекте Wiring-C++ в среде Arduino. | Программирование осуществлялось на языке/диалекте Wiring-C++ в среде Arduino. | ||
Первым делом надо было просто заставить коптер полететь, поэтому алгоритмы обработки датчиков и управления предельно простые. | Первым делом надо было просто заставить коптер полететь, поэтому алгоритмы обработки датчиков и управления предельно простые. | ||
− | ===вычисление угловой скорости=== | + | |
+ | === вычисление угловой скорости === | ||
+ | |||
В этом проекте использованы три гироскопа MLX90609 , они имеют аналоговые выходы для данных о угловой скорости и встроенный температурный датчик для устранения дрифта. | В этом проекте использованы три гироскопа MLX90609 , они имеют аналоговые выходы для данных о угловой скорости и встроенный температурный датчик для устранения дрифта. | ||
Микроконтроллер получает от гироскопа значения в диапазоне 0-1024, затем с учетом чувствительности 300 градусов в секунду производит расчет угловой скорости. Кроме того вычитается байес - значение которое показывает сенсор при отсутствии вращения. Таким образом окончательная формула выглядит так: | Микроконтроллер получает от гироскопа значения в диапазоне 0-1024, затем с учетом чувствительности 300 градусов в секунду производит расчет угловой скорости. Кроме того вычитается байес - значение которое показывает сенсор при отсутствии вращения. Таким образом окончательная формула выглядит так: | ||
Строка 58: | Строка 60: | ||
Использование оверсэмплинга, тоесть многократного повторного чтения входа, позволяет увеличить разрешение на бит. | Использование оверсэмплинга, тоесть многократного повторного чтения входа, позволяет увеличить разрешение на бит. | ||
− | ===задание угловой скорости=== | + | === задание угловой скорости === |
На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления. | На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления. | ||
+ | [[Файл:futaba.JPG|400px]] | ||
+ | |||
+ | === ПИД-регулятор === | ||
+ | |||
+ | В каноническом виде уравнение ПИД-регулятора выглядит так: | ||
+ | |||
+ | : <math>u(t) = P + I + D = K_p\,{e(t)} + K_i\int\limits_{0}^{t}{e(\tau)}\,{d\tau} + K_d\frac{de}{dt}</math> | ||
+ | Программная реализация. Входом регулятора служит разность желаемой и текущей угловых скоростей. | ||
+ | error = RCToDeg(RC[i+1]) - omega[i]; | ||
+ | Ipart+= error*Dt; | ||
+ | Ipart= constrain(Ipart,-20,20); | ||
+ | Dpart = (omega - oldomega)/float(Dt); | ||
+ | oldomega =omega; | ||
+ | axisPID = Pgain*error + Dgain*Dpart + Igain*Ipart; | ||
+ | |||
Версия 00:28, 13 сентября 2011
Проект, осуществляемый Клубом технического творчества при поддержке кафедры "Теоретическая Механика".
Содержание
Участники
Трикоптер v1.0
Оборудование
- Платформа сборки: Arduino
- Гироскопы: Melexis MLX90609 типа MEMS, 300 deg/sec
- Радиолинк: Spektrum DSM2 FHSS-технология. Аппаратура все время меняет частоту передачи, обеспечивая надежную связь в радиусе до 1км.
- Серво поворотного механизма: Hitec HS-81MG , с металлическим редуктором.
- Аккумулятор: Li-Po 2.2Ah 25C 11.1V
- Двигатели: 200Вт 1000kv бесколлекторные
Рама
Самое начало проекта, установлен только один мотор.
Поворотный механизм.
Полностью собранный коптер установлен на стенд для настройки ПИД коэффициентов.
Структурная схема
Программирование
Программирование осуществлялось на языке/диалекте Wiring-C++ в среде Arduino. Первым делом надо было просто заставить коптер полететь, поэтому алгоритмы обработки датчиков и управления предельно простые.
вычисление угловой скорости
В этом проекте использованы три гироскопа MLX90609 , они имеют аналоговые выходы для данных о угловой скорости и встроенный температурный датчик для устранения дрифта. Микроконтроллер получает от гироскопа значения в диапазоне 0-1024, затем с учетом чувствительности 300 градусов в секунду производит расчет угловой скорости. Кроме того вычитается байес - значение которое показывает сенсор при отсутствии вращения. Таким образом окончательная формула выглядит так:
for( int i=0; i<3; i++) { float tmp=0; for(int j=0;j<10;j++) { tmp+=analogRead(pin[i]);// oversampling } tmp/=10.0; omega[i]=(tmp-bias[i])*gain[i]; }
Использование оверсэмплинга, тоесть многократного повторного чтения входа, позволяет увеличить разрешение на бит.
задание угловой скорости
На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления.
ПИД-регулятор
В каноническом виде уравнение ПИД-регулятора выглядит так:
Программная реализация. Входом регулятора служит разность желаемой и текущей угловых скоростей.
error = RCToDeg(RC[i+1]) - omega[i]; Ipart+= error*Dt; Ipart= constrain(Ipart,-20,20); Dpart = (omega - oldomega)/float(Dt); oldomega =omega; axisPID = Pgain*error + Dgain*Dpart + Igain*Ipart;
трикоптер v1.1
После отладки алгоритма и тестовых полетов, рама коптера пришла в полную негодность, появились трещины и люфты. Для продолжения работы понадобился новый трикоптер. Версия 1.1 почти в два раза больше первой, лучи подросли до 30см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней.
Рама собрана, начинается разводка проводов.
Почти вся электроника на своих местах
Коптер - первые минуты на ногах.
Результаты
- Данный проект был представлен на международной конференции школьников Сахаровские Чтения 2011, где удостоился специального диплома "за успешное продвижение в работе над перспективной темой".
- 15 Июня 2011г. трикоптер, совершил свой первый полет
Планы
В дальнейшем планируется создать адаптивный (самонастраивающийся) PID-регулятор.