ESP32 LoRa -ohjattu drone -moottori: 10 vaihetta
ESP32 LoRa -ohjattu drone -moottori: 10 vaihetta
Anonim
Image
Image
Esittely
Esittely

Tänään keskustelemme drone -moottoreista, joita usein kutsutaan "harjattomiksi" moottoreiksi. Niitä käytetään laajalti ilmailumallinnuksessa, lähinnä droneissa, voiman ja suuren pyörimisen vuoksi. Opimme harjattoman moottorin ohjaamisesta ESC: n ja ESP32: n avulla, analogisen aktivoinnin suorittamisesta ESC: lle sisäisen LED_PWM -ohjaimen avulla ja potentiometrin avulla moottorin nopeuden muuttamisesta.

Vaihe 1: Esittely

Vaihe 2: Käytetyt resurssit

Käytetyt resurssit
Käytetyt resurssit
  • Puserot liittämistä varten
  • Wifi LoRa 32
  • ESC-30A
  • Harjaton A2212 / 13t -moottori
  • USB kaapeli
  • Potentiometri ohjaukseen
  • Protoboard
  • Virtalähde

Vaihe 3: Wifi LoRa 32- Pinout

Wifi LoRa 32- Pinout
Wifi LoRa 32- Pinout

Vaihe 4: ESC (elektroninen nopeudensäätö)

ESC (elektroninen nopeudensäädin)
ESC (elektroninen nopeudensäädin)
ESC (elektroninen nopeudensäädin)
ESC (elektroninen nopeudensäädin)
  • Elektroninen nopeudensäädin
  • Elektroninen piiri sähkömoottorin nopeuden säätämiseksi.
  • Ohjataan tavallisella 50 Hz: n PWM -servo -ohjaimella.
  • Se vaihtelee kenttätransistoriverkoston (FET) verkon kytkentätaajuutta. Säätämällä transistorien kytkentätaajuutta muutetaan moottorin nopeutta. Moottorin nopeutta vaihdellaan säätämällä mukana tulevien virtapulssien ajoitus moottorin eri käämien mukaan.
  • Tekniset tiedot:

Lähtövirta: 30A jatkuva, 40A 10 sekunnin ajan

Vaihe 5: ESC: n elektroninen nopeudensäädin (ESC)

ESC -elektroninen nopeudensäädin (ESC)
ESC -elektroninen nopeudensäädin (ESC)

Vaihe 6: PWM -servomoottorin ohjaus

PWM -servomoottorin ohjaus
PWM -servomoottorin ohjaus

Luomme PWM -servon, joka toimii ESC -tietojen syöttämisen avulla ohjaamalla GPIO13: n LED_PWM -kanavan 0, ja käytä potentiometriä modulaation ohjaamiseen.

Tallennuksessa käytämme 10k: n potentiometriä jännitteenjakajana. Tallennus suoritetaan kanavalla ADC2_5, johon GPIO12 pääsee.

Vaihe 7: Analoginen sieppaus

Analoginen sieppaus
Analoginen sieppaus
Analoginen sieppaus
Analoginen sieppaus

Analoginen digitaalimuunnos

Muunnamme AD -arvot PWM: ksi.

Servon PWM on 50 Hz, joten pulssijakso on 1/50 = 0,02 sekuntia tai 20 millisekuntia.

Meidän on toimittava vähintään 1–2 millisekunnissa.

Kun PWM on 4095, pulssin leveys on 20 millisekuntia, eli meidän pitäisi saavuttaa maksimiarvo 4095/10 saavuttaaksesi 2 millisekuntia, joten PWM: n pitäisi saada 410 *.

Ja vähintään 1 millisekunnin kuluttua, joten 409/2 (tai 4095/20), PWM: n pitäisi vastaanottaa 205 *.

* Arvojen on oltava kokonaislukuja

Vaihe 8: Piiri - liitännät

Piiri - Liitännät
Piiri - Liitännät

Vaihe 9: Lähdekoodi

Otsikko

#include // Necessário apenas para tai Arduino 1.6.5 e posterior #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 -näyttö (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display"

Muuttujat

const int taajuus = 50; const int kanava_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potcia = 0; int leitura = 0; int ciclo_A = 0;

Perustaa

void setup () {pinMode (pin_Atuacao_A, OUTPUT); ledcSetup (kanava_A, taajuus, resolukao); ledcAttachPin (pin_Atuacao_A, canal_A); ledcWrite (canal_A, ciclo_A); display.init (); display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajota tai alinhamento esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para Arial 16 display.setFont (ArialMT_Plain_16); }

Silmukka

tyhjä silmukka () {leitura = analoginenLue (Leitura_A); ciclo_A = kartta (leitura, 0, 4095, 205, 410); ledcWrite (canal_A, ciclo_A); potcia = kartta (leitura, 0, 4095, 0, 100); display.clear (); // limpa o puskuri näyttää display.drawString (0, 0, String ("AD:")); display.drawString (32, 0, merkkijono (leitura)); display.drawString (0, 18, merkkijono ("PWM:")); display.drawString (48, 18, merkkijono (ciclo_A)); display.drawString (0, 36, merkkijono ("Potência:")); display.drawString (72, 36, merkkijono (potenssi)); display.drawString (98, 36, merkkijono ("%")); display.display (); // Mostra no display}

Vaihe 10: Tiedostot

Lataa tiedostot

INO

PDF