İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bugün, sıklıkla "fırçasız" motorlar olarak adlandırılan drone motorlarını tartışıyoruz. Güçleri ve yüksek rotasyonları nedeniyle aeromodelling'de, özellikle drone'larda yaygın olarak kullanılırlar. ESC ve ESP32 kullanarak fırçasız bir motoru kontrol etmeyi, dahili LED_PWM kontrol cihazını kullanarak ESC üzerinde bir analog çalıştırma gerçekleştirmeyi ve motor hızını değiştirmek için bir potansiyometre kullanmayı öğreneceğiz.
1. Adım: Gösteri
2. Adım: Kullanılan Kaynaklar
- Bağlantı için jumperlar
- Wifi LoRa 32
- ESC-30A
- Fırçasız A2212 / 13t Motor
- USB kablosu
- Kontrol için potansiyometre
- protokol
- Güç kaynağı
3. Adım: Wifi LoRa 32- Pin Çıkışı
Adım 4: ESC (Elektronik Hız Kontrolü)
- Elektronik Hız Kontrol Cihazı
- Bir elektrik motorunun hızını kontrol etmek için elektronik devre.
- Standart bir 50Hz PWM servo kontrolünden kontrol edilir.
- Alan etkili transistörler (FET'ler) ağının anahtarlama hızını değiştirir. Transistörlerin anahtarlama frekansı ayarlanarak motor hızı değiştirilir. Motor hızı, motorun çeşitli sargılarına sağlanan akım darbelerinin zamanlamasını ayarlayarak değiştirilir.
- Özellikler:
Çıkış akımı: 30A sürekli, 40A 10 saniye
Adım 5: ESC Elektronik Hız Kontrolü (ESC)
Adım 6: PWM Servo Motor Kontrolü
GPIO13 için LED_PWM'nin 0 kanalını yönlendirerek ESC veri girişine etki edecek bir PWM servo oluşturacağız ve modülasyonu kontrol etmek için bir potansiyometre kullanacağız.
Yakalama için voltaj bölücü olarak 10k'lık bir potansiyometre kullanacağız. Yakalama, GPIO12 tarafından erişilebilen ADC2_5 kanalında yapılacaktır.
Adım 7: Analog Yakalama
Analogdan dijitale dönüştürme
AD değerlerini PWM'ye çevireceğiz.
Servonun PWM'si 50Hz'dir, yani darbe periyodu 1/50 = 0.02 saniye veya 20 milisaniyedir.
En az 1 milisaniye ile 2 milisaniye arasında hareket etmemiz gerekiyor.
PWM 4095'te olduğunda, darbe genişliği 20 milisaniyedir, yani 2 milisaniyeye ulaşmak için 4095/10'da maksimuma ulaşmalıyız, yani PWM 410 * almalıdır.
Ve en az 1 milisaniyeden sonra, bu nedenle 409/2 (veya 4095/20), PWM 205 * almalıdır.
* Değerler tamsayı olmalıdır
Adım 8: Devre - Bağlantılar
Adım 9: Kaynak Kodu
başlık
#include // Arduino 1.6.5 ve posterior için gerekli olan #include "SSD1306.h" // veya daha fazla bilgi #include "SSD1306Wire.h" //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 ekran(0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos "görüntüleme" nesnesi yapıyor
Değişkenler
const int sıklık = 50;sabit int kanal_A = 0; const int çözünürlük = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potensi = 0; int zaman = 0; int ciclo_A = 0;
Kurmak
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 a tela dikeymente display.clear(); //ajusta ya da esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); // Arial 16 display.setFont(ArialMT_Plain_16); }
Döngü
void loop() { leitura = analogRead(Leitura_A); ciclo_A = harita(leitura, 0, 4095, 205, 410); ledcWrite(canal_A, ciclo_A); potencia = harita(leitura, 0, 4095, 0, 100); display.clear();//limpa o tampon 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("Potencia:")); display.drawString(72, 36, String(potencia)); display.drawString(98, 36, String("%")); display.display(); //mostra görüntü yok }
Adım 10: Dosyalar
Dosyaları indirin
BEN HAYIR