Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Hôm nay chúng ta sẽ thảo luận về động cơ bay không người lái, thường được gọi là động cơ "không chổi than". Chúng được sử dụng rộng rãi trong aeromodelling, chủ yếu trong máy bay không người lái, do sức mạnh và khả năng quay cao của chúng. Chúng ta sẽ tìm hiểu về cách điều khiển động cơ không chổi than bằng ESC và ESP32, thực hiện hành động tương tự trên ESC bằng bộ điều khiển LED_PWM bên trong và sử dụng chiết áp để thay đổi tốc độ động cơ.
Bước 1: Trình diễn
Bước 2: Tài nguyên được sử dụng
- Jumper để kết nối
- Wifi LoRa 32
- ESC-30A
- Động cơ A2212 / 13t không chổi than
- cáp USB
- Chiết áp để kiểm soát
- Protoboard
- Nguồn cấp
Bước 3: Wifi LoRa 32- Sơ đồ chân
Bước 4: ESC (Kiểm soát tốc độ điện tử)
- Bộ điều khiển tốc độ điện tử
- Mạch điện tử để điều khiển tốc độ của động cơ điện.
- Được điều khiển từ bộ điều khiển servo PWM 50Hz tiêu chuẩn.
- Nó thay đổi tốc độ chuyển mạch của một mạng bóng bán dẫn hiệu ứng trường (FET). Bằng cách điều chỉnh tần số chuyển đổi của các bóng bán dẫn, tốc độ động cơ được thay đổi. Tốc độ động cơ thay đổi bằng cách điều chỉnh thời gian của các xung dòng điện được cung cấp cho các cuộn dây khác nhau của động cơ.
- Thông số kỹ thuật:
Dòng điện đầu ra: 30A liên tục, 40A trong 10 giây
Bước 5: Kiểm soát tốc độ điện tử ESC (ESC)
Bước 6: Điều khiển động cơ Servo PWM
Chúng tôi sẽ tạo một servo PWM để hoạt động trên đầu vào dữ liệu ESC bằng cách chuyển hướng kênh 0 của LED_PWM cho GPIO13 và sử dụng một chiết áp để điều khiển điều chế.
Để chụp, chúng tôi sẽ sử dụng một chiết áp 10k làm bộ chia điện áp. Quá trình chụp sẽ được thực hiện trên kênh ADC2_5, có thể truy cập bằng GPIO12.
Bước 7: Chụp tương tự
Chuyển đổi tương tự sang kỹ thuật số
Chúng tôi sẽ chuyển đổi các giá trị của AD thành PWM.
PWM của servo là 50Hz, do đó, chu kỳ xung là 1/50 = 0,02 giây hoặc 20 mili giây.
Chúng ta cần hành động trong ít nhất 1 phần nghìn giây đến 2 phần nghìn giây.
Khi PWM ở 4095, độ rộng xung là 20 mili giây, nghĩa là chúng ta nên đạt mức tối đa ở 4095/10 để đạt 2 mili giây, do đó PWM sẽ nhận được 410 *.
Và sau ít nhất 1 mili giây, do đó 409/2 (hoặc 4095/20), PWM sẽ nhận được 205 *.
* Giá trị phải là số nguyên
Bước 8: Mạch - Kết nối
Bước 9: Mã nguồn
Tiêu đề
#include // Các vượn người ở Arduino 1.6.5 e sau # bao gồm "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 Màn hình SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"
Biến
const int freq = 50; const int kênh_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;
Cài đặt
void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (channel_A, freq, Resolutionucao); ledcAttachPin (pin_Atuacao_A, kênh_A); ledcWrite (kênh_A, ciclo_A); display.init (); display.flipScreenVerently (); // Vira một 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); }
Vòng
void loop () {leitura = analogRead (Leitura_A); ciclo_A = map (leitura, 0, 4095, 205, 410); ledcWrite (kênh_A, ciclo_A); potencia = bản đồ (leitura, 0, 4095, 0, 100); display.clear (); // limpa o vùng đệm do display 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, Chuỗi (potencia)); display.drawString (98, 36, String ("%")); display.display (); // mostra no display}
Bước 10: Tập tin
Tải xuống các tệp
NS