Obsah:
- Krok 1: Ukázka
- Krok 2: Řízení motoru PWM
- Krok 3: Použité zdroje
- Krok 4: ESP 32 Dev Kit - Pinout
- Krok 5: Montáž turbíny
- Krok 6: Okruh - připojení
- Krok 7: Měření na osciloskopu
- Krok 8: Zdrojový kód
- Krok 9: Stáhněte si soubory
Video: Elektrická turbína s ESP32: 9 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
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
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
• 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
Krok 5: Montáž turbíny
Krok 6: Okruh - připojení
Krok 7: 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
INO
VÝKRES
Doporučuje:
Elektrická kytara z doutníkového boxu: 18 kroků (s obrázky)
Elektrická krabička z doutníkového boxu: I když výroba kytar ušla za posledních sto let dlouhou cestu, existuje dlouhá historie, která ukazuje, že k výrobě kytary toho moc nepotřebujete. Vše, co potřebujete, je krabice pro rezonování zvuku, prkno, které by fungovalo jako hmatník, několik šroubů
Elektrická svíčka na svíčku: 8 kroků (s obrázky)
Elektrická svíčka poháněná svíčkou: Poté, co jsem viděl novinové zprávy o hurikánu Sandy a slyšel utrpení, kterým prošla celá moje rodina a přátelé v New Yorku a New Jersey, mě to přimělo přemýšlet o vlastní nouzové připravenosti. San Francisco - koneckonců - sedí na vrcholu velmi
Elektrická spotřeba a monitorování životního prostředí přes Sigfox: 8 kroků
Elektrická spotřeba a monitorování životního prostředí prostřednictvím Sigfox: Popis Tento projekt vám ukáže, jak získat elektrickou spotřebu místnosti na třífázové distribuci energie a poté ji odesílat na server pomocí sítě Sigfox každých 10 minut. Jak změřit výkon? Máme tři proudové kleště z
Piezoelektrická nanovlákenná elektrická obuv PROTOTYP č. 1: 8 kroků
Piezoelektrická nanovlákenná elektrická obuv PROTOTYP č. 1: Nanotechnologie nám může pomoci vyrábět zelenou energii prostřednictvím vědy o piezoelektrice, což je v podstatě elektřina vyráběná mechanickým namáháním (práce odvedená gravitací na podrážkách vašich bot). Doufám, že v budoucnu přijdu s
Elektrická svítilna: 8 kroků
Elektrická svítilna: Pochodeň je přenosné ruční elektrické světlo. Typická svítilna se skládá ze světelného zdroje namontovaného v reflektoru, baterie, vodičů a vypínače. Zdrojem světla je LED, tj. Světlo emitující dioda. V LED je delší noha kladný konec a shor