Inhaltsverzeichnis:

ESP32 LoRa-gesteuerter Drohnenmotor - Gunook
ESP32 LoRa-gesteuerter Drohnenmotor - Gunook

Video: ESP32 LoRa-gesteuerter Drohnenmotor - Gunook

Video: ESP32 LoRa-gesteuerter Drohnenmotor - Gunook
Video: ESP32, более мощная чем любая другая Ардуино 2024, November
Anonim
Image
Image
Demonstration
Demonstration

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

Verwendete Ressourcen
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

Wifi LoRa 32 - Pinbelegung
Wifi LoRa 32 - Pinbelegung

Schritt 4: ESC (Elektronische Geschwindigkeitsregelung)

ESC (Elektronische Geschwindigkeitsregelung)
ESC (Elektronische Geschwindigkeitsregelung)
ESC (Elektronische Geschwindigkeitsregelung)
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

ESC Elektronische Geschwindigkeitsregelung (ESC)
ESC Elektronische Geschwindigkeitsregelung (ESC)

Schritt 6: PWM-Servomotorsteuerung

PWM-Servomotorsteuerung
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

Analoge Aufnahme
Analoge Aufnahme
Analoge Aufnahme
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

Schaltung - Anschlüsse
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

PDF

Empfohlen: