Sommario:
- Passaggio 1: dimostrazione
- Passaggio 2: risorse utilizzate
- Passaggio 3: Wifi LoRa 32- Pinout
- Passaggio 4: ESC (controllo elettronico della velocità)
- Passaggio 5: controllo elettronico della velocità ESC (ESC)
- Passaggio 6: controllo del servomotore PWM
- Passaggio 7: acquisizione analogica
- Passaggio 8: Circuito - Connessioni
- Passaggio 9: codice sorgente
- Passaggio 10: file
Video: Motore drone ESP32 LoRa controllato: 10 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Oggi parliamo di motori per droni, spesso chiamati motori "brushless". Sono ampiamente utilizzati nell'aeromodellismo, principalmente nei droni, grazie alla loro potenza e all'elevata rotazione. Impareremo a controllare un motore brushless utilizzando ESC ed ESP32, eseguendo un'attuazione analogica sull'ESC utilizzando il controller LED_PWM interno e utilizzando un potenziometro per modificare la velocità del motore.
Passaggio 1: dimostrazione
Passaggio 2: risorse utilizzate
- Ponticelli per il collegamento
- Wi-Fi LoRa 32
- ESC-30A
- Motore senza spazzole A2212 / 13t
- cavo USB
- Potenziometro per il controllo
- Protoboard
- Alimentazione elettrica
Passaggio 3: Wifi LoRa 32- Pinout
Passaggio 4: ESC (controllo elettronico della velocità)
- Regolatore di velocità elettronico
- Circuito elettronico per il controllo della velocità di un motore elettrico.
- Controllato da un servocomando PWM standard a 50 Hz.
- Varia la velocità di commutazione di una rete di transistor ad effetto di campo (FET). Regolando la frequenza di commutazione dei transistor, viene modificata la velocità del motore. La velocità del motore viene variata regolando la temporizzazione degli impulsi di corrente forniti ai vari avvolgimenti del motore.
- Specifiche:
Corrente di uscita: 30 A continui, 40 A per 10 secondi
Passaggio 5: controllo elettronico della velocità ESC (ESC)
Passaggio 6: controllo del servomotore PWM
Creeremo un servo PWM per agire sull'ingresso dei dati ESC dirigendo il canale 0 del LED_PWM per il GPIO13 e utilizzeremo un potenziometro per controllare la modulazione.
Per la cattura utilizzeremo un potenziometro da 10k come divisore di tensione. La cattura verrà effettuata sul canale ADC2_5, accessibile da GPIO12.
Passaggio 7: acquisizione analogica
Conversione da analogico a digitale
Convertiremo i valori di AD in PWM.
Il PWM del servo è 50Hz, quindi il periodo dell'impulso è 1/50 = 0,02 secondi o 20 millisecondi.
Dobbiamo agire in almeno 1 millisecondo a 2 millisecondi.
Quando il PWM è a 4095, l'ampiezza dell'impulso è di 20 millisecondi, il che significa che dovremmo raggiungere il massimo a 4095/10 per raggiungere 2 millisecondi, quindi il PWM dovrebbe ricevere 410 *.
E dopo almeno 1 millisecondo, quindi 409/2 (o 4095/20), il PWM dovrebbe ricevere 205 *.
* I valori devono essere interi
Passaggio 8: Circuito - Connessioni
Passaggio 9: codice sorgente
Intestazione
#include // Necessário apenas para o 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 display(0x3c, SDA, SCL, RST); //Instanciando e ajustando os pinos do objeto "display"
Variabili
const int freq = 50;const int canal_A = 0; const int resolucao = 12; const int pin_Atuacao_A = 13; const int Leitura_A = 12; int potenza = 0; int leitura = 0; int ciclo_A = 0;
Impostare
void setup(){ pinMode(pin_Atuacao_A, OUTPUT); ledcSetup(canale_A, freq, resolucao); ledcAttachPin(pin_Atuacao_A, canal_A); ledcWrite(canale_A, ciclo_A); display.init(); display.flipScreenVerticalmente(); //Vira una tela verticalmente display.clear(); //aggiusta o modifica per un'esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //aggiusta una fonte per Arial 16 display.setFont(ArialMT_Plain_16); }
Ciclo continuo
void loop() { leitura = analogRead(Leitura_A); ciclo_A = map(leitura, 0, 4095, 205, 410); ledcWrite(canale_A, ciclo_A); potenza = map(leitura, 0, 4095, 0, 100); display.clear();//limpa o buffer 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("Potenza:")); display.drawString(72, 36, String(potenza)); display.drawString(98, 36, String("%")); display.display(); //mostra nessuna visualizzazione }
Passaggio 10: file
Scarica i file
IO NO
Consigliato:
Motore passo-passo controllato da motore passo-passo senza microcontrollore!: 6 passaggi
Motore passo-passo controllato da motore passo-passo senza microcontrollore!: In questo rapido Instructable, creeremo un semplice controller per motore passo-passo utilizzando un motore passo-passo. Questo progetto non richiede circuiti complessi o un microcontrollore. Quindi, senza ulteriori indugi, iniziamo
Motore passo-passo controllato da motore passo-passo senza microcontrollore (V2): 9 passaggi (con immagini)
Motore passo-passo controllato da motore passo-passo senza microcontrollore (V2): in uno dei miei precedenti Instructables, ti ho mostrato come controllare un motore passo-passo usando un motore passo-passo senza microcontrollore. È stato un progetto veloce e divertente, ma è arrivato con due problemi che verranno risolti in questo Instructable. Quindi, spirito
Motore passo-passo controllato da motore passo-passo - Motore passo-passo come encoder rotativo: 11 passaggi (con immagini)
Motore passo-passo controllato da motore passo-passo | Motore passo-passo come encoder rotativo: hai un paio di motori passo-passo in giro e vuoi fare qualcosa? In questo Instructable, utilizziamo un motore passo-passo come encoder rotativo per controllare la posizione di un altro motore passo-passo utilizzando un microcontrollore Arduino. Quindi, senza ulteriori indugi, ge
Come far funzionare il motore DC brushless Drone Quadcopter utilizzando il controller di velocità del motore brushless HW30A e il servo tester: 3 passaggi
Come eseguire il motore DC brushless Drone Quadcopter utilizzando il controller di velocità del motore brushless HW30A e il servo tester: Descrizione: questo dispositivo è chiamato Servo Motor Tester che può essere utilizzato per far funzionare il servomotore semplicemente collegandolo al servomotore e alimentandolo. Il dispositivo può essere utilizzato anche come generatore di segnale per il regolatore di velocità elettrico (ESC), quindi è possibile
Come controllare il motore DC brushless Drone Quadcopter (tipo 3 fili) utilizzando il controller di velocità del motore HW30A e Arduino UNO: 5 passaggi
Come controllare il motore DC brushless Drone Quadcopter (tipo 3 fili) utilizzando il controller di velocità del motore HW30A e Arduino UNO: Descrizione: Il controller di velocità del motore HW30A può essere utilizzato con batterie LiPo da 4-10 NiMH/NiCd o 2-3 celle. Il BEC è funzionale con un massimo di 3 celle LiPo. Può essere utilizzato per controllare la velocità del motore Brushless DC (3 fili) con un massimo fino a 12Vdc.Specific