Բովանդակություն:

ESP32- ով էլեկտրական տուրբին ՝ 9 քայլ
ESP32- ով էլեկտրական տուրբին ՝ 9 քայլ

Video: ESP32- ով էլեկտրական տուրբին ՝ 9 քայլ

Video: ESP32- ով էլեկտրական տուրբին ՝ 9 քայլ
Video: Arduino Water Sensor Level using ESP32 #electrician #electronics #watersensor #electrical 2024, Հուլիսի
Anonim
Image
Image
Ցույց
Ցույց

Այսօր ես կքննարկեմ էլեկտրական տուրբինը ESP32- ի հետ: Theողովը ունի մի մաս, որը տպագրվել է 3D- ով: Ես կներկայացնեմ ESP32- ի PWM գործառույթը, որը հարմար է էլեկտրաշարժիչների կառավարման համար: Սա կօգտագործվի DC շարժիչում: Ես նաև ցույց կտամ այս MCPWM- ի (Motor Control PWM) աշխատանքը գործնական կիրառման մեջ:

Այս նախագծում ես օգտագործել եմ ESP32 LoRa- ն, և կարծում եմ, որ այստեղ կարևոր է նշել, որ այս միկրոկոնտրոլերի ներսում կա երկու բլոկ: Այս բլոկներն ունակ են վերահսկել յուրաքանչյուրը երեք շարժիչ: Այսպիսով, PWM- ով հնարավոր է կառավարել մինչև վեց շարժիչ ՝ բոլորը անկախ: Սա նշանակում է, որ այստեղ օգտագործվող վերահսկողությունը ստանդարտ չէ (ինչը նման է Arduino- ին): Փոխարենը, վերահսկողությունը ինքնին չիպն է, որը ESP32- ին երաշխավորում է շարժիչի կառավարման նկատմամբ մեծ ճկունություն:

Քայլ 1: rationուցադրություն

Քայլ 2: PWM շարժիչի վերահսկում

PWM շարժիչի վերահսկում
PWM շարժիչի վերահսկում
PWM շարժիչի վերահսկում
PWM շարժիչի վերահսկում

Ընդհանուր դիագրամ.

• ESP32- ի MCPWM գործառույթը կարող է օգտագործվել տարբեր տեսակի էլեկտրաշարժիչների կառավարման համար: Ունի երկու միավոր:

• Յուրաքանչյուր միավոր ունի երեք PWM ելքային զույգ:

• Յուրաքանչյուր ելքային A / B զույգ կարող է համաժամացվել 0, 1 կամ 2 համաժամացման երեք ժամանակաչափերից մեկի հետ:

• One Timer- ը կարող է օգտագործվել մեկից ավելի PWM ելքային զույգերի համաժամացման համար

Ամբողջական դիագրամ.

• Յուրաքանչյուր միավոր կարող է նաև հավաքել մուտքային ազդանշաններ որպես ՍԻՆԽՐՈՆԻԱATIONԻԱՅԻ ՆՇԱՆ:

• Հայտնաբերել ՄԵUL ԱՇԽԱՏԱՆՔՆԵՐ գերհոսանքի կամ շարժիչի գերլարման համար;

• Ստացեք հետադարձ կապ CAPTURE SIGNALS- ի հետ, օրինակ ՝ Շարժիչի դիրքը

Քայլ 3: Օգտագործված ռեսուրսներ

Օգտագործված ռեսուրսներ
Օգտագործված ռեսուրսներ

• Թռիչքներ միացման համար

• Heltec Wifi LoRa 32

• Ընդհանուր DC շարժիչ

• Կամուրջ H - L298N

• USB մալուխ

• Protoboard

• Սնուցման աղբյուր

Քայլ 4: ESP 32 Dev Kit - Pinout

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

Քայլ 5: Տուրբինի տեղադրում

Տուրբինի տեղադրում
Տուրբինի տեղադրում
Տուրբինի տեղադրում
Տուրբինի տեղադրում

Քայլ 6: Շղթա - Միացումներ

Շղթա - Միացումներ
Շղթա - Միացումներ

Քայլ 7: Չափում օսիլոսկոպի վրա

Չափում օսցիլոսկոպի վրա
Չափում օսցիլոսկոպի վրա

Քայլ 8: Աղբյուրի կոդ

Վերնագիր

#ներառել // Անհրաժեշտ է օգտագործել Arduino IDE- ն #ներառել «վարորդ/mcpwm.h» // ներառել «Մեքենայի կառավարման PWM» գրքույկ, որը ներառում է ESP32 #ներառել // Անհրաժեշտ է Arduino 1.6.5 և հետևի #ներառել « 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 էկրան (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

Կարգավորում

void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // անհրաժեշտ է esquerda display.setTextAlignment (TEXT_ALIGN_LEFT) համար; // ուղիղ միացում 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 հայտարարություն չուներ, որը թույլ չի տալիս կատարել ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, M0P0M, M0P0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, 0, M0, M0, M0, 0, 0, // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT հայտարարություն չկա, որը կարող է կատարվել ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, MBPWM_POM_0B0, M0P0, M0, B0, M0, M0, M0, M0, B0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, M0, 0, M0, M0, 0, M, 0, 0, M,,,,,,,,,,,,, mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // հաճախականություններ = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (աշխատանքային ցիկլ) մինչև PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (աշխատանքային ցիկլ) մինչև PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Սահմանել ciclo de trabalho em nível alto // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Սահմանել PWM0A & PWM0B com- ը որպես configurações acima}

Գործառույթներ

// 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_mum_mumwum (0, 1 ou 2), Օպերադոր (A ou B)); => Նախնական կարգավորում MCPWM առանց Օպերատոր B (սահմանեք մեր հիմնական անվանումը) 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)); => Կարգավորել ծակոտկեն PWM no 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 (alto ou baixo)); => սահմանել, թե ինչպես կարելի է ընտրել (alto ou baixo) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Նշում. Chame essa função toda vez que for chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para manter or ciclo de trabalho configurado anteriormente} // Funchão que configura o MCPWoid Do operador B (Un), operador B (Un) ստատիկ դատարկություն 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_; // Նախնական պահանջներ MCPWM no Operador A (Սահմանել o sinal em Baixo) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Կազմաձևեք ծակոտկեն PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // սահմանել տ nível անել Ciclo դե trabalho (ալտ OU baixo)} // Função que para ժե MCPWM դե Ambos OS Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) {mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_A); // Նախնական պահանջներ MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Designa o sinal do MCPWM no Operador B}

Օղակ

դատարկ օղակ () {// Տեղափոխել շարժիչով ոչ մի զգույշ brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled («50»); ուշացում (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled («0»); ուշացում (2000); // Տեղափոխեք շարժիչը առանց զգայուն շարժիչ_շարժված_հետընթաց (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled («25»); ուշացում (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled («0»); ուշացում (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 (Լար (i)); ուշացում (200); } // Desaceleração i de 100 a 1 հետաձգում (5000); (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Լար (i)); ուշացում (100); } ուշացում (5000); }

Քայլ 9: Ներբեռնեք ֆայլերը

PDF

ԻՆՈ

Գծանկար

Խորհուրդ ենք տալիս: