Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
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
- 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
Korak 4: 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)
Korak 6: Upravljanje PWM servo motorom
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 -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
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