Spisu treści:
- Krok 1: Demonstracja
- Krok 2: Wykorzystane zasoby
- Krok 3: Wifi LoRa 32- Pinout
- Krok 4: ESC (elektroniczna kontrola prędkości)
- Krok 5: Elektroniczna kontrola prędkości ESC (ESC)
- Krok 6: Sterowanie serwomotorem PWM
- Krok 7: Przechwytywanie analogowe
- Krok 8: Obwód - połączenia
- Krok 9: Kod źródłowy
- Krok 10: Pliki
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Dzisiaj mówimy o silnikach dronów, często nazywanych silnikami „bezszczotkowymi”. Są szeroko stosowane w modelarstwie lotniczym, głównie w dronach, ze względu na ich moc i dużą rotację. Dowiemy się, jak sterować silnikiem bezszczotkowym za pomocą ESC i ESP32, wykonywać analogiczne uruchamianie na ESC za pomocą wewnętrznego kontrolera LED_PWM oraz używać potencjometru do zmiany prędkości silnika.
Krok 1: Demonstracja
Krok 2: Wykorzystane zasoby
- Zworki do połączenia
- Wi-Fi LoRa 32
- ESC-30A
- Silnik bezszczotkowy A2212 / 13t
- Kabel USB
- Potencjometr do sterowania
- Płyta prototypowa
- Zasilacz
Krok 3: Wifi LoRa 32- Pinout
Krok 4: ESC (elektroniczna kontrola prędkości)
- Elektroniczny regulator prędkości
- Układ elektroniczny do sterowania prędkością silnika elektrycznego.
- Sterowanie ze standardowego serwomechanizmu 50Hz PWM.
- Zmienia szybkość przełączania sieci tranzystorów polowych (FET). Regulując częstotliwość przełączania tranzystorów, zmienia się prędkość silnika. Prędkość silnika jest zmieniana poprzez dostosowanie taktowania dostarczanych impulsów prądowych do różnych uzwojeń silnika.
- Dane techniczne:
Prąd wyjściowy: 30A ciągły, 40A przez 10 sekund
Krok 5: Elektroniczna kontrola prędkości ESC (ESC)
Krok 6: Sterowanie serwomotorem PWM
Stworzymy serwo PWM do działania na wejściu danych ESC, kierując kanał 0 LED_PWM dla GPIO13 i użyj potencjometru do sterowania modulacją.
Do przechwytywania użyjemy potencjometru 10k jako dzielnika napięcia. Przechwytywanie zostanie wykonane na kanale ADC2_5, dostępnym przez GPIO12.
Krok 7: Przechwytywanie analogowe
Konwersja analogowo-cyfrowa
Przekonwertujemy wartości AD na PWM.
PWM serwa wynosi 50 Hz, więc okres impulsu wynosi 1/50 = 0,02 sekundy lub 20 milisekund.
Musimy działać w ciągu co najmniej 1 milisekundy do 2 milisekund.
Gdy PWM wynosi 4095, szerokość impulsu wynosi 20 milisekund, co oznacza, że powinniśmy osiągnąć maksimum przy 4095/10, aby osiągnąć 2 milisekundy, więc PWM powinno otrzymać 410 *.
A po co najmniej 1 milisekundzie, czyli 409/2 (lub 4095/20), PWM powinien otrzymać 205*.
* Wartości muszą być liczbami całkowitymi
Krok 8: Obwód - połączenia
Krok 9: Kod źródłowy
nagłówek
#include // Niezbędne dla Arduino 1.6.5 i tylne#include "SSD1306.h" // do wiadomości #include "SSD1306Wire.h" //OLED_SDA -- GPIO4 //OLED_SCL -- GPIO15 //OLED_RST -- GPIO16 #definiuj SDA 4 #definiuj SCL 15 #definiuj wyświetlacz RST 16 SSD1306 (0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "wyświetl"
Zmienne
const int częst = 50;stała int kanał_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potencja = 0; wewn. leitura = 0; int ciclo_A = 0;
Ustawiać
void setup(){ pinMode(pin_Atuacao_A, WYJŚCIE); ledcSetup(canal_A, freq, resolucao); ledcAttachPin(pin_Atuacao_A, canal_A); ledcWrite(kanał_A, ciclo_A); display.init(); display.flipScreenPionowo(); //Przejdź do ekranu pionowego display.clear(); //dostosuj ustawienie do wyświetlania.setTextAlignment(TEXT_ALIGN_LEFT); //ustaw czcionkę dla Arial 16 display.setFont(ArialMT_Plain_16); }
Pętla
void loop() { leitura = analogRead(Leitura_A); ciclo_A = mapa(leitura, 0, 4095, 205, 410); ledcWrite(kanał_A, ciclo_A); potencia = mapa(leitura, 0, 4095, 0, 100); display.clear();//limpa o bufor wyświetl 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("Potencjał:")); display.drawString(72, 36, String(potencja)); display.drawString(98, 36, String("%")); display.display(); //most bez wyświetlania }
Krok 10: Pliki
Pobierz pliki
JA NIE