สารบัญ:

ESP32 LoRa ควบคุม Drone Engine: 10 ขั้นตอน
ESP32 LoRa ควบคุม Drone Engine: 10 ขั้นตอน

วีดีโอ: ESP32 LoRa ควบคุม Drone Engine: 10 ขั้นตอน

วีดีโอ: ESP32 LoRa ควบคุม Drone Engine: 10 ขั้นตอน
วีดีโอ: ESP32 Lora Home Automation, Long Rage Lora Sender and Receiver, LoRa SX1278 2024, พฤศจิกายน
Anonim
Image
Image
สาธิต
สาธิต

วันนี้เรากำลังพูดถึงเครื่องยนต์โดรน ซึ่งมักเรียกว่ามอเตอร์แบบไร้แปรงถ่าน มีการใช้กันอย่างแพร่หลายในการสร้างแบบจำลองทางอากาศ ส่วนใหญ่ในโดรน เนื่องจากมีกำลังและการหมุนสูง เราจะเรียนรู้เกี่ยวกับการควบคุมมอเตอร์แบบไม่มีแปรงโดยใช้ ESC และ ESP32 การดำเนินการกระตุ้นแบบอะนาล็อกบน ESC โดยใช้ตัวควบคุม LED_PWM ภายใน และการใช้โพเทนชิออมิเตอร์เพื่อเปลี่ยนความเร็วของมอเตอร์

ขั้นตอนที่ 1: การสาธิต

ขั้นตอนที่ 2: ทรัพยากรที่ใช้

ทรัพยากรที่ใช้
ทรัพยากรที่ใช้
  • จัมเปอร์สำหรับเชื่อมต่อ
  • Wifi LoRa 32
  • ESC-30A
  • เครื่องยนต์ไร้แปรงถ่าน A2212 / 13t
  • สาย USB
  • โพเทนชิออมิเตอร์สำหรับการควบคุม
  • โปรโตบอร์ด
  • แหล่งจ่ายไฟ

ขั้นตอนที่ 3: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

ขั้นตอนที่ 4: ESC (ระบบควบคุมความเร็วแบบอิเล็กทรอนิกส์)

ESC (ระบบควบคุมความเร็วแบบอิเล็กทรอนิกส์)
ESC (ระบบควบคุมความเร็วแบบอิเล็กทรอนิกส์)
ESC (ระบบควบคุมความเร็วแบบอิเล็กทรอนิกส์)
ESC (ระบบควบคุมความเร็วแบบอิเล็กทรอนิกส์)
  • ตัวควบคุมความเร็วแบบอิเล็กทรอนิกส์
  • วงจรไฟฟ้าควบคุมความเร็วของมอเตอร์ไฟฟ้า
  • ควบคุมจากตัวควบคุมเซอร์โว PWM มาตรฐาน 50Hz
  • มันเปลี่ยนอัตราการเปลี่ยนของเครือข่ายของทรานซิสเตอร์เอฟเฟกต์สนาม (FETs) โดยการปรับความถี่สวิตชิ่งของทรานซิสเตอร์ ความเร็วของมอเตอร์จะเปลี่ยนไป ความเร็วของมอเตอร์แปรผันโดยการปรับจังหวะเวลาของพัลส์กระแสไฟที่ให้มากับขดลวดต่างๆ ของมอเตอร์
  • ข้อมูลจำเพาะ:

กระแสไฟขาออก: 30A ต่อเนื่อง 40A เป็นเวลา 10 วินาที

ขั้นตอนที่ 5: ระบบควบคุมความเร็วอิเล็กทรอนิกส์ ESC (ESC)

ESC ระบบควบคุมความเร็วแบบอิเล็กทรอนิกส์ (ESC)
ESC ระบบควบคุมความเร็วแบบอิเล็กทรอนิกส์ (ESC)

ขั้นตอนที่ 6: การควบคุมเซอร์โวมอเตอร์ PWM

การควบคุมเซอร์โวมอเตอร์ PWM
การควบคุมเซอร์โวมอเตอร์ PWM

เราจะสร้างเซอร์โว PWM เพื่อดำเนินการกับอินพุตข้อมูล ESC โดยกำหนดช่อง 0 ของ LED_PWM สำหรับ GPIO13 และใช้โพเทนชิออมิเตอร์เพื่อควบคุมการมอดูเลต

สำหรับการจับภาพ เราจะใช้โพเทนชิออมิเตอร์ 10k เป็นตัวแบ่งแรงดันไฟ การจับภาพจะทำบนช่อง ADC2_5 ซึ่งเข้าถึงได้โดย GPIO12

ขั้นตอนที่ 7: การจับภาพแบบอะนาล็อก

การจับภาพแบบอะนาล็อก
การจับภาพแบบอะนาล็อก
การจับภาพแบบอะนาล็อก
การจับภาพแบบอะนาล็อก

การแปลงแอนะล็อกเป็นดิจิทัล

เราจะแปลงค่า AD เป็น PWM

PWM ของเซอร์โวคือ 50Hz ดังนั้นระยะเวลาพัลส์คือ 1/50 = 0.02 วินาทีหรือ 20 มิลลิวินาที

เราต้องดำเนินการอย่างน้อย 1 มิลลิวินาทีถึง 2 มิลลิวินาที

เมื่อ PWM อยู่ที่ 4095 ความกว้างของพัลส์คือ 20 มิลลิวินาที ซึ่งหมายความว่าเราควรไปถึงสูงสุดที่ 4095/10 เพื่อให้ถึง 2 มิลลิวินาที ดังนั้น PWM ควรได้รับ 410 *

และหลังจากอย่างน้อย 1 มิลลิวินาที ดังนั้น 409/2 (หรือ 4095/20) PWM ควรได้รับ 205 *

* ค่าต้องเป็นจำนวนเต็ม

ขั้นตอนที่ 8: วงจร - การเชื่อมต่อ

วงจร - การเชื่อมต่อ
วงจร - การเชื่อมต่อ

ขั้นตอนที่ 9: รหัสที่มา

หัวข้อ

#include // Necessário apenas para o Arduino 1.6.5 e หลัง#include "SSD1306.h" // o mesmo que #include "SSD1306Wire.h" //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #define SDA 4 #define SCL 15 #define RST 16 SSD1306 จอแสดงผล (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "แสดง"

ตัวแปร

const int freq = 50;const int canal_A = 0; const int resolucao = 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); ledcSetup (canal_A, ความถี่, ความละเอียด); ledcAttachPin(pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init(); display.flipScreenVertically(); //Vira a tela verticalmente display.clear(); //ajusta หรือ alinhamento สำหรับ esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //เปลี่ยนฟอนต์สำหรับ Arial 16 display.setFont(ArialMT_Plain_16); }

ห่วง

วงเป็นโมฆะ () { leitura = analogRead (Leitura_A); ciclo_A = แผนที่ (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potencia = แผนที่(leitura, 0, 4095, 0, 100); display.clear();//limpa o buffer ทำ display.drawString(0, 0, String("AD:")); display.drawString(32, 0, สตริง(leitura)); display.drawString(0, 18, สตริง("PWM:")); display.drawString(48, 18, สตริง(ciclo_A)); display.drawString(0, 36, String("Potência:")); display.drawString(72, 36, สตริง(โพเทนเซีย)); display.drawString(98, 36, สตริง("%")); display.display(); //mostra ไม่แสดง }

ขั้นตอนที่ 10: ไฟล์

ดาวน์โหลดไฟล์

ฉันไม่

ไฟล์ PDF

แนะนำ: