Kontrolowany silnik dronowy ESP32 LoRa: 10 kroków
Kontrolowany silnik dronowy ESP32 LoRa: 10 kroków
Anonim
Image
Image
Demonstracja
Demonstracja

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

Wykorzystane zasoby
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

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

Krok 4: ESC (elektroniczna kontrola prędkości)

ESC (elektroniczna kontrola prędkości)
ESC (elektroniczna kontrola prędkości)
ESC (elektroniczna kontrola prędkości)
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)

Elektroniczna kontrola prędkości ESC (ESC)
Elektroniczna kontrola prędkości ESC (ESC)

Krok 6: Sterowanie serwomotorem PWM

Sterowanie silnikiem serwo PWM
Sterowanie silnikiem serwo 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

Przechwytywanie analogowe
Przechwytywanie analogowe
Przechwytywanie analogowe
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

Obwód - połączenia
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

PDF