ESP32 LoRa басқарылатын ұшқышсыз қозғалтқыш: 10 қадам
ESP32 LoRa басқарылатын ұшқышсыз қозғалтқыш: 10 қадам
Anonim
Image
Image
Демонстрация
Демонстрация

Бүгін біз жиі «щеткасыз» қозғалтқыштар деп аталатын дрон қозғалтқыштарын талқылаймыз. Олар аэромоделингте кеңінен қолданылады, негізінен дрондарда, олардың күші мен жоғары айналуына байланысты. Біз щеткасыз қозғалтқышты ESC және ESP32 көмегімен басқару, ішкі LED_PWM контроллері арқылы ESC -те аналогтық іске қосу және қозғалтқыш жылдамдығын өзгерту үшін потенциометрді қолдану туралы білетін боламыз.

1 -қадам: демонстрация

2 -қадам: Қолданылған ресурстар

Қолданылған ресурстар
Қолданылған ресурстар
  • Қосылу үшін секіргіштер
  • Wifi LoRa 32
  • ESC-30A
  • Қылқаламсыз A2212 / 13t қозғалтқышы
  • USB кабелі
  • Бақылауға арналған потенциометр
  • Protoboard
  • Нәр беруші

3-қадам: Wifi LoRa 32- түйреу

Wifi LoRa 32- түйреу
Wifi LoRa 32- түйреу

4 -қадам: ESC (электронды жылдамдықты басқару)

ESC (электронды жылдамдықты басқару)
ESC (электронды жылдамдықты басқару)
ESC (электронды жылдамдықты басқару)
ESC (электронды жылдамдықты басқару)
  • Электрондық жылдамдықты реттегіш
  • Электр қозғалтқышының жылдамдығын басқаруға арналған электронды схема.
  • 50 Гц PWM стандартты серво басқаруынан басқарылады.
  • Ол өрістік транзисторлар желісінің коммутация жылдамдығын өзгертеді. Транзисторлардың ауысу жиілігін реттеу арқылы қозғалтқыш жылдамдығы өзгереді. Қозғалтқыштың айналу жиілігі қозғалтқыштың әр түрлі орамдарына берілетін ток импульсінің уақытын реттеу арқылы өзгереді.
  • Ерекшеліктер:

Шығу тогы: 30А үздіксіз, 40А 10 секунд

5 -қадам: ESC электронды жылдамдықты басқару (ESC)

ESC электронды жылдамдықты басқару (ESC)
ESC электронды жылдамдықты басқару (ESC)

6 -қадам: PWM сервистік қозғалтқышты басқару

PWM сервоқозғалтқышты басқару
PWM сервоқозғалтқышты басқару

Біз GPIO13 үшін LED_PWM 0 арнасын бағыттау арқылы ESC деректерін енгізу бойынша әрекет ететін PWM сервоын жасаймыз және модуляцияны басқару үшін потенциометрді қолданамыз.

Түсіру үшін біз кернеу бөлгіш ретінде 10 к потенциометрді қолданамыз. Түсіру GPIO12 қол жетімді ADC2_5 арнасында орындалады.

7 -қадам: Аналогты түсіру

Аналогтық түсіру
Аналогтық түсіру
Аналогтық түсіру
Аналогтық түсіру

Аналогты -цифрлық түрлендіру

Біз AD мәндерін PWM -ге түрлендіреміз.

Серво PWM - 50 Гц, сондықтан импульс кезеңі 1/50 = 0,02 секунд немесе 20 миллисекунд.

Біз кем дегенде 1 миллисекундтан 2 миллисекундқа дейін әрекет етуіміз керек.

PWM 4095 болғанда, импульстің ені 20 миллисекунд, яғни біз 2 миллисекундқа жету үшін 4095/10 максимумға жетуіміз керек, сондықтан PWM 410 *алуы керек.

Кем дегенде 1 миллисекундтан кейін, демек 409/2 (немесе 4095/20), PWM 205 *алуы керек.

* Мәндер бүтін сандар болуы керек

8 -қадам: Схема - Қосылымдар

Схема - Қосылымдар
Схема - Қосылымдар

9 -қадам: бастапқы код

Тақырып

#include // Arduino 1.6.5 e posterior #қажет «SSD1306.h» // o mesmo que #include «SSD1306Wire.h» // OLED_SDA -GPIO4 // OLED_SCL -GPIO15 // OLED_RST - GPIO16 #SDA 4 анықтау #SCL 15 анықтау #RST 16 SSD1306 дисплейін анықтау (0x3c, SDA, SCL, RST); // «дисплейде» жұмыс істеу керек

Айнымалылар

const int freq = 50; const int channel_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potencia = 0; int leitura = 0; int ciclo_A = 0;

Орнату

void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (channel_A, жиілік, ажыратымдылық); ledcAttachPin (pin_Atuacao_A, арна_А); ledcWrite (channel_A, ciclo_A); display.init (); display.flipScreenVertically (); // Тікелей дисплейде көрсету.clear (); // эксклюзивті дисплей.setTextAlignment (TEXT_ALIGN_LEFT); // Arial 16 display.setFont (ArialMT_Plain_16) үшін қаріптер; }

Цикл

void loop () {leitura = analogRead (Leitura_A); ciclo_A = карта (лейтура, 0, 4095, 205, 410); ledcWrite (channel_A, ciclo_A); потенция = карта (лейтура, 0, 4095, 0, 100); display.clear (); // limpa o buffer do display.drawString (0, 0, String («AD:»)) көрсету; display.drawString (32, 0, String (leitura)); display.drawString (0, 18, String («PWM:»)); display.drawString (48, 18, String (ciclo_A)); display.drawString (0, 36, String («Potência:»)); display.drawString (72, 36, String (potencia)); display.drawString (98, 36, Жол («%»))); display.display (); // mostra дисплейі жоқ}

10 -қадам: файлдар

Файлдарды жүктеңіз

МЕН ЖОҚ

PDF

Ұсынылған: