Sommario:
- Passaggio 1: dimostrazione
- Passaggio 2: controllo motore PWM
- Passaggio 3: risorse utilizzate
- Passaggio 4: kit di sviluppo ESP 32 - Pinout
- Passaggio 5: montaggio della turbina
- Passaggio 6: Circuito - Connessioni
- Passaggio 7: misurazione sull'oscilloscopio
- Passaggio 8: codice sorgente
- Passaggio 9: Scarica i file
Video: Turbina elettrica con ESP32: 9 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Oggi parlerò di una turbina elettrica con ESP32. L'assieme ha una parte che è stata stampata in 3D. Presenterò una funzione PWM dell'ESP32 adatta al controllo dei motori elettrici. Questo sarà utilizzato in un motore DC. Dimostrerò anche il funzionamento di questo MCPWM (Motor Control PWM) in un'applicazione pratica.
Ho usato ESP32 LoRa in questo progetto e penso che sia importante notare qui che questo microcontrollore ha due blocchi al suo interno. Questi blocchi sono in grado di controllare tre motori ciascuno. Pertanto, è possibile controllare fino a sei motori con PWM, tutti in modo indipendente. Ciò significa che il controllo che userò qui non è lo standard (che è qualcosa di simile all'Arduino). Il controllo è invece il chip stesso, che garantisce all'ESP32 molta flessibilità rispetto al controllo del motore.
Passaggio 1: dimostrazione
Passaggio 2: controllo motore PWM
Schema generale:
• La funzione MCPWM dell'ESP32 può essere utilizzata per controllare vari tipi di motori elettrici. Dispone di due unità.
• Ogni unità dispone di tre coppie di uscite PWM.
• Ogni coppia di uscite A/B può essere sincronizzata con uno dei tre timer di sincronizzazione 0, 1 o 2.
• Un timer può essere utilizzato per sincronizzare più di una coppia di uscite PWM
Schema completo:
• Ogni unità è anche in grado di raccogliere segnali in ingresso come SEGNI DI SINCRONIZZAZIONE;
• Rilevare SEGNALI DI GUASTO per sovracorrente o sovratensione motore;
• Ottenere feedback con CATTURA SEGNALI, come la posizione del motore
Passaggio 3: risorse utilizzate
• Ponticelli per il collegamento
• Heltec Wifi LoRa 32
• Motore CC comune
• Ponte H - L298N
• Cavo USB
• Scheda prototipi
• Alimentazione elettrica
Passaggio 4: kit di sviluppo ESP 32 - Pinout
Passaggio 5: montaggio della turbina
Passaggio 6: Circuito - Connessioni
Passaggio 7: misurazione sull'oscilloscopio
Passaggio 8: codice sorgente
Intestazione
#include //Não é necessário caso use Arduino IDE#include "driver/mcpwm.h" //inclui a biblioteca "Motor Control PWM" nativa do ESP32 #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" #define GPIO_PWM0A_OUT 12 //Dichiara GPIO 12 come PWM0A #define GPIO_PWM0B_OUT 14 //Dichiara GPIO 14 come PWM0B
Impostare
void setup() { Serial.begin(115200); 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); //mcpwm_gpio_init(unidade PWM 0, saida A, porta GPIO) => Instancia o MCPWM0A no pino GPIO_PWM0A_OUT dichiarata non come fare código mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0A, GPIO_PWM0A_OUT); //mcpwm_gpio_init(unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT dichiarata non come fare código mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0B, GPIO_PWM0B_OUT); mcpwm_config_t pwm_config; pwm_config.frequency = 1000; //frequenza = 500Hz, pwm_config.cmpr_a = 0; //Ciclo de trabalho (ciclo di lavoro) do PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (ciclo di lavoro) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; //Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; //Definisci il ciclo di trabalho em nível alto //Inicia(Unidade 0, Timer 0, Config PWM) mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); //Definisci PWM0A & PWM0B com come configurações acima }
Funzioni
//Funzione della configurazione dell'operatore MCPWM A (Unidade, Timer, Porcentagem (ciclo de trabalho))static void brushed_motor_forward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) { //mcpwm_set_signal_low(0unida 1) (0, 1 o 2), Operatore (A o B)); => Desliga o sinal do MCPWM no Operador B (Definisci o sinal em Baixo) mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //mcpwm_set_duty(unidade PWM(0 o 1), Número do timer(0, 1 o 2), Operador (A o B), Ciclo de trabalho (% do PWM)); => Configura una percentuale do PWM no Operatore A (Ciclo de trabalho) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); //mcpwm_set_duty_tyoe(unidade PWM(0 o 1), Número do timer(0, 1 o 2), Operador (A o B), Nível do ciclo de trabalho (alto o basso)); => definire il livello del ciclo di lavoro (alto o basso) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); //Nota: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" o "mcpwm_set_signal_high" per manter o ciclo de trabalho configurado anteriormente } //Função que configura o MCPWM Do operador B (Unidade, Timer, Porcentagem) static void brushed_motor_backward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) { mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_A); //Desliga o sinal do MCPWM no Operador A (Definisci o sinal em Baixo) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); //Configura una percentuale di PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //define o nível do ciclo de trabalho (alto ou baixo) } //Função que para o MCPWM de ambos os Operadores static void brushed_motor_stop(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) { mcpwm_num_A);MCP_num_PR_set_low_low //Desliga o sinal do MCPWM no Operatore A mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //Desliga o sinal do MCPWM no Operatore B }
Ciclo continuo
void loop() { //Move o motor no sentido horário brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled("50"); ritardo (2000); //Para o motore brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); ritardo (2000); //Move o motor no sentido antihorário brushed_motor_backward(MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled("25"); ritardo (2000); //Para o motore brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); ritardo (2000); // Aceleracao i de 1 a 100 for(int i=10;i<=100;i++){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(Stringa(i)); ritardo(200); } // Desaceleração i de 100 a 1 delay(5000); for(int i=100;i>=10;i--){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(Stringa(i)); ritardo(100); } ritardo(5000); }
Passaggio 9: Scarica i file
IO NO
DISEGNO
Consigliato:
Macchinina elettrica alimentata a radiocomando: 10 passaggi (con immagini)
Macchinina elettrica alimentata da RC: Di: Peter Tran 10ELT1Questo tutorial descrive in dettaglio la teoria, la progettazione, la produzione e il processo di test per un'auto giocattolo elettrica alimentata da telecomando (RC) utilizzando i chip IC HT12E/D. I tutorial descrivono in dettaglio le tre fasi della progettazione dell'auto: Cavo collegato Infrarossi
Torcia elettrica fai-da-te ad alta potenza per terapia con luce rossa 660nm per il dolore: 7 passaggi
Torcia elettrica fai-da-te ad alta potenza per terapia con luce rossa 660nm per il dolore: puoi realizzare una torcia elettrica per terapia con luce rossa fai-da-te ad alta potenza da 660 nm per soli $ 80? Alcune aziende diranno di avere qualche salsa speciale o un dispositivo ad alta potenza, ma anche loro stanno falsificando i loro numeri per farli sembrare impressionanti. Un ragionevolmente d
Touchboard con vernice elettrica e MakeyMakey: 4 passaggi
Touchboard con vernice elettrica e MakeyMakey: un bel dipinto con un effetto sorprendente, perfetto per condurre i bambini a interazioni autocostruite. Combina disegno, TapeArt, pittura e codifica semplice con scratch e alcuni file audio forse autoprodotti
Chitarra elettrica con scatola di sigari: 18 passaggi (con immagini)
Chitarra elettrica per sigari: sebbene la produzione di chitarre abbia fatto molta strada negli ultimi cento anni, c'è una lunga storia che dimostra che non è necessario molto per realizzare una chitarra. Tutto ciò di cui hai bisogno è una scatola per far risuonare il suono, una tavola che funga da tastiera, alcune viti
Serratura elettrica con lettore di impronte digitali e lettore RFID: 11 passaggi (con immagini)
Serratura elettrica con lettore di impronte digitali e lettore RFID: Il progetto è stato progettato per evitare la necessità di utilizzare le chiavi, per raggiungere il nostro obiettivo abbiamo utilizzato un sensore ottico di impronte digitali e un Arduino. Tuttavia ci sono persone che hanno un'impronta digitale illeggibile e il sensore non la riconosce. Poi pensando a