Mündəricat:

ESP32 ilə Elektrik Türbini: 9 addım
ESP32 ilə Elektrik Türbini: 9 addım

Video: ESP32 ilə Elektrik Türbini: 9 addım

Video: ESP32 ilə Elektrik Türbini: 9 addım
Video: Arduino Water Sensor Level using ESP32 #electrician #electronics #watersensor #electrical 2024, Noyabr
Anonim
Image
Image
Nümayiş
Nümayiş

Bu gün ESP32 ilə bir elektrik turbini müzakirə edəcəyəm. Montajın 3D -də çap olunmuş bir hissəsi var. Elektrik mühərriklərini idarə etmək üçün uyğun olan ESP32 -nin PWM funksiyasını təqdim edəcəyəm. Bu DC mühərrikində istifadə ediləcək. Mən də bu MCPWM -in (Motor Control PWM) işini praktiki bir tətbiqdə nümayiş etdirəcəyəm.

Bu layihədə ESP32 LoRa'dan istifadə etdim və bu mikrokontrolörün içərisində iki blok olduğunu qeyd etməyi vacib hesab edirəm. Bu bloklar hər biri üç mühərriki idarə edə bilir. Beləliklə, PWM ilə altı mühərrikin hamısını müstəqil olaraq idarə etmək mümkündür. Bu o deməkdir ki, burada istifadə edəcəyim nəzarət standart deyil (bu, Arduinoya bənzər bir şeydir). Bunun əvəzinə idarəetmə, ESP32 -yə motor idarəçiliyi ilə əlaqədar çox rahatlıq təmin edən çipin özüdür.

Addım 1: nümayiş

Addım 2: PWM Motor İdarəetmə

PWM Motor İdarəetmə Sistemi
PWM Motor İdarəetmə Sistemi
PWM Motor İdarəetmə Sistemi
PWM Motor İdarəetmə Sistemi

Ümumi diaqram:

• ESP32 -nin MCPWM funksiyası müxtəlif növ elektrik mühərriklərini idarə etmək üçün istifadə edilə bilər. İki vahidi var.

• Hər bölmədə üç PWM çıxış cütü var.

• Hər bir çıxış A / B cütü 0, 1 və ya 2 üç sinxronizasiya taymerindən biri ilə sinxronizasiya edilə bilər.

• Birdən çox PWM çıxış cütünü sinxronizasiya etmək üçün bir Timer istifadə edilə bilər

Tam Diaqram:

• Hər vahid eyni zamanda SİNKRONİZASİYA İŞARƏLƏRİ kimi giriş siqnallarını toplaya bilir;

• Həddindən artıq cərəyan və ya motor həddindən artıq gərginlik üçün HATA İŞARƏLƏRİNİ aşkar edin;

• Mühərrikin mövqeyi kimi CAPTURE SIGNALS ilə rəy alın

Addım 3: İstifadə olunan mənbələr

İstifadə olunan mənbələr
İstifadə olunan mənbələr

• Bağlantı üçün tullananlar

• Heltec Wifi LoRa 32

• Ümumi DC mühərriki

• Körpü H - L298N

• USB kabeli

• Protoboard

• Enerji təchizatı

Addım 4: ESP 32 Dev Kit - Pinout

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

Addım 5: Turbinin Montajı

Turbin montajı
Turbin montajı
Turbin montajı
Turbin montajı

Addım 6: Dövrə - Bağlantılar

Dövrə - Əlaqələr
Dövrə - Əlaqələr

Addım 7: Osiloskopda ölçmə

Osiloskopda ölçmə
Osiloskopda ölçmə

Addım 8: Mənbə Kodu

Başlıq

#daxil edin // Arduino IDE -dən istifadə etmək lazım deyil #"sürücü/mcpwm.h" daxil edin // "Motor İdarəetmə PWM" ilə ESP32 arasında #kitab daxil edin // Arduino 1.6.5 e posterior #include "daxil edin SSD1306.h "// o mesmo que #include" SSD1306Wire.h "// OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #deffine RST 16 SSD1306 display (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display" #efine GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

Qurmaq

void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vertikal vertikal ekran. Təmiz (); // ekran görüntüsünü təyin etmək üçün. setTextAlignment (TEXT_ALIGN_LEFT); // Arial 16 display.setFont (ArialMT_Plain_16) üçün yazı tipləri; // mcpwm_gpio_init (unidade PWM 0, saida A, porta GPIO) => MCPWM0A quruluşu yoxdur GPIO_PWM0A_OUT elan edilmir ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, GPO_MWA0A) // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => MCPWM0B qurğusu yoxdur GPIO_PWM0B_OUT elanı yoxdur ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, MCPWP0B) mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // tezlik = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (vəzifə dövrü) PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (vəzifə dövrü) PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // MCPWM assimetrik olaraq pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Başlanğıcda ciclo de trabalho təyin edin // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // PWM0A və PWM0B com -u konfiqurasiya olaraq təyin edin}

Funksiyalar

// MCPWM operatoru A (Unidade, Timer, Porcentagem (ciclo de trabalho)) statik boşluğu fırçalanmış_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float ms_sümrü_sürücü) (0, 1 ou 2), Operador (A ou B)); => MCPWM -in Operator B -ni yoxlayın (Baixo -nu müəyyən edin) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (birdəfəlik PWM (0 ou 1), Número do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% PWM)); => Operator A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle) ilə PWM -in qurulması; // 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)); => ciclo de trabalho -nu müəyyənləşdirin (alt -üstü) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); // Nota: "mcpwm_set_signal_low" ya da "mcpwm_set_signal_high" üçün bir çox funksiya var, // MCPWM -in funksiyaları B (Unicade, Timer) statik boşluq fırçalanmış_motor_ geri (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) {mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_A); // MCPWM əməliyyat sistemini yoxlayın (Baixo -nu müəyyən edin) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // Operator B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0) ilə PWM qurmaq; // ciclo de trabalho (alt ou baixo) tanımlayın} // Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_mw_m_m_m_t_m_m_m_) üçün MCPWM funksiyasını yerinə yetirin. // MCPWM əməliyyat sistemini yoxlayın mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // MCPWM yox, Operador B yoxlayın

Döngə

void loop () {// Motoru hərəkət etdirin, heç bir hərəkət etmədən fırçalayın_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); gecikmə (2000); // Motor fırçalanmış_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); gecikmə (2000); // Motoru heç bir sentido antihorário brushed_motor_backward hərəkət etdirməyin (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); gecikmə (2000); // Motor fırçalanmış_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); gecikmə (2000); // Aceleracao i 1 a 100 for (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); gecikmə (200); } // Desaceleração i de 100 a 1 gecikmə (5000); for (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); gecikmə (100); } gecikmə (5000); }

Addım 9: Dosyaları Yükləyin

PDF

MƏN YOX

ÇİZİM

Tövsiyə: