Obsah:
- Krok 1: Ukážka
- Krok 2: Ovládanie motora PWM
- Krok 3: Použité zdroje
- Krok 4: Vývojová sada ESP 32 - Pinout
- Krok 5: Montáž na turbínu
- Krok 6: Okruh - pripojenia
- Krok 7: Meranie na osciloskope
- Krok 8: Zdrojový kód
- Krok 9: Stiahnite si súbory
Video: Elektrická turbína s ESP32: 9 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Dnes budem diskutovať o elektrickej turbíne s ESP32. Zostava má časť, ktorá bola vytlačená v 3D. Predstavím funkciu PWM ESP32, ktorá je vhodná na ovládanie elektromotorov. Toto sa použije v jednosmernom motore. Tiež predvediem fungovanie tohto MCPWM (Motor Control PWM) v praktickej aplikácii.
V tomto projekte som použil ESP32 LoRa a myslím si, že je dôležité poznamenať, že tento mikrokontrolér má vo svojom vnútri dva bloky. Tieto bloky sú schopné ovládať každý tri motory. Vďaka PWM je teda možné ovládať až šesť motorov, všetky nezávisle. To znamená, že ovládanie, ktoré tu použijem, nie je štandardné (čo je niečo podobné ako Arduino). Namiesto toho je riadením samotný čip, ktorý zaručuje ESP32 veľkú flexibilitu, pokiaľ ide o ovládanie motora.
Krok 1: Ukážka
Krok 2: Ovládanie motora PWM
Všeobecný diagram:
• Funkciu MCPWM ESP32 je možné použiť na ovládanie rôznych typov elektromotorov. Má dve jednotky.
• Každá jednotka má tri výstupné páry PWM.
• Každý pár A / B výstupov je možné synchronizovať s jedným z troch synchronizačných časovačov 0, 1 alebo 2.
• Jeden časovač je možné použiť na synchronizáciu viac ako jedného páru výstupov PWM
Celý diagram:
• Každá jednotka je tiež schopná zbierať vstupné signály ako SYNCHRONIZAČNÉ ZNAKY;
• Zistiť FAULT SIGNS pre nadprúd alebo prepätie motora;
• Získajte spätnú väzbu pomocou CAPTURE SIGNALS, ako je napríklad poloha motora
Krok 3: Použité zdroje
• Spojky pre pripojenie
• Heltec Wifi LoRa 32
• Spoločný jednosmerný motor
• Most H - L298N
• USB kábel
• Protoboard
• Zdroj
Krok 4: Vývojová sada ESP 32 - Pinout
Krok 5: Montáž na turbínu
Krok 6: Okruh - pripojenia
Krok 7: Meranie na osciloskope
Krok 8: Zdrojový kód
Hlavička
#include // Potrebujete preto použiť Arduino IDE #include "driver/mcpwm.h" // vrátane biblioteky "Motor Control PWM" nativa do ESP32 #include // Potrebné 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); // Inštalácia a ukážka „zobrazenia“#define GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B
Nastaviť
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 pre 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, GPM // 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, GPM mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frekvencia = 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 ako konfiguráciu acima}
Funkcie
// Funkcia konfigurácie operátora MCPWM A (Unidade, Timer, Porcentagem (ciclo de trabalho)) static prázdnota brushed_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) (0 (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)); => Konfigurácia a konfigurácia PWM bez operátora 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: Základné rady pre chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter alebo cyklo konfigurácia konfigurácie predného zariadenia} // Funkcia konfigurácie MCPWM Vykonať operátora B (Unidade, Timer) statická prázdnota // Desliga o sinal do MCPWM no Operador A (Definujte o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Konfigurácia a konfigurácia PWM bez operátora B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // definovanie počtu cyklov trabalho (alto ou baixo)} // Funcaoo que para o MCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num); mcpwm_set // Desliga do sinal to MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal do MCPWM no Operador B}
Slučka
void loop () {// Pohyb motora bez sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50,0); oled ("50"); oneskorenie (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); oneskorenie (2000); // Pohyb motora bez protisvetla kartáčovaný_motor_zad (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); oneskorenie (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); oneskorenie (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 (Reťazec (i)); oneskorenie (200); } // Desaceleração de de 100 a 1 delay (5000); pre (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Reťazec (i)); oneskorenie (100); } oneskorenie (5 000); }
Krok 9: Stiahnite si súbory
INO
VÝKRES
Odporúča:
Elektrická gitara z cigaretového boxu: 18 krokov (s obrázkami)
Elektrická cigaretová boxová gitara: Napriek tomu, že výroba gitár prešla za posledných sto rokov kus cesty, existuje dlhá história, ktorá ukazuje, že na výrobu gitary nepotrebujete veľa. Všetko, čo potrebujete, je krabica na rezonovanie zvuku, doska, ktorá by slúžila ako hmatník, niekoľko skrutiek
Elektrická sviečka na sviečku: 8 krokov (s obrázkami)
Elektrická sviečka poháňaná sviečkami: Potom, čo som videl správy o hurikáne Sandy a vypočul som si utrpenie, ktorým prešla celá moja rodina a priatelia v New Yorku a New Jersey, ma prinútilo premýšľať o vlastnej núdzovej pripravenosti. San Francisco - koniec koncov - sedí na vrchole veľmi
Elektrická spotreba a monitorovanie životného prostredia cez Sigfox: 8 krokov
Elektrická spotreba a monitorovanie životného prostredia prostredníctvom Sigfox: Popis Tento projekt vám ukáže, ako dosiahnuť elektrickú spotrebu miestnosti v trojfázovom rozvode energie a potom ju odosielať na server pomocou siete Sigfox každých 10 minút. Ako merať výkon? Získali sme tri prúdové svorky z
Piezoelektrická nanovlákenná elektrická obuv PROTOTYP č. 1: 8 krokov
Piezoelektrická nanovlákenná elektrická obuv PROTOTYP č. 1: Nanotechnológia nám môže pomôcť vyrábať zelenú energiu prostredníctvom vedy o piezoelektrickej energii, ktorá je v podstate elektrickou energiou vyrábanou mechanickým namáhaním (práca vykonávaná gravitáciou na podrážkach vašich topánok). Dúfam, že v budúcnosti prídem s
Elektrická baterka: 8 krokov
Elektrická baterka: Pochodeň je prenosné ručné elektrické svetlo. Typická pochodeň pozostáva zo zdroja svetla namontovaného v reflektore, batérie, vodičov a spínača. Zdrojom svetla je dióda LED, tj. Dióda vyžarujúca svetlo. V LED je dlhšia noha kladným koncom a spodok