Sisukord:

ESP32 LoRa juhitav droonimootor: 10 sammu
ESP32 LoRa juhitav droonimootor: 10 sammu

Video: ESP32 LoRa juhitav droonimootor: 10 sammu

Video: ESP32 LoRa juhitav droonimootor: 10 sammu
Video: ESP32 with LoRa using Arduino IDE – Getting Started 2024, November
Anonim
Image
Image
Demonstratsioon
Demonstratsioon

Täna arutame droonimootoreid, mida sageli nimetatakse harjadeta mootoriteks. Tänu võimsusele ja suurele pöörlemisele kasutatakse neid laialdaselt lennunduses, peamiselt droonides. Õpime harjadeta mootori juhtimist ESC ja ESP32 abil, ESC analoogkäivitust sisemise LED_PWM kontrolleri abil ja potentsiomeetri kasutamist mootori pöörlemiskiiruse muutmiseks.

1. samm: demonstratsioon

2. samm: kasutatud ressursid

Kasutatud ressursid
Kasutatud ressursid
  • Ühendamiseks džemprid
  • WiFi LoRa 32
  • ESC-30A
  • Harjadeta A2212 / 13t mootor
  • USB kaabel
  • Potentsiomeeter juhtimiseks
  • Protoboard
  • Toiteallikas

3. samm: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

4. samm: ESC (elektrooniline kiiruse reguleerimine)

ESC (elektrooniline kiiruse reguleerimine)
ESC (elektrooniline kiiruse reguleerimine)
ESC (elektrooniline kiiruse reguleerimine)
ESC (elektrooniline kiiruse reguleerimine)
  • Elektrooniline kiiruse regulaator
  • Elektrooniline ahel elektrimootori kiiruse reguleerimiseks.
  • Juhitav standardse 50Hz PWM servojuhtimispuldi abil.
  • See muudab välitransistoride (FET) võrgu lülituskiirust. Transistoride lülitussageduse reguleerimisega muudetakse mootori pöörlemiskiirust. Mootori pöörlemiskiirust saab muuta, reguleerides kaasasolevate vooluimpulsside ajastust vastavalt mootori erinevatele mähistele.
  • Spetsifikatsioonid:

Väljundvool: 30A pidev, 40A 10 sekundit

Samm: ESC elektrooniline kiiruse reguleerimine (ESC)

ESC elektrooniline kiiruse reguleerimine (ESC)
ESC elektrooniline kiiruse reguleerimine (ESC)

6. samm: PWM servomootori juhtimine

PWM servomootori juhtimine
PWM servomootori juhtimine

Loome PWM servo, mis toimib ESC andmete sisestamise jaoks, suunates GPIO13 LED_PWM kanali 0, ja kasutame modulatsiooni juhtimiseks potentsiomeetrit.

Pildistamiseks kasutame pingejagurina 10k potentsiomeetrit. Jäädvustamine toimub kanalil ADC2_5, millele pääseb juurde GPIO12.

Samm 7: analooghõive

Analoogpilt
Analoogpilt
Analoogpilt
Analoogpilt

Analoog -digitaalne muundamine

Teisendame AD väärtused PWM -iks.

Servo PWM on 50 Hz, seega on impulsi periood 1/50 = 0,02 sekundit või 20 millisekundit.

Peame tegutsema vähemalt 1–2 millisekundi jooksul.

Kui PWM on 4095, on impulsi laius 20 millisekundit, mis tähendab, et peaksime saavutama maksimumi 4095/10, et jõuda 2 millisekundini, seega peaks PWM saama 410 *.

Ja vähemalt 1 millisekundi pärast, seega 409/2 (või 4095/20), peaks PWM saama 205 *.

* Väärtused peavad olema täisarvud

8. samm: ahel - ühendused

Ahel - ühendused
Ahel - ühendused

9. samm: lähtekood

Päis

#include // Arduino 1.6.5 ja tagumine #on vajalikud "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 ekraan (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"

Muutujad

const int freq = 50; const int kanal_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potentsia = 0; int leitura = 0; int ciclo_A = 0;

Seadistamine

void setup () {pinMode (pin_Atuacao_A, VÄLJUND); ledcSetup (canal_A, freq, resolucao); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta või alinhamento esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }

Loop

void loop () {leitura = analogRead (Leitura_A); ciclo_A = kaart (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potentsia = kaart (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer 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 (potentsia)); display.drawString (98, 36, string ("%")); display.display (); // Mostra no display}

10. samm: failid

Laadige failid alla

INO

PDF

Soovitan: