Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
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
- 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
Vaihe 4: ESC (elektroninen nopeudensäätö)
- 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)
Vaihe 6: 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 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
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