Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Dnes diskutujeme o dronových motoroch, často nazývaných „bezkartáčové“motory. Vďaka svojej sile a vysokej rotácii sa široko používajú v leteckom modelingu, hlavne v dronoch. Naučíme sa ovládať bezuhlíkový motor pomocou ESC a ESP32, vykonávať analogické ovládanie na ESC pomocou interného ovládača LED_PWM a pomocou potenciometra meniť otáčky motora.
Krok 1: Ukážka
Krok 2: Použité zdroje
- Spojky pre pripojenie
- Wifi LoRa 32
- ESC-30A
- Bezkartáčový motor A2212 / 13t
- USB kábel
- Potenciometer na ovládanie
- Protoboard
- Zdroj
Krok 3: Wifi LoRa 32- vývod
Krok 4: ESC (elektronické ovládanie rýchlosti)
- Elektronický regulátor otáčok
- Elektronický obvod na ovládanie otáčok elektromotora.
- Ovládané zo štandardného 50Hz PWM servopohonu.
- Mení rýchlosť prepínania siete tranzistorov s efektom poľa (FET). Nastavením frekvencie spínania tranzistorov sa zmenia otáčky motora. Otáčky motora sa menia nastavením časovania dodávaných prúdových impulzov na rôzne vinutia motora.
- Technické údaje:
Výstupný prúd: 30A nepretržite, 40A po dobu 10 sekúnd
Krok 5: Elektronická regulácia rýchlosti ESC (ESC)
Krok 6: Ovládanie servomotora PWM
Vytvoríme servo PWM, ktoré bude pôsobiť na vstup údajov ESC, nasmerovaním kanála 0 LED_PWM pre GPIO13 a na ovládanie modulácie použijeme potenciometer.
Na zachytenie použijeme ako delič napätia potenciometer 10k. Zachytenie sa vykoná na kanáli ADC2_5, prístupnom z GPIO12.
Krok 7: Analógové snímanie
Analógovo -digitálna konverzia
Hodnoty AD prevedieme na PWM.
PWM serva je 50 Hz, takže doba impulzu je 1/50 = 0,02 sekundy alebo 20 milisekúnd.
Musíme konať najmenej 1 milisekundu až 2 milisekundy.
Keď je PWM na 4095, šírka impulzu je 20 milisekúnd, čo znamená, že by sme mali dosiahnuť maximum pri 4095/10, aby sme dosiahli 2 milisekundy, takže PWM by malo dostať 410 *.
A najmenej po 1 milisekunde, teda 409/2 (alebo 4095/20), by mal PWM dostať 205 *.
* Hodnoty musia byť celé čísla
Krok 8: Okruh - pripojenia
Krok 9: Zdrojový kód
Hlavička
#include // Potrebné doplnky pre Arduino 1.6.5 a novšie #zahrnúť „SSD1306.h“// o mesmo que #include „SSD1306Wire.h“// OLED_SDA -GPIO4 // OLED_SCL -GPIO15 // OLED_RST - Displej GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"
Premenné
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;
Nastaviť
neplatné nastavenie () {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 (); // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte pre Arial 16 display.setFont (ArialMT_Plain_16); }
Slučka
prázdna slučka () {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 alebo buffer do display display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, String (leitura)); display.drawString (0, 18, reťazec ("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, reťazec ("%")); display.display (); // väčšinou žiadny displej}
Krok 10: Súbory
Stiahnite si súbory
INO