Taula de continguts:

Motor de drons controlat ESP32 LoRa: 10 passos
Motor de drons controlat ESP32 LoRa: 10 passos

Vídeo: Motor de drons controlat ESP32 LoRa: 10 passos

Vídeo: Motor de drons controlat ESP32 LoRa: 10 passos
Vídeo: Motor de Drone controlado por ESP32 LoRa 2024, De novembre
Anonim
Image
Image
Demostració
Demostració

Avui estem parlant de motors de drons, anomenats freqüentment motors "sense escombretes". S’utilitzen àmpliament en aeromodelisme, principalment en avions no tripulats, a causa de la seva potència i alta rotació. Aprendrem sobre el control d’un motor sense escombretes mitjançant ESC i ESP32, la realització d’una acció analògica a l’ESC mitjançant el controlador LED_PWM intern i l’ús d’un potenciòmetre per canviar la velocitat del motor.

Pas 1: demostració

Pas 2: recursos utilitzats

Recursos utilitzats
Recursos utilitzats
  • Jumpers per a connexió
  • Wifi LoRa 32
  • ESC-30A
  • Motor sense escombretes A2212 / 13t
  • Cable USB
  • Potenciòmetre de control
  • Protoboard
  • Font d'alimentació

Pas 3: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

Pas 4: ESC (control electrònic de velocitat)

ESC (control electrònic de velocitat)
ESC (control electrònic de velocitat)
ESC (control electrònic de velocitat)
ESC (control electrònic de velocitat)
  • Controlador de velocitat electrònic
  • Circuit electrònic per controlar la velocitat d’un motor elèctric.
  • Controlat des d’un servo control PWM de 50Hz estàndard.
  • Varia la velocitat de commutació d'una xarxa de transistors d'efecte de camp (FET). Ajustant la freqüència de commutació dels transistors, es canvia la velocitat del motor. La velocitat del motor es varia ajustant el temps dels polsos de corrent subministrats als diferents bobinatges del motor.
  • Especificacions:

Corrent de sortida: 30A continu, 40A durant 10 segons

Pas 5: Control electrònic de velocitat ESC (ESC)

Control electrònic de velocitat ESC (ESC)
Control electrònic de velocitat ESC (ESC)

Pas 6: Control del servomotor PWM

Control de servomotor PWM
Control de servomotor PWM

Crearem un servo PWM per actuar sobre l'entrada de dades ESC dirigint el canal 0 del LED_PWM per al GPIO13 i utilitzarem un potenciòmetre per controlar la modulació.

Per a la captura, utilitzarem un potenciòmetre de 10k com a divisor de tensió. La captura es farà al canal ADC2_5, accessible per GPIO12.

Pas 7: captura analògica

Captura analògica
Captura analògica
Captura analògica
Captura analògica

Conversió analògica a digital

Convertirem els valors d’AD a PWM.

El PWM del servo és de 50Hz, de manera que el període de pols és 1/50 = 0,02 segons o 20 mil·lisegons.

Hem d’actuar entre 1 i 2 mil·lisegons com a mínim.

Quan el PWM és a 4095, l'amplada del pols és de 20 mil·lisegons, és a dir, hauríem d'arribar al màxim a 4095/10 per arribar a 2 mil·lisegons, de manera que PWM hauria de rebre 410 *.

I després d’almenys 1 mil·lisegon, per tant 409/2 (o 4095/20), el PWM hauria de rebre 205 *.

* Els valors han de ser enters

Pas 8: Circuit - Connexions

Circuit - Connexions
Circuit - Connexions

Pas 9: codi font

Capçalera

#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 los pinos do objeto "display"

Les variables

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;

Configuració

void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (canal_A, freq, resolucao); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vira a tela verticalment display.clear (); // ajusta o alinhamento per a l'esquerra display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte per Arial 16 display.setFont (ArialMT_Plain_16); }

Bucle

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

Pas 10: fitxers

Descarregueu els fitxers

INO

PDF

Recomanat: