جدول المحتويات:
- الخطوة 1: العرض التوضيحي
- الخطوة 2: الموارد المستخدمة
- الخطوة 3: Wifi LoRa 32- Pinout
- الخطوة 4: ESC (التحكم الإلكتروني في السرعة)
- الخطوة 5: التحكم الإلكتروني في السرعة (ESC)
- الخطوة 6: التحكم في محرك سيرفو PWM
- الخطوة 7: الالتقاط التناظري
- الخطوة 8: الدائرة - التوصيلات
- الخطوة 9: كود المصدر
- الخطوة 10: الملفات
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
نناقش اليوم محركات الطائرات بدون طيار ، والتي يطلق عليها غالبًا المحركات "بدون فرش". تُستخدم على نطاق واسع في تصميم الطائرات ، وخاصة في الطائرات بدون طيار ، نظرًا لقوتها ودورانها العالي. سنتعرف على كيفية التحكم في محرك بدون فرش باستخدام ESC و ESP32 ، وإجراء تشغيل تناظري على ESC باستخدام وحدة التحكم LED_PWM الداخلية ، واستخدام مقياس الجهد لتغيير سرعة المحرك.
الخطوة 1: العرض التوضيحي
الخطوة 2: الموارد المستخدمة
- صداري للاتصال
- واي فاي لورا 32
- ESC-30A
- محرك بدون فرش A2212 / 13t
- كابل USB
- مقياس الجهد للتحكم
- بروتوبورد
- مزود الطاقة
الخطوة 3: Wifi LoRa 32- Pinout
الخطوة 4: ESC (التحكم الإلكتروني في السرعة)
- متحكم السرعة الإلكتروني
- دائرة إلكترونية للتحكم في سرعة محرك كهربائي.
- يتم التحكم فيها من جهاز تحكم مؤازر قياسي 50 هرتز PWM.
- يغير معدل تبديل شبكة الترانزستورات ذات التأثير الميداني (FETs). من خلال ضبط تردد تبديل الترانزستورات ، يتم تغيير سرعة المحرك. تتنوع سرعة المحرك عن طريق ضبط توقيت نبضات التيار الموفر لملفات المحرك المختلفة.
- تحديد:
تيار الإخراج: 30 أمبير مستمر ، 40 أمبير لمدة 10 ثوانٍ
الخطوة 5: التحكم الإلكتروني في السرعة (ESC)
الخطوة 6: التحكم في محرك سيرفو PWM
سننشئ مؤازرة PWM للعمل على إدخال بيانات ESC عن طريق توجيه القناة 0 من LED_PWM لـ GPIO13 ، واستخدام مقياس الجهد للتحكم في التعديل.
من أجل الالتقاط ، سنستخدم مقياس جهد يبلغ 10 كيلو بايت كمقسم جهد. سيتم الالتقاط على القناة ADC2_5 ، التي يمكن الوصول إليها بواسطة GPIO12.
الخطوة 7: الالتقاط التناظري
التناظرية إلى التحويل الرقمي
سنقوم بتحويل قيم AD إلى PWM.
إن PWM للمؤازرة هو 50 هرتز ، وبالتالي فإن فترة النبض هي 1/50 = 0.02 ثانية أو 20 مللي ثانية.
نحن بحاجة للعمل خلال 1 مللي ثانية على الأقل إلى 2 مللي ثانية.
عندما يكون PWM عند 4095 ، يكون عرض النبضة 20 مللي ثانية ، مما يعني أننا يجب أن نصل إلى الحد الأقصى عند 4095/10 لنصل إلى 2 مللي ثانية ، لذلك يجب أن يتلقى PWM 410 *.
وبعد 1 مللي ثانية على الأقل ، وبالتالي 409/2 (أو 4095/20) ، يجب أن يتلقى PWM 205 *.
* يجب أن تكون القيم أعدادًا صحيحة
الخطوة 8: الدائرة - التوصيلات
الخطوة 9: كود المصدر
رأس
# تضمين // Necessário apenas para o Arduino 1.6.5 e posterior # تتضمن "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 # تعريف SDA 4 # تعريف SCL 15 # تعريف عرض RST 16 SSD1306 (0x3c ، SDA ، SCL ، RST) ؛ // Instanciando e ajustando os pinos do objeto "display"
المتغيرات
const int التكرار = 50 ؛ const int canal_A = 0 ؛ كونست إنت ريسولوكاو = 12 ؛ const int pin_Atuacao_A = 13 ؛ const int Leitura_A = 12 ؛ int potencia = 0 ؛ int leitura = 0 ؛ int ciclo_A = 0 ؛
اقامة
إعداد باطل () {pinMode (pin_Atuacao_A، OUTPUT) ؛ إعداد ledc (canal_A ، التكرار ، حل حل) ؛ ledcAttachPin (pin_Atuacao_A ، canal_A) ؛ ledcWrite (canal_A ، ciclo_A) ؛ display.init () ؛ display.flipScreenVertically () ، // Vira a tela verticalmente display.clear () ؛ // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT) ؛ // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16) ؛ }
حلقة
حلقة فارغة () {leitura = analogRead (Leitura_A) ؛ ciclo_A = خريطة (leitura، 0، 4095، 205، 410) ؛ ledcWrite (canal_A ، ciclo_A) ؛ بوتنسيا = خريطة (ليتورا ، 0 ، 4095 ، 0 ، 100) ؛ display.clear () ؛ // limpa o buffer تعرض 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 ("Potência:"))؛ display.drawString (72، 36، String (potencia)) ؛ display.drawString (98، 36، String ("٪"))؛ display.display () ، // Mostra no display}
الخطوة 10: الملفات
قم بتنزيل الملفات
انا لا
بي دي إف