Kazalo:
- 1. korak: demonstracija
- 2. korak: Uporabljeni viri
- 3. korak: Wi-Fi LoRa 32- Pinout
- 4. korak: ESC (elektronski nadzor hitrosti)
- 5. korak: ESC elektronski nadzor hitrosti (ESC)
- Korak 6: Krmiljenje servo motorja PWM
- 7. korak: Analogni zajem
- 8. korak: Vezje - Povezave
- 9. korak: izvorna koda
- 10. korak: Datoteke
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
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
- 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
4. korak: 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)
Korak 6: 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
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
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