Indholdsfortegnelse:

ESP32 LoRa -kontrolleret dronemotor: 10 trin
ESP32 LoRa -kontrolleret dronemotor: 10 trin

Video: ESP32 LoRa -kontrolleret dronemotor: 10 trin

Video: ESP32 LoRa -kontrolleret dronemotor: 10 trin
Video: Two way LoRa mobile transmitters 2024, November
Anonim
Image
Image
Demonstration
Demonstration

I dag diskuterer vi dronemotorer, ofte kaldet "børsteløse" motorer. De er meget udbredt til aeromodellering, hovedsageligt i droner, på grund af deres kraft og høje rotation. Vi lærer om styring af en børsteløs motor ved hjælp af ESC og ESP32, udførelse af en analog aktivering på ESC ved hjælp af den interne LED_PWM -controller og brug af et potentiometer til at ændre motorhastigheden.

Trin 1: Demonstration

Trin 2: Brugte ressourcer

Ressourcer brugt
Ressourcer brugt
  • Jumpere til tilslutning
  • Wifi LoRa 32
  • ESC-30A
  • Børsteløs A2212 / 13t motor
  • USB -kabel
  • Potentiometer til styring
  • Protoboard
  • Strømforsyning

Trin 3: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

Trin 4: ESC (elektronisk hastighedskontrol)

ESC (elektronisk hastighedsregulering)
ESC (elektronisk hastighedsregulering)
ESC (elektronisk hastighedsregulering)
ESC (elektronisk hastighedsregulering)
  • Elektronisk hastighedsregulator
  • Elektronisk kredsløb til styring af en elmotors hastighed.
  • Styres fra en standard 50Hz PWM servostyring.
  • Det varierer koblingshastigheden for et netværk af felteffekttransistorer (FET'er). Ved at justere transistorernes koblingsfrekvens ændres motorhastigheden. Motorhastigheden varieres ved at justere timingen af de leverede strømimpulser til motorens forskellige viklinger.
  • Specifikationer:

Udgangsstrøm: 30A kontinuerlig, 40A i 10 sekunder

Trin 5: ESC Electronic Speed Control (ESC)

ESC Electronic Speed Control (ESC)
ESC Electronic Speed Control (ESC)

Trin 6: PWM servomotorstyring

PWM servomotorstyring
PWM servomotorstyring

Vi opretter en PWM -servo til handling på ESC -datainput ved at dirigere kanal 0 på LED_PWM til GPIO13 og bruge et potentiometer til at styre moduleringen.

Til optagelsen vil vi bruge et potentiometer på 10k som en spændingsdeler. Optagelsen foretages på kanal ADC2_5, tilgængelig af GPIO12.

Trin 7: Analog optagelse

Analog optagelse
Analog optagelse
Analog optagelse
Analog optagelse

Analog til digital konvertering

Vi konverterer værdierne af AD til PWM.

Servoens PWM er 50Hz, så pulsperioden er 1/50 = 0,02 sekunder eller 20 millisekunder.

Vi skal handle i mindst 1 millisekund til 2 millisekunder.

Når PWM er på 4095, er pulsbredden 20 millisekunder, hvilket betyder, at vi bør nå maksimum ved 4095/10 for at nå 2 millisekunder, så PWM skal modtage 410 *.

Og efter mindst 1 millisekund, derfor 409/2 (eller 4095/20), skulle PWM modtage 205 *.

* Værdier skal være heltal

Trin 8: Kredsløb - Forbindelser

Kredsløb - Forbindelser
Kredsløb - Forbindelser

Trin 9: Kildekode

Header

#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 display (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"

Variabler

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 potencia = 0; int leitura = 0; int ciclo_A = 0;

Opsætning

ugyldig opsætning () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (kanal_A, frekvens, opløsning); ledcAttachPin (pin_Atuacao_A, kanal_A); ledcWrite (kanal_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); }

Sløjfe

void loop () {leitura = analogRead (Leitura_A); ciclo_A = map (leitura, 0, 4095, 205, 410); ledcWrite (kanal_A, ciclo_A); potencia = kort (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer viser 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 no display}

Trin 10: Filer

Download filerne

INO

PDF

Anbefalede: