ESP32 LoRa krmiljeni brezpilotni motor: 10 korakov
ESP32 LoRa krmiljeni brezpilotni motor: 10 korakov
Anonim
Image
Image
Demonstracija
Demonstracija

Danes razpravljamo o brezpilotnih motorjih, ki jih pogosto imenujemo "brezkrtačni". Zaradi svoje moči in velike rotacije se pogosto uporabljajo v letalskem modelarstvu, predvsem pri brezpilotnih letalih. Spoznali bomo krmiljenje brezkrtačnega motorja z ESC in ESP32, izvajanje analognega aktiviranja ESC z notranjim krmilnikom LED_PWM in uporabo potenciometra za spreminjanje hitrosti motorja.

1. korak: demonstracija

2. korak: Uporabljeni viri

Uporabljeni viri
Uporabljeni viri
  • Skakači za povezavo
  • Wi -Fi LoRa 32
  • ESC-30A
  • Brezkrtačni motor A2212 / 13t
  • USB kabel
  • Potenciometer za nadzor
  • Protoboard
  • Napajanje

3. korak: Wi-Fi LoRa 32- Pinout

Wi-Fi LoRa 32- Pinout
Wi-Fi LoRa 32- Pinout

4. korak: ESC (elektronski nadzor hitrosti)

ESC (elektronski nadzor hitrosti)
ESC (elektronski nadzor hitrosti)
ESC (elektronski nadzor hitrosti)
ESC (elektronski nadzor hitrosti)
  • Elektronski krmilnik hitrosti
  • Elektronsko vezje za nadzor hitrosti elektromotorja.
  • Upravlja se s standardnim servo krmiljenjem 50 Hz PWM.
  • Spreminja stopnjo preklopa omrežja tranzistorjev z efektom polja (FET). S prilagoditvijo preklopne frekvence tranzistorjev se spremeni hitrost motorja. Hitrost motorja se spreminja s prilagajanjem časa dobavljenih tokovnih impulzov različnim navitjem motorja.
  • Specifikacije:

Izhodni tok: 30A neprekinjeno, 40A za 10 sekund

5. korak: ESC elektronski nadzor hitrosti (ESC)

ESC elektronski nadzor hitrosti (ESC)
ESC elektronski nadzor hitrosti (ESC)

Korak 6: Krmiljenje servo motorja PWM

Krmiljenje servo motorja PWM
Krmiljenje servo motorja PWM

Ustvarili bomo PWM servo za delovanje na vnos podatkov ESC tako, da usmerimo kanal 0 LED_PWM za GPIO13 in uporabimo potenciometer za nadzor modulacije.

Za zajem bomo kot delilnik napetosti uporabili potenciometer 10k. Zajem bo izveden na kanalu ADC2_5, dostopen prek GPIO12.

7. korak: Analogni zajem

Analogni zajem
Analogni zajem
Analogni zajem
Analogni zajem

Analogno v digitalno pretvorbo

Vrednosti AD bomo pretvorili v PWM.

PWM servo je 50Hz, zato je obdobje impulza 1/50 = 0,02 sekunde ali 20 milisekund.

Ukrepati moramo v najmanj 1 milisekundi do 2 milisekundah.

Ko je PWM pri 4095, je širina impulza 20 milisekund, kar pomeni, da bi morali doseči največjo vrednost pri 4095/10, da bi dosegli 2 milisekundi, zato naj bi PWM prejel 410 *.

In po vsaj 1 milisekundi, torej 409/2 (ali 4095/20), mora PWM prejeti 205 *.

* Vrednosti morajo biti cela števila

8. korak: Vezje - Povezave

Vezje - Povezave
Vezje - Povezave

9. korak: izvorna koda

Glava

#include // Potrebni apeni za Arduino 1.6.5 e posterior #vključujejo "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 display (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"

Spremenljivke

const int freq = 50; const int kanal_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;

Nastaviti

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

Zanka

void loop () {leitura = analogRead (Leitura_A); ciclo_A = zemljevid (leitura, 0, 4095, 205, 410); ledcWrite (kanal_A, ciclo_A); potencia = zemljevid (leitura, 0, 4095, 0, 100); display.clear (); // limpa ali vmesnik za prikaz display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, String (leitura)); display.drawString (0, 18, String ("PWM:")); display.drawString (48, 18, niz (ciclo_A)); display.drawString (0, 36, String ("Potência:")); display.drawString (72, 36, String (potencia)); display.drawString (98, 36, String ("%")); display.display (); // mostra brez prikaza}

10. korak: Datoteke

Prenesite datoteke

JAZ NE

PDF