Проект "Трикоптер" — различия между версиями
Строка 99: | Строка 99: | ||
[[Файл:copter.JPG|400px]] | [[Файл:copter.JPG|400px]] | ||
+ | |||
+ | Облетал v1.1 - [http://www.youtube.com/watch?v=bNR5G9Fad5g видео] | ||
+ | |||
+ | [[Файл:DSC05675.JPG|400px]] | ||
Версия 16:14, 18 сентября 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см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней.
Рама собрана, начинается разводка проводов.
Почти вся электроника на своих местах
Коптер - первые минуты на ногах.
Облетал v1.1 - видео
Результаты
- Данный проект был представлен на международной конференции школьников Сахаровские Чтения 2011, где удостоился специального диплома "за успешное продвижение в работе над перспективной темой".
- 15 Июня 2011г. трикоптер, совершил свой первый полет
Планы
В дальнейшем планируется создать адаптивный (самонастраивающийся) PID-регулятор.