Inhaltsverzeichnis:
- Schritt 1: Demonstration
- Schritt 2: Verwendete Ressourcen
- Schritt 3: Wifi LoRa 32- Pinbelegung
- Schritt 4: ESC (Elektronische Geschwindigkeitsregelung)
- Schritt 5: Elektronische Geschwindigkeitsregelung (ESC) ESC
- Schritt 6: PWM-Servomotorsteuerung
- Schritt 7: Analoge Aufnahme
- Schritt 8: Schaltung - Anschlüsse
- Schritt 9: Quellcode
- Schritt 10: Dateien
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
Heute diskutieren wir über Drohnenmotoren, die häufig als „bürstenlose“Motoren bezeichnet werden. Aufgrund ihrer Leistung und hohen Rotation werden sie häufig im Flugmodellbau verwendet, hauptsächlich in Drohnen. Wir lernen, einen bürstenlosen Motor mit ESC und ESP32 zu steuern, eine analoge Betätigung des ESC mit dem internen LED_PWM-Controller durchzuführen und ein Potentiometer zum Ändern der Motordrehzahl zu verwenden.
Schritt 1: Demonstration
Schritt 2: Verwendete Ressourcen
- Jumper zum Anschluss
- WLAN LoRa 32
- ESC-30A
- Bürstenloser A2212 / 13t Motor
- USB-Kabel
- Potentiometer zur Steuerung
- Protoboard
- Energieversorgung
Schritt 3: Wifi LoRa 32- Pinbelegung
Schritt 4: ESC (Elektronische Geschwindigkeitsregelung)
- Elektronischer Geschwindigkeitsregler
- Elektronische Schaltung zur Steuerung der Drehzahl eines Elektromotors.
- Gesteuert von einer standardmäßigen 50Hz PWM-Servosteuerung.
- Es variiert die Schaltrate eines Netzwerks von Feldeffekttransistoren (FETs). Durch Einstellen der Schaltfrequenz der Transistoren wird die Motordrehzahl verändert. Die Motordrehzahl wird variiert, indem das Timing der zugeführten Stromimpulse an die verschiedenen Wicklungen des Motors angepasst wird.
- Spezifikationen:
Ausgangsstrom: 30A kontinuierlich, 40A für 10 Sekunden
Schritt 5: Elektronische Geschwindigkeitsregelung (ESC) ESC
Schritt 6: PWM-Servomotorsteuerung
Wir werden ein PWM-Servo erstellen, um auf die ESC-Dateneingabe zu reagieren, indem wir Kanal 0 des LED_PWM für den GPIO13 leiten und ein Potentiometer verwenden, um die Modulation zu steuern.
Für die Erfassung verwenden wir ein Potentiometer von 10k als Spannungsteiler. Die Erfassung erfolgt auf Kanal ADC2_5, auf den über GPIO12 zugegriffen werden kann.
Schritt 7: Analoge Aufnahme
Analog-Digital-Wandlung
Wir konvertieren die Werte von AD in PWM.
Die PWM des Servos beträgt 50Hz, also beträgt die Pulsperiode 1/50 = 0,02 Sekunden oder 20 Millisekunden.
Wir müssen in mindestens 1 Millisekunde bis 2 Millisekunden handeln.
Wenn die PWM bei 4095 liegt, beträgt die Pulsbreite 20 Millisekunden, was bedeutet, dass wir das Maximum bei 4095/10 erreichen sollten, um 2 Millisekunden zu erreichen, also sollte PWM 410 * erhalten.
Und nach mindestens 1 Millisekunde, also 409/2 (bzw. 4095/20), sollte die PWM 205* erhalten.
* Werte müssen ganze Zahlen sein
Schritt 8: Schaltung - Anschlüsse
Schritt 9: Quellcode
Header
#include // Notwendig für Arduino 1.6.5 und posterior#include "SSD1306.h" // oder mesmo que #include "SSD1306Wire.h" //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 Anzeige (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "display"
Variablen
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-Potenzial = 0; int leitura = 0; int ciclo_A = 0;
Aufstellen
Void setup () {pinMode (pin_Atuacao_A, AUSGANG); ledcSetup (Kanal_A, Freq, Auflösung); ledcAttachPin(pin_Atuacao_A, Kanal_A); ledcWrite(Kanal_A, ciclo_A); display.init(); display.flipScreenVertically(); //Vira a tela verticalmente display.clear(); // ajusta oder alinhamento para a esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }
Schleife
Void Schleife () {Leitura = analogRead (Leitura_A); ciclo_A = map(leitura, 0, 4095, 205, 410); ledcWrite(Kanal_A, ciclo_A); potencia = map(leitura, 0, 4095, 0, 100); display.clear(); //limpa o Buffer do 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("%")); display.display(); //mostra keine Anzeige}
Schritt 10: Dateien
Laden Sie die Dateien herunter
INO