ESP32 LoRa kontrolirani motor Drone: 10 koraka
ESP32 LoRa kontrolirani motor Drone: 10 koraka
Anonim
Image
Image
Demonstracija
Demonstracija

Danas raspravljamo o bespilotnim motorima, koji se često nazivaju motorima bez četkica. Široko se koriste u zrakoplovnoj industriji, uglavnom u bespilotnim letjelicama, zbog svoje snage i velike rotacije. Naučit ćemo o upravljanju motorom bez četkica pomoću ESC i ESP32, izvođenju analognog aktiviranja ESC -a pomoću unutarnjeg LED_PWM kontrolera i korištenju potenciometra za promjenu brzine motora.

Korak 1: Demonstracija

Korak 2: Korišteni resursi

Korišteni resursi
Korišteni resursi
  • Džemperi za povezivanje
  • Wi -Fi LoRa 32
  • ESC-30A
  • Motor bez četkica A2212 / 13t
  • USB kabl
  • Potenciometar za kontrolu
  • Protoboard
  • Napajanje strujom

Korak 3: Wifi LoRa 32- ispis

Wi-Fi LoRa 32- ispis
Wi-Fi LoRa 32- ispis

Korak 4: ESC (elektronička kontrola brzine)

ESC (elektronička kontrola brzine)
ESC (elektronička kontrola brzine)
ESC (elektronička kontrola brzine)
ESC (elektronička kontrola brzine)
  • Elektronički regulator brzine
  • Elektronički krug za kontrolu brzine elektromotora.
  • Upravlja se iz standardne PWM servo kontrole od 50Hz.
  • Ona mijenja brzinu prebacivanja mreže tranzistora s efektom polja (FET). Podešavanjem sklopne frekvencije tranzistora mijenja se brzina motora. Brzina motora mijenja se prilagođavanjem vremena isporučenih impulsa struje različitim namotima motora.
  • Tehnički podaci:

Izlazna struja: 30A kontinuirano, 40A 10 sekundi

Korak 5: ESC elektronička kontrola brzine (ESC)

ESC Elektronička kontrola brzine (ESC)
ESC Elektronička kontrola brzine (ESC)

Korak 6: Upravljanje PWM servo motorom

Upravljanje servo motorom PWM
Upravljanje servo motorom PWM

Napravit ćemo PWM servo za djelovanje na ESC unos podataka usmjeravanjem kanala 0 LED_PWM za GPIO13, a pomoću potenciometra za kontrolu modulacije.

Za hvatanje ćemo koristiti potenciometar od 10k kao razdjelnik napona. Snimanje će se izvršiti na kanalu ADC2_5, kojem je dostupan GPIO12.

Korak 7: Analogno snimanje

Analogno snimanje
Analogno snimanje
Analogno snimanje
Analogno snimanje

Analogno -digitalna pretvorba

Pretvorit ćemo vrijednosti AD u PWM.

PWM servo je 50Hz, pa je period impulsa 1/50 = 0,02 sekunde ili 20 milisekundi.

Moramo djelovati u najmanje 1 milisekundi do 2 milisekunde.

Kad je PWM na 4095, širina impulsa je 20 milisekundi, što znači da bismo trebali postići maksimum na 4095/10 da bismo dosegli 2 milisekunde, pa bi PWM trebao primiti 410 *.

I nakon najmanje 1 milisekunde, dakle 409/2 (ili 4095/20), PWM bi trebao primiti 205 *.

* Vrijednosti moraju biti cijeli brojevi

Korak 8: Krug - veze

Krug - veze
Krug - veze

Korak 9: Izvorni kod

Zaglavlje

#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"

Varijable

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

Postaviti

void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (kanal_A, frekvencija, razlučivost); ledcAttachPin (pin_Atuacao_A, kanal_A); ledcWrite (kanal_A, ciclo_A); display.init (); display.flipScreenVertical (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento para esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }

Petlja

void loop () {leitura = analogRead (Leitura_A); ciclo_A = karta (leitura, 0, 4095, 205, 410); ledcWrite (kanal_A, ciclo_A); potencia = karta (leitura, 0, 4095, 0, 100); display.clear (); // limpa ili međuspremnik za prikaz display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, niz (leitura)); display.drawString (0, 18, String ("PWM:")); display.drawString (48, 18, niz (ciclo_A)); display.drawString (0, 36, String ("Potência:")); display.drawString (72, 36, String (potencia)); display.drawString (98, 36, String ("%")); display.display (); // mostra bez prikaza}

Korak 10: Datoteke

Preuzmite datoteke

INO

PDF