Turinys:
- 1 žingsnis: demonstracija
- 2 žingsnis: PWM variklio valdymas
- 3 žingsnis: naudojami ištekliai
- 4 žingsnis: „ESP 32 Dev Kit“- „Pinout“
- 5 žingsnis: Turbinos montavimas
- 6 žingsnis: grandinė - jungtys
- 7 žingsnis: matavimas osciloskopu
- 8 žingsnis: šaltinio kodas
- 9 veiksmas: atsisiųskite failus
Video: Elektrinė turbina su ESP32: 9 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Šiandien aš aptarsiu elektrinę turbiną su ESP32. Surinkime yra dalis, kuri buvo atspausdinta 3D formatu. Pateiksiu ESP32 PWM funkciją, tinkančią valdyti elektros variklius. Tai bus naudojama nuolatinės srovės variklyje. Taip pat praktiškai parodysiu šio MCPWM (variklio valdymo PWM) veikimą.
Šiame projekte naudojau ESP32 LoRa ir manau, kad čia svarbu pažymėti, kad šio mikrovaldiklio viduje yra du blokai. Šie blokai gali valdyti po tris variklius. Taigi galima valdyti iki šešių variklių su PWM, visi nepriklausomai. Tai reiškia, kad čia naudojamas valdiklis nėra standartas (kuris yra kažkas panašaus į „Arduino“). Vietoj to, valdymas yra pats lustas, kuris garantuoja ESP32 daug lankstumo variklio valdymo atžvilgiu.
1 žingsnis: demonstracija
2 žingsnis: PWM variklio valdymas
Bendra schema:
• ESP32 MCPWM funkcija gali būti naudojama įvairių tipų elektros varikliams valdyti. Jame yra du vienetai.
• Kiekvienas įrenginys turi tris PWM išvesties poras.
• Kiekvieną išvesties A / B porą galima sinchronizuoti su vienu iš trijų 0, 1 arba 2 sinchronizavimo laikmačių.
• Vienas laikmatis gali būti naudojamas sinchronizuoti daugiau nei vieną PWM išvesties porą
Visa diagrama:
• Kiekvienas įrenginys taip pat gali rinkti įvesties signalus kaip SINCHRONIZACIJOS ŽENKLAI;
• aptikti perteklinės srovės ar variklio viršįtampio gedimo signalus;
• Gaukite atsiliepimų naudodami CAPTURE SIGNALS, pvz., Variklio padėtį
3 žingsnis: naudojami ištekliai
• Džemperiai prijungimui
• „Heltec Wifi LoRa 32“
• Įprastas nuolatinės srovės variklis
• Tiltas H - L298N
• USB kabelis
• Protoboard
• Maitinimo šaltinis
4 žingsnis: „ESP 32 Dev Kit“- „Pinout“
5 žingsnis: Turbinos montavimas
6 žingsnis: grandinė - jungtys
7 žingsnis: matavimas osciloskopu
8 žingsnis: šaltinio kodas
Antraštė
#įtraukti // Nereikia naudoti „Arduino IDE“#include "driver/mcpwm.h" // įtraukti biblioteka "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 ekranas (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
Sąranka
void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // valdymas arba alinhamento 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 arba MCPWM0A no pino GPIO_PWM0A_OUT deklaracija Nr começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPIO_P0M, // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia arba MCPWM0B no pino GPIO_PWM0B_OUT deklaracija Nr começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPIO_P0M, mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (darbo ciklas) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (darbo ciklas) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Apibrėžti ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0 ir pwm_config); // PWM0A & PWM0B com apibrėžti kaip konfigūraciją acima}
Funkcijos
// „Função que configura“arba „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_cim“) (0, 1 ou 2), Operatorius (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 (nebaigtas PWM (0 ou 1), Número do timer (0, 1 ou 2), Operatorius (A ou B), Ciclo de trabalho (% iki PWM)); => Konfigūruokite dalį PWM be Operatoriaus 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 (alto ou baixo)); => apibrėžti nicvel do ciclo de trabalho (alto arba baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Pastaba: 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, 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 konfigūravimas be operacinės sistemos B (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) tmc_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}
Kilpa
void loop () {// Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); esi („50“); vėlavimas (2000 m.); // Para arba variklio šepečiu_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); esi ("0"); vėlavimas (2000 m.); // Perkelti variklį be sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); esi („25“); vėlavimas (2000 m.); // Para arba variklio šepečiu_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); esi ("0"); vėlavimas (2000 m.); // Aceleracao i de 1 a 100 for (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Styga (i)); vėlavimas (200); } // Deaceleração i de 100 a 1 delay (5000); už (int i = 100; i> = 10; i-) {šepečio_motorinis_pardavimas (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Styga (i)); vėlavimas (100); } uždelsimas (5000); }
9 veiksmas: atsisiųskite failus
AŠ NE
PIEŠIMAS
Rekomenduojamas:
Elektrinė valtis: 4 žingsniai
Elektrinė valtis: Priedai -Maža plastikinė dėžutė 2x nuolatinės srovės varikliai Laidai 1x jungiklis 2x sraigtai 2x 9V baterijos Karštas klijų pistoletas
Elektrinė žvakių žvakė: 8 žingsniai (su nuotraukomis)
Elektrinė žvakių varoma žvakė: pamačius naujienų pranešimus apie uraganą „Sandy“ir išgirdus išbandymą, kurį patyrė visa mano šeima ir draugai Niujorke ir Naujajame Džersyje, tai privertė mane galvoti apie savo pasirengimą ekstremalioms situacijoms. Galų gale San Franciskas sėdi ant kai kurių
Sukurkite savo elektrinę motorizuotą „Longboard“: 8 žingsniai (su nuotraukomis)
Sukurkite savo elektrinę motorizuotą „Longboard“: Šiame projekte aš jums parodysiu, kaip nuo nulio sukurti elektrinę motorizuotą longboardą. Vienu įkrovimu jis gali pasiekti greitį iki 34 km/h ir nuvažiuoti iki 20 km. Numatomos išlaidos yra apie 300 USD, todėl tai yra gera alternatyva prekybai
Elektrinė skrybėlė: 9 žingsniai
Elektrinė skrybėlė: Jūs kuriate dabartinę projekto versiją, kurią sukūriau su keliais savo mokiniais, ir dar net neįkaista, kad pamatytumėte, ar ji veikia, o gal sukelia migreną! (Ateities versijos gali turėti būdų pakelti orą ir aplink galvos odą
„Pasidaryk pats“elektrinė „Longboard“!: 7 žingsniai (su nuotraukomis)
„Pasidaryk pats“elektrinė „Longboard“!: Sveiki, kolegos kūrėjai, šiame vadove aš jums parodysiu, kaip pasidaryti „pasidaryk pats“elektrinę riedlentę už palyginti mažą biudžetą. Mano pastatyta lenta gali pasiekti apie 40 km/h greitį (26 mylių per valandą) ir bėgti apie 18 km. Aukščiau yra vaizdo vadovas ir keletas pi