Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Dnes diskutujeme o dronových motorech, často nazývaných „bezkartáčové“motory. Díky své síle a vysoké rotaci jsou široce používány v leteckém modelování, hlavně v dronech. Naučíme se ovládat bezkartáčový motor pomocí ESC a ESP32, provádět analogové ovládání na ESC pomocí interního ovladače LED_PWM a pomocí potenciometru měnit otáčky motoru.
Krok 1: Ukázka
Krok 2: Použité zdroje
- Propojky pro připojení
- Wifi LoRa 32
- ESC-30A
- Bezkartáčový motor A2212 / 13t
- USB kabel
- Potenciometr pro ovládání
- Protoboard
- Zdroj napájení
Krok 3: Wifi LoRa 32- Pinout
Krok 4: ESC (elektronické ovládání rychlosti)
- Elektronický regulátor otáček
- Elektronický obvod pro řízení otáček elektromotoru.
- Ovládáno ze standardního 50Hz PWM servo ovládání.
- Mění rychlost přepínání sítě tranzistorů s efektem pole (FET). Nastavením spínací frekvence tranzistorů se změní rychlost motoru. Rychlost motoru se mění nastavením časování dodávaných proudových impulzů podle různých vinutí motoru.
- Specifikace:
Výstupní proud: 30A nepřetržitě, 40A po dobu 10 sekund
Krok 5: Elektronická regulace rychlosti ESC (ESC)
Krok 6: Řízení servomotoru PWM
Vytvoříme PWM servo, které bude působit na vstup dat ESC směrováním kanálu 0 LED_PWM pro GPIO13, a pomocí potenciometru budeme řídit modulaci.
Pro zachycení použijeme potenciometr 10k jako dělič napětí. Zachycení bude provedeno na kanálu ADC2_5, přístupném pomocí GPIO12.
Krok 7: Analogové snímání
Analogově digitální převod
Převedeme hodnoty AD na PWM.
PWM serva je 50 Hz, takže doba pulsu je 1/50 = 0,02 sekundy nebo 20 milisekund.
Musíme jednat alespoň za 1 milisekundu až 2 milisekundy.
Když je PWM na 4095, šířka pulsu je 20 milisekund, což znamená, že bychom měli dosáhnout maxima na 4095/10, abychom dosáhli 2 milisekundy, takže PWM by mělo dostat 410 *.
A po nejméně 1 milisekundě, tedy 409/2 (nebo 4095/20), by PWM měl dostat 205 *.
* Hodnoty musí být celá čísla
Krok 8: Okruh - připojení
Krok 9: Zdrojový kód
Záhlaví
#include // Necessário apenas para o 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 displej (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"
Proměnné
const int freq = 50; const int canal_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;
Založit
neplatné nastavení () {pinMode (pin_Atuacao_A, VÝSTUP); 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 (); // iusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // iusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }
Smyčka
void loop () {leitura = analogRead (Leitura_A); ciclo_A = mapa (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potencia = mapa (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, 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, řetězec ("%")); display.display (); // mostra žádný displej}
Krok 10: Soubory
Stáhněte si soubory
INO