Daftar Isi:
- Langkah 1: Demonstrasi
- Langkah 2: Sumber Daya yang Digunakan
- Langkah 3: Wifi LoRa 32- Pinout
- Langkah 4: ESC (Kontrol Kecepatan Elektronik)
- Langkah 5: Kontrol Kecepatan Elektronik ESC (ESC)
- Langkah 6: Kontrol Motor Servo PWM
- Langkah 7: Tangkapan Analog
- Langkah 8: Sirkuit - Koneksi
- Langkah 9: Kode Sumber
- Langkah 10: File
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Hari ini kita membahas mesin drone, yang sering disebut motor "tanpa sikat". Mereka banyak digunakan dalam aeromodelling, terutama di drone, karena kekuatan dan rotasinya yang tinggi. Kita akan belajar tentang mengendalikan motor brushless menggunakan ESC dan ESP32, melakukan aktuasi analog pada ESC menggunakan kontroler LED_PWM internal, dan menggunakan potensiometer untuk mengubah kecepatan motor.
Langkah 1: Demonstrasi
Langkah 2: Sumber Daya yang Digunakan
- Jumper untuk koneksi
- Wifi LoRa 32
- ESC-30A
- Mesin Brushless A2212 / 13t
- kabel USB
- Potensiometer untuk kontrol
- Protoboard
- Sumber Daya listrik
Langkah 3: Wifi LoRa 32- Pinout
Langkah 4: ESC (Kontrol Kecepatan Elektronik)
- Pengontrol Kecepatan Elektronik
- Rangkaian elektronik untuk mengontrol kecepatan motor listrik.
- Dikendalikan dari kontrol servo PWM 50Hz standar.
- Ini memvariasikan tingkat switching jaringan transistor efek medan (FET). Dengan menyesuaikan frekuensi switching transistor, kecepatan motor diubah. Kecepatan motor divariasikan dengan menyesuaikan waktu pulsa arus yang disuplai ke berbagai belitan motor.
- Spesifikasi:
Arus keluaran: 30A terus menerus, 40A selama 10 detik
Langkah 5: Kontrol Kecepatan Elektronik ESC (ESC)
Langkah 6: Kontrol 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 mengontrol modulasi.
Untuk penangkapannya, kita akan menggunakan potensiometer 10k sebagai pembagi tegangan. Pengambilan akan dilakukan pada saluran ADC2_5, dapat diakses oleh GPIO12.
Langkah 7: Tangkapan Analog
Konversi analog ke digital
Kami akan mengonversi nilai AD ke PWM.
PWM servo adalah 50Hz, sehingga periode pulsa adalah 1/50 = 0,02 detik atau 20 milidetik.
Kita perlu bertindak setidaknya dalam 1 milidetik hingga 2 milidetik.
Ketika PWM berada di 4095, lebar pulsa adalah 20 milidetik, artinya kita harus mencapai maksimum di 4095/10 untuk mencapai 2 milidetik, jadi PWM harus menerima 410 *.
Dan setelah setidaknya 1 milidetik, oleh karena itu 409/2 (atau 4095/20), PWM harus menerima 205 *.
* Nilai harus bilangan bulat
Langkah 8: Sirkuit - Koneksi
Langkah 9: Kode Sumber
Tajuk
#include // Diperlukan apenas untuk Arduino 1.6.5 dan posterior#include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #menentukan SDA 4 #menentukan SCL 15 #menentukan tampilan RST 16 SSD1306 (0x3c, SDA, SCL, RST); //Instanciando dan ajustando os pinos lakukan objeto "tampilan"
Variabel
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 potensi = 0; int leitur = 0; int ciclo_A = 0;
Mempersiapkan
void setup(){ pinMode(pin_Atuacao_A, OUTPUT); ledcSetup(canal_A, frekuensi, resolusi); ledcAttachPin(pin_Atuacao_A, kanal_A); ledcWrite(canal_A, ciclo_A); tampilan.init(); display.flipScreenVertikal(); //Vira a tela verticalmente display.clear(); //ajusta o alinhamento untuk esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //ajusta a fonte untuk Arial 16 display.setFont(ArialMT_Plain_16); }
Lingkaran
void loop() { leiura = analogRead(Leikura_A); ciclo_A = peta(leitura, 0, 4095, 205, 410); ledcWrite(canal_A, ciclo_A); potensi = peta(leiura, 0, 4095, 0, 100); display.clear();//limpa o buffer lakukan tampilan display.drawString(0, 0, String("AD:")); display.drawString(32, 0, String(leiura)); display.drawString(0, 18, String("PWM:")); display.drawString(48, 18, String(ciclo_A)); display.drawString(0, 36, String("Potncia:")); display.drawString(72, 36, String(potensi)); display.drawString(98, 36, String("%")); tampilan.tampilan(); //paling tidak ada tampilan }
Langkah 10: File
Unduh file
SAYA TIDAK