Talaan ng mga Nilalaman:
- Hakbang 1: Pagpapakita
- Hakbang 2: Ginamit na Mga Mapagkukunan
- Hakbang 3: Wifi LoRa 32- Pinout
- Hakbang 4: ESC (Electronic Speed Control)
- Hakbang 5: ESC Electronic Speed Control (ESC)
- Hakbang 6: Pagkontrol ng PWM Servo Motor
- Hakbang 7: Makuha ng Analog
- Hakbang 8: Circuit - Mga Koneksyon
- Hakbang 9: Source Code
- Hakbang 10: Mga File
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ngayon ay tinatalakay namin ang mga drone engine, na madalas na tinatawag na "brushless" na mga motor. Malawakang ginagamit ang mga ito sa aeromodelling, higit sa lahat sa mga drone, dahil sa kanilang lakas at mataas na pag-ikot. Malalaman namin ang tungkol sa pagkontrol ng isang motor na walang brush na gumagamit ng ESC at ESP32, na gumaganap ng isang analogic actuation sa ESC gamit ang panloob na LED_PWM controller, at paggamit ng potentiometer upang mabago ang bilis ng motor.
Hakbang 1: Pagpapakita
Hakbang 2: Ginamit na Mga Mapagkukunan
- Mga jumper para sa koneksyon
- Wifi LoRa 32
- ESC-30A
- Brushless A2212 / 13t Engine
- kable ng USB
- Potensyomiter para sa kontrol
- Protoboard
- Supply ng kuryente
Hakbang 3: Wifi LoRa 32- Pinout
Hakbang 4: ESC (Electronic Speed Control)
- Electronic Speed Controller
- Elektronikong circuit upang makontrol ang bilis ng isang de-kuryenteng motor.
- Kinokontrol mula sa isang pamantayan ng 50Hz PWM servo control.
- Nag-iiba ito ng rate ng paglipat ng isang network ng mga field effect transistors (FET). Sa pamamagitan ng pag-aayos ng dalas ng paglipat ng mga transistors, ang bilis ng motor ay nabago. Ang bilis ng motor ay iba-iba sa pamamagitan ng pag-aayos ng tiyempo ng mga naibigay na kasalukuyang pulso sa iba't ibang mga paikot-ikot na motor.
- Mga pagtutukoy:
Kasalukuyang output: 30A tuloy-tuloy, 40A para sa 10 segundo
Hakbang 5: ESC Electronic Speed Control (ESC)
Hakbang 6: Pagkontrol ng PWM Servo Motor
Lilikha kami ng isang servo ng PWM upang kumilos sa ESC data input sa pamamagitan ng pagdidirekta sa channel 0 ng LED_PWM para sa GPIO13, at gagamit ng isang potensyomiter upang makontrol ang modulasyon.
Para sa pagkuha, gagamit kami ng potentiometer na 10k bilang isang divider ng boltahe. Ang pagkuha ay magagawa sa channel ADC2_5, maa-access ng GPIO12.
Hakbang 7: Makuha ng Analog
Analog sa digital conversion
Ie-convert namin ang mga halaga ng AD sa PWM.
Ang PWM ng servo ay 50Hz, kaya ang tagal ng pulso ay 1/50 = 0.02 segundo o 20 milliseconds.
Kailangan nating kumilos nang hindi bababa sa 1 millisecond hanggang 2 milliseconds.
Kapag ang PWM ay nasa 4095, ang lapad ng pulso ay 20 milliseconds, ibig sabihin dapat nating maabot ang maximum na 4095/10 upang maabot ang 2 milliseconds, kaya dapat makatanggap ang PWM ng 410 *.
At pagkatapos ng hindi bababa sa 1 millisecond, samakatuwid 409/2 (o 4095/20), dapat makatanggap ang PWM ng 205 *.
* Ang mga halaga ay dapat na mga integer
Hakbang 8: Circuit - Mga Koneksyon
Hakbang 9: Source Code
Header
#include // Necessário apenas para o Arduino 1.6.5 at posterior # isama ang "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 # tukuyin ang RST 16 SSD1306 display (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"
Mga variable
const int freq = 50; const int canal_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;
Pag-set up
void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (canal_A, freq, resolucao); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vira isang tela verticalmente display. Malinaw (); // ajusta o alinhamento para sa isang 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 = mapa (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potencia = mapa (leitura, 0, 4095, 0, 100); display.clear (); // limpa o buffer do 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 (potencia)); display.drawString (98, 36, String ("%")); display.display (); // mostra no display}
Hakbang 10: Mga File
I-download ang mga file
INO