ESP32 LoRa -beheerde hommeltuigmotor: 10 stappe
ESP32 LoRa -beheerde hommeltuigmotor: 10 stappe
Anonim
Image
Image
Demonstrasie
Demonstrasie

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

Hulpbronne gebruik
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

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

Stap 4: ESC (elektroniese snelheidsbeheer)

ESC (elektroniese spoedbeheer)
ESC (elektroniese spoedbeheer)
ESC (elektroniese spoedbeheer)
ESC (elektroniese spoedbeheer)
  • 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)

ESC elektroniese spoedbeheer (ESC)
ESC elektroniese spoedbeheer (ESC)

Stap 6: PWM servomotorbeheer

PWM servomotorbeheer
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 vaslê
Analoog vaslê
Analoog vaslê
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

Kring - verbindings
Kring - 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

PDF