Mundarija:

ESP32 LoRa boshqariladigan uchuvchisiz dvigatel: 10 qadam
ESP32 LoRa boshqariladigan uchuvchisiz dvigatel: 10 qadam

Video: ESP32 LoRa boshqariladigan uchuvchisiz dvigatel: 10 qadam

Video: ESP32 LoRa boshqariladigan uchuvchisiz dvigatel: 10 qadam
Video: Insoniyat tarixida ilk bor boshqa sayyorada dron uchirildi 2024, Noyabr
Anonim
Image
Image
Namoyish
Namoyish

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

Ishlatilgan manbalar
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

Wi-Fi LoRa 32- pinout
Wi-Fi LoRa 32- pinout

4 -qadam: ESC (elektron tezlikni boshqarish)

ESC (elektron tezlikni boshqarish)
ESC (elektron tezlikni boshqarish)
ESC (elektron tezlikni boshqarish)
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)

ESC elektron tezlikni boshqarish (ESC)
ESC elektron tezlikni boshqarish (ESC)

6 -qadam: PWM Servo dvigatelini boshqarish

PWM Servo dvigatelini boshqarish
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

Analog suratga olish
Analog suratga olish
Analog suratga olish
Analog suratga 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

O'chirish - ulanishlar
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

PDF

Tavsiya: