Проект "Трикоптер" — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
Строка 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 бесколлекторные


Рама

Самое начало проекта, установлен только один мотор.

Cptr1.JPG

Поворотный механизм.

Cptr3.JPG

Полностью собранный коптер установлен на стенд для настройки ПИД коэффициентов.

Cptr2 1749.JPG

Cptr4.JPG


Структурная схема

3copter scheme.jpg

Программирование

Программирование осуществлялось на языке/диалекте 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]; 
}


Использование оверсэмплинга, тоесть многократного повторного чтения входа, позволяет увеличить разрешение на бит.

задание угловой скорости

На данном этапе, управление аппаратом организовано посредством задания угловой скорости вокруг каждой оси с пульта управления. Данные о положении джойстиков кодируются и передаются на приемник, находящийся на коптере. Микроконтроллер получает информацию с приемника и приводит ее к формату удобному для вычисления.

Futaba.JPG

ПИД-регулятор

В каноническом виде уравнение ПИД-регулятора выглядит так:

[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; 
   


трикоптер v1.1

После отладки алгоритма и тестовых полетов, рама коптера пришла в полную негодность, появились трещины и люфты. Для продолжения работы понадобился новый трикоптер. Версия 1.1 почти в два раза больше первой, лучи подросли до 30см, увеличилась и площадка под электронику .Новые шасси должны хорошо аммортизировать жесткие посадки и обеспечивать более стабильный взлет. Электроника осталась прежней.

Рама собрана, начинается разводка проводов.

Wiring.JPG

Почти вся электроника на своих местах

Wiring1.JPG

Коптер - первые минуты на ногах.

Copter.JPG


Результаты

  1. Данный проект был представлен на международной конференции школьников Сахаровские Чтения 2011, где удостоился специального диплома "за успешное продвижение в работе над перспективной темой".
  2. 15 Июня 2011г. трикоптер, совершил свой первый полет

Планы

В дальнейшем планируется создать адаптивный (самонастраивающийся) PID-регулятор.