Mundarija:
- 1 -qadam: Namoyish
- 2 -qadam: Ishlatilgan manbalar
- 3-qadam: Wi-Fi LoRa 32- pinout
- 4 -qadam: ESC (elektron tezlikni boshqarish)
- 5 -qadam: ESC elektron tezlikni boshqarish (ESC)
- 6 -qadam: PWM Servo dvigatelini boshqarish
- 7 -qadam: Analog tasvirni olish
- 8 -qadam: O'chirish - ulanishlar
- 9 -qadam: Manba kodi
- 10 -qadam: fayllar
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Bugun biz tez -tez "cho'tkasi bo'lmagan" dvigatel deb nomlanadigan uchuvchisiz dvigatellarni muhokama qilamiz. Ularning kuchi va yuqori aylanishi tufayli ular aerodinamikada, asosan dronlarda keng qo'llaniladi. Biz ESC va ESP32 yordamida cho'tkasi bo'lmagan dvigatelni boshqarish, ichki LED_PWM tekshirgichi yordamida ESCda shunga o'xshash ishga tushirishni va vosita tezligini o'zgartirish uchun potansiometrni ishlatish haqida bilib olamiz.
1 -qadam: Namoyish
2 -qadam: Ishlatilgan manbalar
- Ulanish uchun o'tish moslamalari
- Wi -Fi LoRa 32
- ESC-30A
- Cho'tkasi bo'lmagan A2212 / 13t dvigateli
- USB kabeli
- Boshqarish uchun potansiyometr
- Protoboard
- Quvvatlantirish manbai
3-qadam: Wi-Fi LoRa 32- pinout
4 -qadam: ESC (elektron tezlikni boshqarish)
- Elektron tezlikni boshqaruvchi
- Elektr dvigatelining tezligini boshqarish uchun elektron sxema.
- 50Hz standart PWM servo boshqaruvidan boshqariladi.
- Bu dala effektli tranzistorlar (FET) tarmog'ining o'tish tezligini o'zgartiradi. Tranzistorlarning o'tish chastotasini sozlash orqali, vosita tezligi o'zgartiriladi. Dvigatelning tezligi har xil sarg'ishlarga berilgan oqim pulslarining vaqtini sozlash orqali o'zgaradi.
- Xususiyatlar:
Chiqish oqimi: 30A uzluksiz, 40A 10 soniya davomida
5 -qadam: ESC elektron tezlikni boshqarish (ESC)
6 -qadam: PWM Servo dvigatelini boshqarish
Biz GPIO13 uchun LED_PWM 0 kanalini yo'naltirish orqali ESC ma'lumotlarini kiritishda harakat qilish uchun PWM servosini yaratamiz va modulyatsiyani boshqarish uchun potentsiometrdan foydalanamiz.
Qo'lga olish uchun biz kuchlanish taqsimlagichi sifatida 10k potentsiometrdan foydalanamiz. Suratga olish GPIO12 orqali kirish mumkin bo'lgan ADC2_5 kanalida amalga oshiriladi.
7 -qadam: Analog tasvirni olish
Raqamli konvertatsiyaga o'xshash
Biz AD qiymatlarini PWMga o'zgartiramiz.
Servo PWM - 50 Gts, shuning uchun impuls davri 1/50 = 0,02 soniya yoki 20 millisekund.
Biz kamida 1 millisekunddan 2 millisekundgacha harakat qilishimiz kerak.
Qachon PWM 4095 bo'lsa, pulsning kengligi 20 millisekundni tashkil etadi, ya'ni biz 2 millisekundga erishish uchun 4095/10 da maksimal darajaga yetishimiz kerak, shuning uchun PWM 410 *ni olishi kerak.
Va kamida 1 millisekunddan keyin, shuning uchun 409/2 (yoki 4095/20), PWM 205 *olishi kerak.
* Qiymatlar butun sonlar bo'lishi kerak
8 -qadam: O'chirish - ulanishlar
9 -qadam: Manba kodi
Sarlavha
#include // Arduino 1.6.5 e posterior #kerak "SSD1306.h" ni o'z ichiga oladi // "SSD1306Wire.h" ni o'z ichiga oladi // OLED_SDA -GPIO4 // OLED_SCL -GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #deffine RST 16 SSD1306 displey (0x3c, SDA, SCL, RST); // "ko'rsatish" tugmachasini bosing.
O'zgaruvchilar
const int freq = 50; const int kanal_A = 0; const int Resolutionucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potencia = 0; int leitura = 0; int ciclo_A = 0;
Sozlash
void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (kanal_A, chastota, rezolyutsiya); ledcAttachPin (pin_Atuacao_A, kanal_A); ledcWrite (kanal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vertikal ko'rinishdagi ekran.clear (); // ekranni ko'rsatish.setTextAlignment (TEXT_ALIGN_LEFT); // Arial 16 displey.setFont (ArialMT_Plain_16) uchun shrift; }
Loop
void loop () {leitura = analogRead (Leitura_A); ciclo_A = xarita (leitura, 0, 4095, 205, 410); ledcWrite (kanal_A, ciclo_A); potensiya = xarita (leytura, 0, 4095, 0, 100); display.clear (); // limfa yoki bufer displeyni ko'rsatish.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 (potensiya)); display.drawString (98, 36, String ("%"))); display.display (); // mostra ko'rsatilmaydi}
10 -qadam: fayllar
Fayllarni yuklab oling
INO