Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bu gün tez -tez "fırçasız" mühərriklər adlanan dron mühərriklərindən bəhs edirik. Gücləri və yüksək fırlanma qabiliyyətinə görə, əsasən dronlarda, aerododelləşdirmədə geniş istifadə olunur. ESC və ESP32 istifadə edərək fırçasız bir motoru idarə etməyi, daxili LED_PWM nəzarətçisini istifadə edərək ESC -də oxşar bir hərəkət etməyi və motor sürətini dəyişdirmək üçün potensiometrdən istifadə etməyi öyrənəcəyik.
Addım 1: nümayiş
Addım 2: İstifadə olunan mənbələr
- Bağlantı üçün tullananlar
- Wifi LoRa 32
- ESC-30A
- Fırçasız A2212 / 13t mühərriki
- USB kabeli
- Nəzarət üçün potensiometr
- Protoboard
- Enerji təchizatı
Addım 3: Wifi LoRa 32- Pinout
Addım 4: ESC (Elektron Sürət Nəzarəti)
- Elektron Sürət Nəzarətçisi
- Elektrik mühərrikinin sürətini idarə etmək üçün elektron dövrə.
- Standart 50Hz PWM servo idarəetmə sistemindən idarə olunur.
- Sahə effektli tranzistorlar (FETs) şəbəkəsinin keçid sürətini dəyişir. Transistorların keçid tezliyini tənzimləyərək, motor sürəti dəyişdirilir. Mühərrikin sürəti, təchiz edilmiş cərəyan impulslarının vaxtını motorun müxtəlif sarımlarına uyğunlaşdırmaqla dəyişir.
- Xüsusiyyətlər:
Çıxış cərəyanı: 30A davamlı, 40A 10 saniyə
Addım 5: ESC Elektron Sürət Nəzarəti (ESC)
Addım 6: PWM Servo Motor Nəzarəti
GPIO13 üçün LED_PWM kanalını 0 yönləndirərək ESC məlumat girişində hərəkət etmək üçün PWM servo yaradacağıq və modulyasiyanı idarə etmək üçün potensiometrdən istifadə edəcəyik.
Tutmaq üçün bir gərginlik bölücü olaraq 10k potansiyometrdən istifadə edəcəyik. Çəkmə GPIO12 tərəfindən əldə edilə bilən ADC2_5 kanalında aparılacaq.
Addım 7: Analog Capture
Rəqəmsal dönüşümün analoqu
AD dəyərlərini PWM -ə çevirəcəyik.
Servo PWM 50Hz -dir, buna görə də nəbz dövrü 1/50 = 0.02 saniyə və ya 20 millisaniyədir.
Ən azı 1 milisaniyədən 2 milisaniyəyə qədər hərəkət etməliyik.
PWM 4095 -də olduqda, nəbz genişliyi 20 millisaniyədir, yəni 2 milisaniyəyə çatmaq üçün 4095/10 maksimuma çatmalıyıq, buna görə PWM 410 *almalıdır.
Və ən azı 1 milisaniyədən sonra, buna görə 409/2 (və ya 4095/20), PWM 205 *almalıdır.
* Dəyərlər tam ədədlər olmalıdır
Addım 8: Dövrə - Bağlantılar
Addım 9: Mənbə Kodu
Başlıq
#include // Arduino 1.6.5 e posterior #üçün "SSD1306.h" daxil olmaq // "SSD1306Wire.h" daxil etmək // OLED_SDA -GPIO4 // OLED_SCL -GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #deffine RST 16 SSD1306 display (0x3c, SDA, SCL, RST); // "göstər" düyməsini basın
Dəyişənlər
const int freq = 50; const int kanal_A = 0; const int qətnamə = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potencia = 0; int leitura = 0; int ciclo_A = 0;
Qurmaq
boş quraşdırma () {pinMode (pin_Atuacao_A, ÇIXIŞ); ledcSetup (kanal_A, tezlik, həll); ledcAttachPin (pin_Atuacao_A, kanal_A); ledcWrite (kanal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vertikal vertikal ekran. Təmiz (); // ekran görüntüsünü təyin etmək üçün. setTextAlignment (TEXT_ALIGN_LEFT); // Arial 16 display.setFont (ArialMT_Plain_16) üçün yazı tipləri; }
Döngə
void loop () {leitura = analogRead (Leitura_A); ciclo_A = xəritə (leitura, 0, 4095, 205, 410); ledcWrite (kanal_A, ciclo_A); potencia = xəritə (leitura, 0, 4095, 0, 100); display.clear (); // buferdə display.drawString (0, 0, String ("AD:")) göstərin; 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 (potensiya)); display.drawString (98, 36, String ("%")); display.display (); // mostra ekran yoxdur}
Addım 10: Fayllar
Faylları yükləyin
MƏN YOX