Tartalomjegyzék:

Elektromos turbina ESP32: 9 lépésben
Elektromos turbina ESP32: 9 lépésben

Videó: Elektromos turbina ESP32: 9 lépésben

Videó: Elektromos turbina ESP32: 9 lépésben
Videó: Tesla Cybertruck Crash Test - BeamNG.Drive #shorts 2024, Július
Anonim
Image
Image
Demonstráció
Demonstráció

Ma egy elektromos turbináról fogok beszélni az ESP32 -vel. A szerelvénynek van egy része, amelyet 3D -ben nyomtattak ki. Bemutatom az ESP32 PWM funkcióját, amely alkalmas elektromos motorok vezérlésére. Ezt egyenáramú motorban használják. Az MCPWM (Motor Control PWM) működését egy gyakorlati alkalmazásban is bemutatom.

Ebben a projektben ESP32 LoRa -t használtam, és fontosnak tartom itt megjegyezni, hogy ennek a mikrovezérlőnek két blokkja van. Ezek a blokkok három -három motor vezérlésére képesek. Így akár hat motort is vezérelhet PWM -el, mindegyiket függetlenül. Ez azt jelenti, hogy az itt használt vezérlő nem a szabvány (ami valami hasonló az Arduino -hoz). Ehelyett a vezérlés maga a chip, amely nagy rugalmasságot garantál az ESP32 számára a motorvezérlés tekintetében.

1. lépés: Demonstráció

2. lépés: PWM motorvezérlés

PWM motorvezérlés
PWM motorvezérlés
PWM motorvezérlés
PWM motorvezérlés

Általános diagram:

• Az ESP32 MCPWM funkciója különféle típusú villanymotorok vezérlésére használható. Két egysége van.

• Minden egység három PWM kimeneti párral rendelkezik.

• Minden kimeneti A / B pár szinkronizálható a 0, 1 vagy 2 szinkronizálási időzítők egyikével.

• Egy időzítő több PWM kimeneti pár szinkronizálására használható

Teljes diagram:

• Minden egység képes a bemeneti jelek szinkronizációs jelekként történő gyűjtésére is;

• Hibajelek érzékelése túláram vagy motor túlfeszültség esetén;

• Kérjen visszajelzést a CAPTURE SIGNALS, például a motor helyzetéről

3. lépés: Felhasznált erőforrások

Felhasznált források
Felhasznált források

• Jumperek a csatlakoztatáshoz

• Heltec Wifi LoRa 32

• Közös DC motor

• H híd - L298N

• USB kábel

• Protoboard

• Tápegység

4. lépés: ESP 32 Dev Kit - Pinout

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

5. lépés: Turbina szerelés

Turbina szerelés
Turbina szerelés
Turbina szerelés
Turbina szerelés

6. lépés: Áramkör - csatlakozások

Áramkör - Csatlakozások
Áramkör - Csatlakozások

7. lépés: Mérés oszcilloszkóppal

Mérés oszcilloszkóppal
Mérés oszcilloszkóppal

8. lépés: Forráskód

Fejléc

#include // Não é välttäá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 kijelző (0x3c (SDA, SCL, RST); // Instanciando e 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

Beállít

void setup () {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 deklaráció nem jön código mcpwm_gpio_init (MCPWM_UNIT_0, MCPIO_P0M, // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT deklaráció nem jön létre cc migo mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (munkaciklus) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (munkaciklus) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Ciclo de trabalho em nível alto definiálása // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // PWM0A és PWM0B com definiálása konfigurációként}

Funkciók

// 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_swo_cm) (0, 1 ou 2), Operador (A vagy B)); => Desliga o sinal do MCPWM no Operator 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)); => Konfiguráld a PWM -et az A operátor (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 (alto ou baixo)); => define o nível do ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Megjegyzés: 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 (Unidtage, 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 (Define o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // PWM konfigurálása a B operátorhoz (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) mmw_mw // 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}

Hurok

void loop () {// Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); késleltetés (2000); // Para motoros csiszolt_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); késleltetés (2000); // Move o motor no sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); késleltetés (2000); // Para motoros csiszolt_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); késleltetés (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)); késleltetés (200); } // Desaceleração i de 100 a 1 delay (5000); for (int i = 100; i> = 10; i-) {ecsetelt_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); késleltetés (100); } késleltetés (5000); }

9. lépés: Töltse le a fájlokat

PDF

ÉN NEM

RAJZ

Ajánlott: