Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Sot ne po diskutojmë motorët me dronë, të quajtur shpesh motorë "pa furça". Ato përdoren gjerësisht në modelimin e aeroplanëve, kryesisht në dronët, për shkak të fuqisë së tyre dhe rrotullimit të lartë. Ne do të mësojmë për kontrollin e një motori pa furça duke përdorur ESC dhe ESP32, kryerjen e një aktivizimi analog në ESC duke përdorur kontrolluesin e brendshëm LED_PWM dhe përdorimin e një potenciometri për të ndryshuar shpejtësinë e motorit.
Hapi 1: Demonstrim
Hapi 2: Burimet e përdorura
- Kërcimtarët për lidhje
- Wi -Fi LoRa 32
- ESC-30A
- Motori pa furça A2212 / 13t
- Kabllo USB
- Potenciometër për kontroll
- Protoboard
- Furnizimi me energji elektrike
Hapi 3: Wifi LoRa 32- Pinout
Hapi 4: ESC (Kontrolli Elektronik i Shpejtësisë)
- Kontrollues elektronik i shpejtësisë
- Qark elektronik për të kontrolluar shpejtësinë e një motori elektrik.
- Kontrolluar nga një servo kontroll standard PWM 50Hz.
- Ai ndryshon shkallën e ndërrimit të një rrjeti të transistorëve të efektit në terren (FET). Duke rregulluar frekuencën e ndërrimit të transistorëve, shpejtësia e motorit ndryshon. Shpejtësia e motorit ndryshon duke rregulluar kohën e impulseve të furnizimit të rrymës në mbështjelljet e ndryshme të motorit.
- Specifikimet:
Rryma e daljes: 30A e vazhdueshme, 40A për 10 sekonda
Hapi 5: Kontrolli elektronik i shpejtësisë ESC (ESC)
Hapi 6: PWM Servo Motor Control
Ne do të krijojmë një servo PWM për të vepruar në futjen e të dhënave ESC duke drejtuar kanalin 0 të LED_PWM për GPIO13 dhe do të përdorim një potenciometër për të kontrolluar modulimin.
Për kapjen, ne do të përdorim një potenciometër prej 10k si ndarës të tensionit. Kapja do të bëhet në kanalin ADC2_5, e arritshme nga GPIO12.
Hapi 7: Regjistrimi analog
Konvertimi analog në atë dixhital
Ne do t'i konvertojmë vlerat e AD në PWM.
PWM e servo është 50Hz, kështu që periudha e pulsit është 1/50 = 0.02 sekonda ose 20 milisekonda.
Ne duhet të veprojmë në të paktën 1 milisekond deri në 2 milisekonda.
Kur PWM është në 4095, gjerësia e pulsit është 20 milisekonda, që do të thotë se duhet të arrijmë maksimumin në 4095/10 për të arritur 2 milisekonda, kështu që PWM duhet të marrë 410 *.
Dhe pas të paktën 1 milisekonda, pra 409/2 (ose 4095/20), PWM duhet të marrë 205 *.
* Vlerat duhet të jenë numra të plotë
Hapi 8: Qarku - Lidhjet
Hapi 9: Kodi Burimor
Kokë
#include // Necessário apenas para o Arduino 1.6.5 dhe posterior #përfshijnë "SSD1306.h" // ose mesmo que #include "SSD1306Wire.h" // OLED_SDA -GPIO4 // OLED_SCL -GPIO15 // OLED_RST - GPIO16 #përcakto SDA 4 #përcakto SCL 15 #përcakto ekranin RST 16 SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"
Variablat
const int freq = 50; const int kanali_A = 0; const int resolutionucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potencia = 0; int leitura = 0; int ciclo_A = 0;
Konfigurimi
void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (kanali_A, frekuenca, zgjidhja); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertical (); // Vira a tela verticalmente display.clear (); // austa o alinhamento për një ekran esquerda.setTextAlignment (TEXT_ALIGN_LEFT); // austa a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }
Lak
lak void () {leitura = analogRead (Leitura_A); ciclo_A = hartë (leitura, 0, 4095, 205, 410); ledcWrite (kanali_A, ciclo_A); potencia = hartë (leitura, 0, 4095, 0, 100); display.clear (); // limpa ose tampon bëni 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 pa ekran}
Hapi 10: Skedarët
Shkarkoni skedarët
INO