Innholdsfortegnelse:

Elektrisk turbin med ESP32: 9 trinn
Elektrisk turbin med ESP32: 9 trinn

Video: Elektrisk turbin med ESP32: 9 trinn

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

I dag skal jeg diskutere en elektrisk turbin med ESP32. Samlingen har en del som ble skrevet ut i 3D. Jeg vil presentere en PWM -funksjon av ESP32 som er egnet for styring av elektriske motorer. Dette vil bli brukt i en likestrømsmotor. Jeg vil også demonstrere driften av denne MCPWM (Motor Control PWM) i en praktisk applikasjon.

Jeg brukte ESP32 LoRa i dette prosjektet, og jeg tror det er viktig å merke seg at denne mikrokontrolleren har to blokker inne i den. Disse blokkene er i stand til å kontrollere tre motorer hver. Dermed er det mulig å styre opptil seks motorer med PWM, alle uavhengig. Dette betyr at kontrollen jeg vil bruke her ikke er standarden (som er noe som ligner på Arduino). I stedet er kontrollen selve brikken, som garanterer ESP32 mye fleksibilitet med hensyn til motorstyring.

Trinn 1: Demonstrasjon

Trinn 2: PWM motorstyring

PWM motorstyring
PWM motorstyring
PWM motorstyring
PWM motorstyring

Generelt diagram:

• MCPWM -funksjonen til ESP32 kan brukes til å kontrollere forskjellige typer elektriske motorer. Den har to enheter.

• Hver enhet har tre PWM -utgangspar.

• Hvert utgang A / B -par kan synkroniseres med en av tre synkroniseringstidtakere 0, 1 eller 2.

• En timer kan brukes til å synkronisere mer enn ett PWM -utgangspar

Fullstendig diagram:

• Hver enhet er også i stand til å samle inngangssignaler som SYNKRONISERINGSTEGN;

• Oppdag FEILSKILTER for overstrøm eller motoroverspenning;

• Få tilbakemelding med CAPTURE SIGNALS, for eksempel motorens posisjon

Trinn 3: Ressurser brukt

Ressurser brukt
Ressurser brukt

• Gensere for tilkobling

• Heltec Wifi LoRa 32

• Felles DC -motor

• Bro H - L298N

• USB-kabel

• Protoboard

• Strømforsyning

Trinn 4: ESP 32 Dev Kit - Pinout

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

Trinn 5: Turbinemontering

Montering av turbiner
Montering av turbiner
Montering av turbiner
Montering av turbiner

Trinn 6: Krets - Tilkoblinger

Krets - Tilkoblinger
Krets - Tilkoblinger

Trinn 7: Måling på oscilloskop

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

Trinn 8: Kildekode

Overskrift

#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 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

Oppsett

ugyldig oppsett () {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 for 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, GPPWM0, // 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, MCPWM0; mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (driftssyklus) til PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (driftssyklus) til PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // For 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 konfigurasjoner ima

Funksjoner

// 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_ycle) {// mcpwal_ (0, 1 ou 2), Operador (A ou B)); => Desliga o sinal do 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), Número do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% do PWM)); => Konfigurer en porsjon for PWM no 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), Número do timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alt ou baixo)); => definere 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); // Nota: 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 konfigura o MCPWM Do operador B (Unidade), Timo statisk tomrom børstet_motor_ bakover (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); // Configura a porcentagem do PWM no 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 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) // 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}

Løkke

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); // Flytt motoren uten sentido antihorário børstet_motor_ bakover (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_forover (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); forsinkelse (100); } forsinkelse (5000); }

Trinn 9: Last ned filene

PDF

INO

TEGNING

Anbefalt: