Sisukord:
- 1. samm: demonstratsioon
- 2. samm: kasutatud ressursid
- 3. samm: Wifi LoRa 32- Pinout
- 4. samm: ESC (elektrooniline kiiruse reguleerimine)
- Samm: ESC elektrooniline kiiruse reguleerimine (ESC)
- 6. samm: PWM servomootori juhtimine
- Samm 7: analooghõive
- 8. samm: ahel - ühendused
- 9. samm: lähtekood
- 10. samm: failid
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Täna arutame droonimootoreid, mida sageli nimetatakse harjadeta mootoriteks. Tänu võimsusele ja suurele pöörlemisele kasutatakse neid laialdaselt lennunduses, peamiselt droonides. Õpime harjadeta mootori juhtimist ESC ja ESP32 abil, ESC analoogkäivitust sisemise LED_PWM kontrolleri abil ja potentsiomeetri kasutamist mootori pöörlemiskiiruse muutmiseks.
1. samm: demonstratsioon
2. samm: kasutatud ressursid
- Ühendamiseks džemprid
- WiFi LoRa 32
- ESC-30A
- Harjadeta A2212 / 13t mootor
- USB kaabel
- Potentsiomeeter juhtimiseks
- Protoboard
- Toiteallikas
3. samm: Wifi LoRa 32- Pinout
4. samm: ESC (elektrooniline kiiruse reguleerimine)
- Elektrooniline kiiruse regulaator
- Elektrooniline ahel elektrimootori kiiruse reguleerimiseks.
- Juhitav standardse 50Hz PWM servojuhtimispuldi abil.
- See muudab välitransistoride (FET) võrgu lülituskiirust. Transistoride lülitussageduse reguleerimisega muudetakse mootori pöörlemiskiirust. Mootori pöörlemiskiirust saab muuta, reguleerides kaasasolevate vooluimpulsside ajastust vastavalt mootori erinevatele mähistele.
- Spetsifikatsioonid:
Väljundvool: 30A pidev, 40A 10 sekundit
Samm: ESC elektrooniline kiiruse reguleerimine (ESC)
6. samm: PWM servomootori juhtimine
Loome PWM servo, mis toimib ESC andmete sisestamise jaoks, suunates GPIO13 LED_PWM kanali 0, ja kasutame modulatsiooni juhtimiseks potentsiomeetrit.
Pildistamiseks kasutame pingejagurina 10k potentsiomeetrit. Jäädvustamine toimub kanalil ADC2_5, millele pääseb juurde GPIO12.
Samm 7: analooghõive
Analoog -digitaalne muundamine
Teisendame AD väärtused PWM -iks.
Servo PWM on 50 Hz, seega on impulsi periood 1/50 = 0,02 sekundit või 20 millisekundit.
Peame tegutsema vähemalt 1–2 millisekundi jooksul.
Kui PWM on 4095, on impulsi laius 20 millisekundit, mis tähendab, et peaksime saavutama maksimumi 4095/10, et jõuda 2 millisekundini, seega peaks PWM saama 410 *.
Ja vähemalt 1 millisekundi pärast, seega 409/2 (või 4095/20), peaks PWM saama 205 *.
* Väärtused peavad olema täisarvud
8. samm: ahel - ühendused
9. samm: lähtekood
Päis
#include // Arduino 1.6.5 ja tagumine #on vajalikud "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 ekraan (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"
Muutujad
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 potentsia = 0; int leitura = 0; int ciclo_A = 0;
Seadistamine
void setup () {pinMode (pin_Atuacao_A, VÄLJUND); 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 või alinhamento esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }
Loop
void loop () {leitura = analogRead (Leitura_A); ciclo_A = kaart (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potentsia = kaart (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer 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 (potentsia)); display.drawString (98, 36, string ("%")); display.display (); // Mostra no display}
10. samm: failid
Laadige failid alla
INO