Isi kandungan:

Mesin Drone Terkawal ESP32 LoRa: 10 Langkah
Mesin Drone Terkawal ESP32 LoRa: 10 Langkah

Video: Mesin Drone Terkawal ESP32 LoRa: 10 Langkah

Video: Mesin Drone Terkawal ESP32 LoRa: 10 Langkah
Video: Невероятное Изобретение - Этот Дрон Изменит Все 2024, Julai
Anonim
Image
Image
Demonstrasi
Demonstrasi

Hari ini kita membincangkan mesin drone, yang sering disebut motor "brushless". Mereka banyak digunakan dalam aeromodelling, terutama di drone, kerana daya dan putarannya yang tinggi. Kami akan belajar mengenai mengawal motor tanpa sikat menggunakan ESC dan ESP32, melakukan penggerak analogik pada ESC menggunakan pengawal LED_PWM dalaman, dan menggunakan potensiometer untuk mengubah kelajuan motor.

Langkah 1: Demonstrasi

Langkah 2: Sumber yang Digunakan

Sumber Yang Digunakan
Sumber Yang Digunakan
  • Pelompat untuk sambungan
  • Wifi LoRa 32
  • ESC-30A
  • Enjin A2212 / 13t Brushless
  • wayar USB
  • Potensiometer untuk kawalan
  • Papan Protob
  • Bekalan kuasa

Langkah 3: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

Langkah 4: ESC (Kawalan Kelajuan Elektronik)

ESC (Kawalan Kelajuan Elektronik)
ESC (Kawalan Kelajuan Elektronik)
ESC (Kawalan Kelajuan Elektronik)
ESC (Kawalan Kelajuan Elektronik)
  • Pengawal Kelajuan Elektronik
  • Litar elektronik untuk mengawal kelajuan motor elektrik.
  • Dikawal dari kawalan servo PWM 50Hz standard.
  • Ia mengubah kadar pertukaran rangkaian transistor kesan medan (FET). Dengan menyesuaikan frekuensi peralihan transistor, kelajuan motor diubah. Kelajuan motor berubah-ubah dengan menyesuaikan masa denyut arus yang disediakan untuk pelbagai belitan motor.
  • Spesifikasi:

Arus output: 30A berterusan, 40A selama 10 saat

Langkah 5: Kawalan Kelajuan Elektronik ESC (ESC)

Kawalan Kelajuan Elektronik ESC (ESC)
Kawalan Kelajuan Elektronik ESC (ESC)

Langkah 6: Kawalan Motor Servo PWM

Kawalan Motor Servo PWM
Kawalan Motor Servo PWM

Kami akan membuat servo PWM untuk bertindak pada input data ESC dengan mengarahkan saluran 0 dari LED_PWM untuk GPIO13, dan menggunakan potensiometer untuk mengawal modulasi.

Untuk penangkapan, kami akan menggunakan potensiometer 10k sebagai pembahagi voltan. Tangkapan akan dilakukan di saluran ADC2_5, dapat diakses oleh GPIO12.

Langkah 7: Rakaman Analog

Rakaman Analog
Rakaman Analog
Rakaman Analog
Rakaman Analog

Penukaran analog ke digital

Kami akan menukar nilai AD ke PWM.

PWM servo adalah 50Hz, jadi tempoh nadi adalah 1/50 = 0.02 saat atau 20 milisaat.

Kita perlu bertindak sekurang-kurangnya 1 milisaat hingga 2 milisaat.

Apabila PWM berada pada 4095, lebar nadi adalah 20 milisaat, yang bermaksud kita harus mencapai maksimum pada 4095/10 untuk mencapai 2 milisaat, jadi PWM harus menerima 410 *.

Dan setelah sekurang-kurangnya 1 milisaat, oleh itu 409/2 (atau 4095/20), PWM akan menerima 205 *.

* Nilai mestilah bilangan bulat

Langkah 8: Litar - Sambungan

Litar - Sambungan
Litar - Sambungan

Langkah 9: Kod Sumber

Kepala

#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 - Paparan GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos melakukan objeto "paparan"

Pemboleh ubah

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;

Persediaan

batal persediaan () {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 a tela verticalmente display.clear (); // ajusta o alinhamento untuk a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }

Gelung

gelung kekosongan () {leitura = analogRead (Leitura_A); ciclo_A = peta (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potencia = peta (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, Rentetan ("PWM:")); display.drawString (48, 18, String (ciclo_A)); display.drawString (0, 36, Rentetan ("Potência:")); display.drawString (72, 36, String (potencia)); display.drawString (98, 36, Rentetan ("%")); paparan.display (); // mostra tiada paparan}

Langkah 10: Fail

Muat turun fail

INO

PDF

Disyorkan: