Satura rādītājs:

ESP32 LoRa kontrolēts bezpilota lidaparāta dzinējs: 10 soļi
ESP32 LoRa kontrolēts bezpilota lidaparāta dzinējs: 10 soļi

Video: ESP32 LoRa kontrolēts bezpilota lidaparāta dzinējs: 10 soļi

Video: ESP32 LoRa kontrolēts bezpilota lidaparāta dzinējs: 10 soļi
Video: Программирование модуля датчика температуры и влажности ESP8266 ESP01 DHT11 | удаленныйXY | ФЛПрог 2024, Jūlijs
Anonim
Image
Image
Demonstrācija
Demonstrācija

Šodien mēs apspriežam bezpilota lidaparātu dzinējus, kurus bieži sauc par “bezsuku motoriem”. To jaudas un lielās rotācijas dēļ tos plaši izmanto aerodinamikā, galvenokārt dronos. Mēs iemācīsimies kontrolēt bezsuku motoru, izmantojot ESC un ESP32, veikt analogo ESC iedarbināšanu, izmantojot iekšējo LED_PWM kontrolieri, un izmantot potenciometru, lai mainītu motora ātrumu.

1. solis: demonstrācija

2. darbība. Izmantotie resursi

Izmantotie resursi
Izmantotie resursi
  • Džemperi savienošanai
  • Wi -Fi LoRa 32
  • ESC-30A
  • Dzinējs bez sukām A2212 / 13t
  • USB kabelis
  • Potenciometrs kontrolei
  • Protoboard
  • Enerģijas padeve

3. solis: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

4. solis: ESC (elektroniskā ātruma kontrole)

ESC (elektroniskā ātruma kontrole)
ESC (elektroniskā ātruma kontrole)
ESC (elektroniskā ātruma kontrole)
ESC (elektroniskā ātruma kontrole)
  • Elektroniskais ātruma regulators
  • Elektroniskā shēma, lai kontrolētu elektromotora ātrumu.
  • Vadāms no standarta 50Hz PWM servo vadības.
  • Tas maina lauka efektu tranzistoru (FET) tīkla pārslēgšanās ātrumu. Pielāgojot tranzistoru pārslēgšanās frekvenci, tiek mainīts motora apgriezienu skaits. Motora ātrumu var mainīt, pielāgojot piegādāto strāvas impulsu laiku dažādiem motora tinumiem.
  • Specifikācijas:

Izejas strāva: 30A nepārtraukta, 40A 10 sekundes

5. darbība: ESC elektroniskā ātruma kontrole (ESC)

ESC elektroniskā ātruma kontrole (ESC)
ESC elektroniskā ātruma kontrole (ESC)

6. darbība: PWM servomotoru vadība

PWM servomotoru vadība
PWM servomotoru vadība

Mēs izveidosim PWM servo, lai darbotos ar ESC datu ievadi, novirzot GPIO13 LED_PWM 0. kanālu, un izmantosim potenciometru, lai kontrolētu modulāciju.

Uzņemšanai mēs izmantosim 10k potenciometru kā sprieguma dalītāju. Uzņemšana tiks veikta kanālā ADC2_5, kuram var piekļūt GPIO12.

7. darbība: analoga tveršana

Analog Capture
Analog Capture
Analog Capture
Analog Capture

Analoga pārveidošana uz digitālo

Mēs konvertēsim AD vērtības uz PWM.

Servo PWM ir 50 Hz, tāpēc impulsa periods ir 1/50 = 0,02 sekundes vai 20 milisekundes.

Mums jārīkojas vismaz 1–2 milisekundēs.

Kad PWM ir 4095, impulsa platums ir 20 milisekundes, kas nozīmē, ka mums vajadzētu sasniegt maksimumu pie 4095/10, lai sasniegtu 2 milisekundes, tāpēc PWM vajadzētu saņemt 410 *.

Un pēc vismaz 1 milisekundes, tātad 409/2 (vai 4095/20), PWM vajadzētu saņemt 205 *.

* Vērtībām jābūt veseliem skaitļiem

8. solis: ķēde - savienojumi

Ķēde - savienojumi
Ķēde - savienojumi

9. darbība. Avota kods

Galvene

#include // Nepieciešamais aprd para vai Arduino 1.6.5 e posterior #include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // OLED_SDA -GPIO4 // OLED_SCL -GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 displejs (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"

Mainīgie

const int freq = 50; const int kanāls_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potcia = 0; int leitura = 0; int ciclo_A = 0;

Uzstādīt

void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (canal_A, freq, resolucao); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }

Cilpa

void loop () {leitura = analogRead (Leitura_A); ciclo_A = karte (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potencicia = karte (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer do display display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, String (leitura)); display.drawString (0, 18, virkne ("PWM:")); display.drawString (48, 18, String (ciclo_A)); display.drawString (0, 36, virkne ("Potência:")); display.drawString (72, 36, String (potence)); display.drawString (98, 36, String ("%")); display.display (); // mostra no display}

10. darbība: faili

Lejupielādējiet failus

ES NĒ

PDF

Ieteicams: