Obsah:

Elektrická turbína s ESP32: 9 kroků
Elektrická turbína s ESP32: 9 kroků

Video: Elektrická turbína s ESP32: 9 kroků

Video: Elektrická turbína s ESP32: 9 kroků
Video: Котика ударило током, 10 т. Вольт 2024, Červenec
Anonim
Image
Image
Demonstrace
Demonstrace

Dnes budu diskutovat o elektrické turbíně s ESP32. Sestava má část, která byla vytištěna ve 3D. Představím funkci PWM ESP32, která je vhodná pro ovládání elektromotorů. To bude použito ve stejnosměrném motoru. V praktické aplikaci také předvedu fungování tohoto MCPWM (Motor Control PWM).

V tomto projektu jsem použil ESP32 LoRa a myslím, že je důležité poznamenat, že tento mikrokontrolér má uvnitř dva bloky. Tyto bloky jsou schopné ovládat každý tři motory. Díky PWM je tedy možné ovládat až šest motorů, všechny samostatně. To znamená, že ovládání, které zde použiji, není standardní (což je něco podobného jako Arduino). Místo toho je řízením samotný čip, který zaručuje ESP32 velkou flexibilitu s ohledem na ovládání motoru.

Krok 1: Ukázka

Krok 2: Řízení motoru PWM

Řízení motoru PWM
Řízení motoru PWM
Řízení motoru PWM
Řízení motoru PWM

Obecný diagram:

• Funkci MCPWM ESP32 lze použít k ovládání různých typů elektromotorů. Má dvě jednotky.

• Každá jednotka má tři výstupní páry PWM.

• Každý pár A / B výstupů lze synchronizovat s jedním ze tří synchronizačních časovačů 0, 1 nebo 2.

• Jeden časovač lze použít k synchronizaci více než jednoho páru výstupů PWM

Celý diagram:

• Každá jednotka je také schopna sbírat vstupní signály jako SYNCHRONIZAČNÍ ZNAKY;

• Detekovat FAULT SIGNS pro nadproud nebo přepětí motoru;

• Získejte zpětnou vazbu pomocí CAPTURE SIGNALS, jako je poloha motoru

Krok 3: Použité zdroje

Použité zdroje
Použité zdroje

• Propojky pro připojení

• Heltec Wifi LoRa 32

• Společný stejnosměrný motor

• Most H - L298N

• USB kabel

• Protoboard

• Zdroj napájení

Krok 4: ESP 32 Dev Kit - Pinout

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

Krok 5: Montáž turbíny

Montáž turbíny
Montáž turbíny
Montáž turbíny
Montáž turbíny

Krok 6: Okruh - připojení

Obvod - připojení
Obvod - připojení

Krok 7: Měření na osciloskopu

Měření na osciloskopu
Měření na osciloskopu

Krok 8: Zdrojový kód

Záhlaví

#include // Potřebujete také použít Arduino IDE #include "driver/mcpwm.h" // inclis 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 displej SSD1306 (0x3c (SDA, SCL, RST); // Instalační možnosti a zobrazení "zobrazení" #define GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

Založit

neplatné nastavení () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // iusta o alinhamento para a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // iusta 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, MCPWM0A, GPC_MO, // 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, MCPWM0B, GPC mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frekvenceência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (pracovní cyklus) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (pracovní cyklus) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Definujte ciclo de trabalho em nível altto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Definujte PWM0A a PWM0B com jako konfigurační acima}

Funkce

// 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) (0_ccwm (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)); => Konfigurace a konfigurace PWM bez 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)); => definujte o nível do ciclo de trabalho (alt ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Poznámka: 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, Timer, statická prázdnota // 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); // Konfigurace a konfigurace PWM ne Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // definujte počet cyklů tracalho (také o baixo)} // Funkce pro MCPWM de Ambos os Operátory statická prázdnota brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num), mcpwm_set // 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}

Smyčka

void loop () {// Přesun o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); zpoždění (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); zpoždění (2000); // Pohyb motoru bez antihorário kartáčovaného_motoru_zpět (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); zpoždění (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); zpoždění (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)); zpoždění (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 (String (i)); zpoždění (100); } zpoždění (5 000); }

Krok 9: Stáhněte si soubory

PDF

INO

VÝKRES

Doporučuje: