Sadržaj:

ESP32 LoRa kontrolisani dronski motor: 10 koraka
ESP32 LoRa kontrolisani dronski motor: 10 koraka

Video: ESP32 LoRa kontrolisani dronski motor: 10 koraka

Video: ESP32 LoRa kontrolisani dronski motor: 10 koraka
Video: ESP32 with LoRa using Arduino IDE – Getting Started 2024, Novembar
Anonim
Image
Image
Demonstracija
Demonstracija

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

Korak 1: Demonstracija

Korak 2: Korišteni resursi

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

Korak 3: Wi-Fi LoRa 32- ispis

Wi-Fi LoRa 32- Pinout
Wi-Fi LoRa 32- Pinout

Korak 4: ESC (elektronička kontrola brzine)

ESC (elektronska kontrola brzine)
ESC (elektronska kontrola brzine)
ESC (elektronska kontrola brzine)
ESC (elektronska kontrola brzine)
  • Elektronski regulator brzine
  • Elektroničko kolo za kontrolu brzine elektromotora.
  • Upravlja se sa 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 se mijenja prilagođavanjem vremena isporučenih impulsa struje različitim namotima motora.
  • Specifikacije:

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: Kontrola PWM servo motora

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, te ćemo koristiti potenciometar 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

Analog Capture
Analog Capture
Analog Capture
Analog Capture

Analogno -digitalna konverzija

Pretvorit ćemo vrijednosti AD u PWM.

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

Moramo djelovati za najmanje 1 milisekundu do 2 milisekunde.

Kada 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, tako da 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 // Potrebni apeni za Arduino 1.6.5 e posterior #uključuju "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 (channel_A, freq, resolucao); 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 = map (leitura, 0, 4095, 0, 100); display.clear (); // limpa ili bafer za prikaz 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 bez prikaza}

Korak 10: Datoteke

Preuzmite datoteke

JA NE

PDF

Preporučuje se: