Автоматический привод шаcси, для квадрокоптеров на подобие WLtoys Q333A и DJI Inspire, на базе Arduino NANO

Всем привет!

Один из подписчиков имеет квадрокоптер с подвижным шасси, которое поднимается и опускается по нажатию кнопки на пульте. Он обратился ко мне за помощью, сделать так чтобы шасси самостоятельно поднималось и опускалось, при достижении определенной высоты, на пример полтора метра.

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

Автоматический привод шасси для квадрокоптеров

Для сборки понадобится:

Плата Arduino NANO, ультразвуковой датчик расстояния HC-SR04, 2 концевика, соединительные провода, макетная плата и сервомотор на 360 градусов.

Так как у меня не оказалось сервомотора на 360 градусов, то сервомотор Tenstar Robot SG90 180 градусов, пришлось переделать на 360 градусов. Я снял видео, о том как это сделать, и в ближайшее время постараюсь его опубликовать.

Список материалов для сборки автоматического подъема и опускания шасси

Сначала необходимо загрузить скетч, в котором есть только одна настройка.

Это переменная sm, которая хранит в себе высоту в сантиметрах. В данный момент стоит значение 10, я его таким и оставлю, а вы укажите свою высоту.

Так как для ультразвукового датчика расстояния HC-SR04 максимум составляет 400 сантиметров, то оптимально указать до 380. Слишком маленькую высоту указывать тоже не рекомендую, чтобы у шасси был запас времени для раскрытия при посадке.


//Начало скетча


  1. #include "Servo.h"
  2. Servo myservo;
  3. #define trigPin 13
  4. #define echoPin 12
  5. int sm = 10; //расстояние в сантиметрах, для срабатывания шасси (максимум 380 см)
  6. void setup() {
  7. Serial.begin (9600);myservo.attach(9);
  8. pinMode(trigPin, OUTPUT);pinMode(echoPin, INPUT);
  9. }
  10. void loop() {
  11. long duration, distance;
  12. digitalWrite(trigPin, LOW);delayMicroseconds(5);
  13. digitalWrite(trigPin, HIGH);delayMicroseconds(10);
  14. digitalWrite(trigPin, LOW);
  15. duration = pulseIn(echoPin, HIGH);
  16. distance = (duration/2) / 29.1;// Результат в сантиметрах в переменной distance
  17. Serial.println(distance);
  18. int button6 = digitalRead(6);
  19. int button7 = digitalRead(7);
  20. if ((distance > sm)&&(button7 == HIGH)){ myservo.write(0);} //отправка шасси в низ
  21. if ((distance < sm)&&(button6 == HIGH)){ myservo.write(180);} //отправка шасси в верх
  22. if (((distance > sm)&&(button6 == HIGH))||((distance < sm)&&(button7 == HIGH)))
  23. { myservo.write(90);} //остановка шасси
  24. }

//Конец скетча


После загрузки скетча припаяйте провода к концевикам, согласно этой схемы.

Схема для подключения концевых переключателей

Затем соберите все согласно одной из трех схем, которая вам подходит.

Если вы используете сервомотор, который работает от 5 вольт и потребляет до 500 миллиампер, то питание для него можно взять с платы Arduino NANO, как показано на этой схеме.

Схема для управления автоматическим подъемом и опусканием шасси квадрокоптера

Если вы используете другой сервомотор, который потребляет более 500 миллиампер, то его линии питания следует подключать через отдельный понижающий преобразователь. На пример Mini 360 который имеет регулировку напряжения от 4.75 до 23 вольт, и выдерживает ток до 1.8 Ампера.

Схема для управления автоматическим подъемом и опусканием шасси квадрокоптера

Если напряжение питания сервомотора, совпадает с напряжением используемой батареи, то его можно подключить на прямую к батарее.

Схема для управления автоматическим подъемом и опусканием шасси квадрокоптера

И если все верно, то подключаем питание и проверяем работоспособность шасси, для начала простым поднятием, на высоту выше той которую вы указали в переменной sm. При этом ультразвуковой датчик должен быть направлен вниз, для измерения расстояния до поверхности места посадки.

Видео версия статьи

“Автоматический привод шасси, для квадрокоптеров на подобие WLtoys Q333A и DJI Inspire, на базе Arduino NANO”

Автоматический привод для шасси квадрокоптера