Satura rādītājs:
- 1. solis: demonstrācija
- 2. darbība: PWM motora vadība
- 3. darbība. Izmantotie resursi
- 4. solis: ESP 32 Dev Kit - Pinout
- 5. solis: Turbīnas montāža
- 6. darbība: ķēde - savienojumi
- 7. solis: mērījumi osciloskopā
- 8. darbība. Avota kods
- 9. darbība: lejupielādējiet failus
Video: Elektriskā turbīna ar ESP32: 9 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:55
Šodien es apspriedīšu elektrisko turbīnu ar ESP32. Montāžai ir daļa, kas tika izdrukāta 3D formātā. Es iepazīstināšu ar ESP32 PWM funkciju, kas piemērota elektromotoru vadīšanai. Tas tiks izmantots līdzstrāvas motorā. Es arī demonstrēšu šī MCPWM (Motor Control PWM) darbību praktiskā pielietojumā.
Šajā projektā es izmantoju ESP32 LoRa, un, manuprāt, šeit ir svarīgi atzīmēt, ka šī mikrokontrollera iekšpusē ir divi bloki. Šie bloki spēj kontrolēt trīs motorus. Tādējādi ir iespējams vadīt pat sešus motorus ar PWM, neatkarīgi. Tas nozīmē, ka šeit izmantotā vadība nav standarta (kas ir kaut kas līdzīgs Arduino). Tā vietā vadība ir pati mikroshēma, kas garantē ESP32 lielu elastību attiecībā uz motora vadību.
1. solis: demonstrācija
2. darbība: PWM motora vadība
Vispārējā diagramma:
• ESP32 MCPWM funkciju var izmantot, lai kontrolētu dažāda veida elektromotorus. Tam ir divas vienības.
• Katrai iekārtai ir trīs PWM izejas pāri.
• Katru izejas A / B pāri var sinhronizēt ar vienu no trim sinhronizācijas taimeriem 0, 1 vai 2.
• Vienu taimeri var izmantot, lai sinhronizētu vairāk nekā vienu PWM izejas pāri
Pilna diagramma:
• Katra iekārta spēj savākt ievades signālus arī kā SINHRONIZĀCIJAS ZĪMES;
• atklāt PĀRTRAUKUMA ZĪMES pārslodzei vai motora pārspriegumam;
• Iegūstiet atgriezenisko saiti, izmantojot CAPTURE SIGNALS, piemēram, dzinēja stāvokli
3. darbība. Izmantotie resursi
• Džemperi savienošanai
• Heltec Wifi LoRa 32
• Parastais līdzstrāvas motors
• Tilts H - L298N
• USB kabelis
• Protoboard
• Enerģijas padeve
4. solis: ESP 32 Dev Kit - Pinout
5. solis: Turbīnas montāža
6. darbība: ķēde - savienojumi
7. solis: mērījumi osciloskopā
8. darbība. Avota kods
Galvene
#include // Ja nepieciešams, izmantojiet Arduino IDE #include "driver/mcpwm.h" // ieskaitot 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 displejs (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
Uzstādī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ācija no começo do 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ācija no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPIO_M0B, mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // frequência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (darba cikls) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (darba cikls) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Definēt ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0 un pwm_config); // Definēt PWM0A & PWM0B com kā konfigurācijas iestatījumus}
Funkcijas
// 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_cimm_c1) (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ējiet daļu no PWM bez operatora 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)); => definēt 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); // Piezīme: 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); // Konfigurējiet daļu no PWM bez operatora B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // definēt 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) tmmw // 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}
Cilpa
void loop () {// Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); kavēšanās (2000); // Para vai motoru matēta_motora_apstāšanās (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); kavēšanās (2000); // Move o motor no sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); kavēšanās (2000); // Para vai motoru matēta_motora_apstāšanās (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); kavēšanā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)); kavēšanās (200); } // Desaceleração i de 100 a 1 delay (5000); par (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); kavēšanās (100); } kavēšanās (5000); }
9. darbība: lejupielādējiet failus
ES NĒ
ZĪMĒŠANA
Ieteicams:
Elektriskā laiva: 4 soļi
Elektriskā laiva: Piegādes -Maza plastmasas kaste 2 x līdzstrāvas motori Vadi 1x slēdzis 2x propelleri 2x 9V baterijas Karstās līmes pistole
Elektriskā 12 voltu pievada elektroinstalācija: 3 soļi
12 voltu elektriskā lineārā pievada elektroinstalācija: šajā pamācībā mēs apskatīsim 12 voltu lineāro izpildmehānismu vadu (kopējās izmantotās metodes) un pamata izpratni par izpildmehānisma darbību
Jumbo izmēra teleskopiskais gaismas gleznotājs, kas izgatavots no EMT (elektriskā) vads: 4 soļi (ar attēliem)
Jumbo izmēra teleskopiskais gaismas gleznotājs, kas izgatavots no EMT (elektriskās) caurules: Gaismas gleznošana (gaismas rakstīšana) tiek veikta, uzņemot fotoattēlu ar ilgu ekspozīciju, turot nekustīgu kameru un pārvietojot gaismas avotu, kamēr kameras apertūra ir atvērta. Kad diafragma tiek aizvērta, gaismas pēdas šķiet sasalušas
Elektriskā LED zīme: 4 soļi
Elektriskā LED emblēma: tuvojas Helovīns. Vai jums ir domas par dekorēšanu un ģērbšanos? Tas būs lieliski, ja jums būs ekskluzīva elektriskā gaismas zīme. Tāpēc šodien apspriedīsim, kā izveidot šādu elektrisko emblēmu
Elektriskā uzlīme: Idejas Para Hackear La Ciudad: 5 soļi
Elektriskā uzlīmju uzlīme: Idejas Para Hackear La Ciudad: Podemos utilizar los postes de la ciudad para hacer diversas cosas, haremos un sticker para hacer un controlador y jugar pac-man. Materiāli Vinila Tinta diriģenta komplekts Makey Makey (satur Alligator Clips un kabeli USB). Herramientas ploteris