INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
Ons bespreek vandag drone -enjins, wat gereeld 'borsellose' motors genoem word. Hulle word wyd gebruik in vliegtuigmodellering, hoofsaaklik in drones, vanweë hul krag en hoë rotasie. Ons leer hoe u 'n borsellose motor met ESC en ESP32 kan bestuur, 'n analoge werking op die ESC kan uitvoer met behulp van die interne LED_PWM -kontroleerder en die gebruik van 'n potensiometer om die motorsnelheid te verander.
Stap 1: Demonstrasie
Stap 2: Hulpbronne gebruik
- Springers vir verbinding
- Wifi LoRa 32
- ESC-30A
- Borsellose A2212 / 13t -enjin
- USB kabel
- Potensiometer vir beheer
- Protobord
- Kragtoevoer
Stap 3: Wifi LoRa 32- Pinout
Stap 4: ESC (elektroniese snelheidsbeheer)
- Elektroniese snelheidsbeheerder
- Elektroniese stroombaan om die spoed van 'n elektriese motor te beheer.
- Beheer vanuit 'n standaard 50Hz PWM servobesturing.
- Dit wissel die omskakelingstempo van 'n netwerk van veldeffek -transistors (VOO's). Deur die skakelfrekwensie van die transistors aan te pas, word die motorsnelheid verander. Die motorsnelheid word gevarieer deur die tydsberekening van die verskafde stroompulse aan te pas by die verskillende windings van die motor.
- Spesifikasies:
Uitsetstroom: 30A deurlopend, 40A vir 10 sekondes
Stap 5: ESC elektroniese snelheidsbeheer (ESC)
Stap 6: PWM servomotorbeheer
Ons sal 'n PWM -servo skep om in te voer op ESC -data -invoer deur kanaal 0 van die LED_PWM vir die GPIO13 te stuur, en 'n potensiometer te gebruik om die modulasie te beheer.
Vir die opname gebruik ons 'n potensiometer van 10k as 'n spanningsverdeler. Die opname vind plaas op kanaal ADC2_5, toeganklik deur GPIO12.
Stap 7: Analoog vaslê
Analoog na digitale omskakeling
Ons sal die waardes van AD omskakel na die PWM.
Die PWM van die servo is 50Hz, dus is die polsperiode 1/50 = 0,02 sekondes of 20 millisekondes.
Ons moet ten minste 1 millisekonde tot 2 millisekondes optree.
As die PWM op 4095 is, is die polswydte 20 millisekondes, wat beteken dat ons die maksimum by 4095/10 moet bereik om 2 millisekondes te bereik, dus PWM behoort 410 *te ontvang.
En na minstens 1 millisekonde, dus 409/2 (of 4095/20), behoort die PWM 205 *te ontvang.
* Waardes moet heelgetalle wees
Stap 8: stroombaan - verbindings
Stap 9: Bronkode
Koptekst
#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 -skerm (0x3c, SDA, SCL, RST); // Instansies en aanpassings vir 'n "vertoning"
Veranderlikes
const int freq = 50; const int kanaal_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potensiaal = 0; int leitura = 0; int ciclo_A = 0;
Stel op
ongeldige opstelling () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (kanaal_A, frekwensie, resolusie); ledcAttachPin (pin_Atuacao_A, kanaal_A); ledcWrite (kanaal_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); }
Lus
leemte -lus () {leitura = analogRead (Leitura_A); ciclo_A = kaart (leitura, 0, 4095, 205, 410); ledcWrite (kanaal_A, ciclo_A); potencia = kaart (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer wys 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, string ("%")); vertoon.display (); // mostra no display}
Stap 10: lêers
Laai die lêers af
EK NEE