ESP32 LoRa vezérelt drónmotor: 10 lépés
ESP32 LoRa vezérelt drónmotor: 10 lépés
Anonim
Image
Image
Demonstráció
Demonstráció

Ma drónmotorokról beszélünk, amelyeket gyakran „kefe nélküli” motoroknak neveznek. Erősségük és nagy forgásuk miatt széles körben használják az aeromodellezésben, főként drónokban. Megtanuljuk az ecset nélküli motor vezérlését ESC és ESP32 használatával, analóg működtetést az ESC -n a belső LED_PWM vezérlő használatával, és egy potenciométer segítségével a motor fordulatszámát.

1. lépés: Demonstráció

2. lépés: Felhasznált erőforrások

Felhasznált források
Felhasznált források
  • Jumperek a csatlakoztatáshoz
  • Wifi LoRa 32
  • ESC-30A
  • Kefe nélküli A2212 / 13t motor
  • USB kábel
  • Potenciométer a vezérléshez
  • Protoboard
  • Tápegység

3. lépés: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

4. lépés: ESC (elektronikus sebességszabályozó)

ESC (elektronikus sebességszabályozó)
ESC (elektronikus sebességszabályozó)
ESC (elektronikus sebességszabályozó)
ESC (elektronikus sebességszabályozó)
  • Elektronikus sebességszabályozó
  • Elektronikus áramkör az elektromos motor fordulatszámának szabályozására.
  • Szabványos, 50 Hz -es PWM szervo vezérlővel vezérelhető.
  • Változtatja a térhatású tranzisztorok (FET) hálózatának kapcsolási sebességét. A tranzisztorok kapcsolási frekvenciájának beállításával a motor fordulatszáma megváltozik. A motor fordulatszáma úgy változik, hogy a mellékelt áramimpulzusok időzítését a motor különböző tekercseihez igazítja.
  • Specifikációk:

Kimeneti áram: 30A folyamatos, 40A 10 másodpercig

5. lépés: ESC elektronikus sebességszabályozó (ESC)

ESC elektronikus sebességszabályozó (ESC)
ESC elektronikus sebességszabályozó (ESC)

6. lépés: PWM szervomotor vezérlés

PWM szervomotor vezérlés
PWM szervomotor vezérlés

Létrehozunk egy PWM szervót, amely az ESC adatbevitelre hat, úgy, hogy a GPIO13 LED_PWM 0. csatornáját irányítjuk, és egy potenciométert használunk a moduláció vezérlésére.

A rögzítéshez 10k potenciométert fogunk használni feszültségosztóként. A rögzítés az ADC2_5 csatornán történik, amelyet a GPIO12 elérhet.

7. lépés: Analóg rögzítés

Analóg rögzítés
Analóg rögzítés
Analóg rögzítés
Analóg rögzítés

Analóg -digitális átalakítás

Átalakítjuk az AD értékeit PWM -re.

A szervó PWM értéke 50 Hz, tehát az impulzus periódusa 1/50 = 0,02 másodperc vagy 20 milliszekundum.

Legalább 1–2 milliszekundum alatt kell cselekednünk.

Amikor a PWM 4095, akkor az impulzus szélessége 20 milliszekundum, vagyis el kell érnünk a maximumot a 4095/10 értéknél, hogy elérjük a 2 milliszekundumot, tehát a PWM -nek 410 *-ot kell kapnia.

És legalább 1 ezredmásodperc, tehát 409/2 (vagy 4095/20) után a PWM -nek 205 *-ot kell kapnia.

* Az értékeknek egész számoknak kell lenniük

8. lépés: Áramkör - csatlakozások

Áramkör - Csatlakozások
Áramkör - Csatlakozások

9. lépés: Forráskód

Fejléc

#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 kijelző (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"

Változók

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 potcia = 0; int leitura = 0; int ciclo_A = 0;

Beállí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); }

Hurok

void loop () {leitura = analógRead (Leitura_A); ciclo_A = térkép (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potencia = térkép (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer display display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, karakterlánc (leitura)); display.drawString (0, 18, karakterlánc ("PWM:")); display.drawString (48, 18, Karakterlánc (ciclo_A)); display.drawString (0, 36, karakterlánc ("Potência:")); display.drawString (72, 36, String (potencicia)); display.drawString (98, 36, String ("%")); display.display (); // mostra no display}

10. lépés: Fájlok

Töltse le a fájlokat

ÉN NEM

PDF

Ajánlott: