Indholdsfortegnelse:

Elektrisk turbine med ESP32: 9 trin
Elektrisk turbine med ESP32: 9 trin

Video: Elektrisk turbine med ESP32: 9 trin

Video: Elektrisk turbine med ESP32: 9 trin
Video: Колибри Т32 - маленький турбореактивный двигатель 2024, November
Anonim
Image
Image
Demonstration
Demonstration

I dag vil jeg diskutere en elektrisk turbine med ESP32. Samlingen har en del, der blev trykt i 3D. Jeg vil præsentere en PWM -funktion af ESP32, der er egnet til styring af elektriske motorer. Dette vil blive brugt i en DC -motor. Jeg vil også demonstrere, hvordan denne MCPWM (Motor Control PWM) fungerer i en praktisk anvendelse.

Jeg brugte ESP32 LoRa i dette projekt, og jeg synes, det er vigtigt at bemærke her, at denne mikrokontroller har to blokke inde i sig. Disse blokke er i stand til at styre tre motorer hver. Således er det muligt at styre op til seks motorer med PWM, alle uafhængigt. Dette betyder, at den kontrol, jeg vil bruge her, ikke er standarden (hvilket ligner noget Arduino). I stedet er kontrollen selve chippen, hvilket garanterer ESP32 en masse fleksibilitet med hensyn til motorstyring.

Trin 1: Demonstration

Trin 2: PWM -motorstyring

PWM motorstyring
PWM motorstyring
PWM motorstyring
PWM motorstyring

Generelt diagram:

• MCPWM -funktionen i ESP32 kan bruges til at styre forskellige typer elmotorer. Det har to enheder.

• Hver enhed har tre PWM -udgangspar.

• Hvert output A / B -par kan synkroniseres med en af tre synkroniseringstimere 0, 1 eller 2.

• En timer kan bruges til at synkronisere mere end et PWM -udgangspar

Fuld diagram:

• Hver enhed er også i stand til at indsamle indgangssignaler som SYKRONISERINGSTEKNE;

• Registrer FEJLSIGNE for overstrøm eller motoroverspænding;

• Få feedback med CAPTURE SIGNALS, f.eks. Motorens position

Trin 3: Brugte ressourcer

Ressourcer brugt
Ressourcer brugt

• Jumpere til forbindelse

• Heltec Wifi LoRa 32

• Fælles DC -motor

• Bro H - L298N

• USB -kabel

• Protoboard

• Strømforsyning

Trin 4: ESP 32 Dev Kit - Pinout

ESP 32 Dev Kit - Pinout
ESP 32 Dev Kit - Pinout

Trin 5: Turbinemontering

Montering af turbine
Montering af turbine
Montering af turbine
Montering af turbine

Trin 6: Kredsløb - Forbindelser

Kredsløb - Forbindelser
Kredsløb - Forbindelser

Trin 7: Måling på oscilloskop

Måling på oscilloskop
Måling på oscilloskop

Trin 8: Kildekode

Header

#include // Não é nødvendá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 and ajustando os pinos do objeto "display" #define GPIO_PWM0A_OUT 12 // Declara GPIO 12 com PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

Opsætning

ugyldig opsætning () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para 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 declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0; // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT declarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0; mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (driftscyklus) til PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (driftscyklus) til PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Til MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Definer ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Definer PWM0A & PWM0B com som konfigurações acima}

Funktioner

// Função que configura o MCPWM operador 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_ (0, 1 ou 2), Operador (A ou B)); => Desliga o sinal to MCPWM no Operador B (Define o sinal em Baixo) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (unidade PWM (0 ou 1), Numero do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => Konfigurer en porcentagem til PWM ingen Operador A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); // mcpwm_set_duty_tyoe (unidade PWM (0 ou 1), Numero do timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alt ou baixo)); => definer o nível do ciclo de trabalho (alt eller baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Bemærk: Chame essa função toda vez que for chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter o ciclo de trabalho configurado anteriormente} // Função que configura o MCPWM Do operador B (Unidade), Timo statisk hulrum 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 (Define o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Konfigurer en porcentagem til PWM ingen Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // definer o nível do ciclo de trabalho (alto 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) // Desliga o sinal do MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal do MCPWM no Operador B}

Sløjfe

void loop () {// Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); forsinkelse (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); forsinkelse (2000); // Flyt til motoren uden sentido antihorário børstet_motor_bagud (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); forsinkelse (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); forsinkelse (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 (String (i)); forsinkelse (200); } // Desaceleração i de 100 a 1 forsinkelse (5000); for (int i = 100; i> = 10; i-) {børstet_motor_ fremad (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); forsinkelse (100); } forsinkelse (5000); }

Trin 9: Download filerne

PDF

INO

TEGNING

Anbefalede: