İçindekiler:

ESP32'li Elektrikli Türbin: 9 Adım
ESP32'li Elektrikli Türbin: 9 Adım

Video: ESP32'li Elektrikli Türbin: 9 Adım

Video: ESP32'li Elektrikli Türbin: 9 Adım
Video: ESP32 Tutorial 9 - Using Push button to Toggle LED, Push ON, Push OFF -SunFounder ESP32 IoT kit 2024, Kasım
Anonim
Image
Image
Gösteri
Gösteri

Bugün, ESP32 ile bir elektrik türbinini tartışacağım. Montajın 3D olarak basılmış bir parçası var. ESP32'nin elektrik motorlarını kontrol etmeye uygun bir PWM fonksiyonunu sunacağım. Bu bir DC motorda kullanılacaktır. Ayrıca bu MCPWM'nin (Motor Kontrol PWM) çalışmasını pratik bir uygulamada göstereceğim.

Bu projede ESP32 LoRa kullandım ve bu mikrodenetleyicinin içinde iki blok olduğunu burada belirtmenin önemli olduğunu düşünüyorum. Bu bloklar, her biri üç motoru kontrol etme yeteneğine sahiptir. Böylece altı adede kadar motoru PWM ile bağımsız olarak kontrol etmek mümkündür. Bu, burada kullanacağım kontrolün standart olmadığı (Arduino'ya benzer bir şey) anlamına geliyor. Bunun yerine kontrol, ESP32'ye motor kontrolü açısından çok fazla esneklik sağlayan çipin kendisidir.

1. Adım: Gösteri

Adım 2: PWM Motor Kontrolü

PWM Motor Kontrolü
PWM Motor Kontrolü
PWM Motor Kontrolü
PWM Motor Kontrolü

Genel Diyagram:

• ESP32'nin MCPWM işlevi, çeşitli elektrik motorlarını kontrol etmek için kullanılabilir. İki birimi vardır.

• Her ünitenin üç PWM çıkış çifti vardır.

• Her çıkış A / B çifti, üç senkronizasyon zamanlayıcısı 0, 1 veya 2 ile senkronize edilebilir.

• Bir Zamanlayıcı, birden fazla PWM çıkış çiftini senkronize etmek için kullanılabilir

Tam Şema:

• Her ünite aynı zamanda SENKRONİZASYON İŞARETLERİ olarak giriş sinyallerini toplama yeteneğine sahiptir;

• Aşırı akım veya motor aşırı gerilimi için ARIZA İŞARETLERİNİ tespit edin;

• Motorun konumu gibi SİNYALLERİ YAKALAMA ile geri bildirim alın

3. Adım: Kullanılan Kaynaklar

Kullanılan Kaynaklar
Kullanılan Kaynaklar

• Bağlantı için jumperlar

• Heltec Wifi LoRa 32

• Ortak DC motor

• Köprü H - L298N

• USB kablosu

• Ana kart

• Güç kaynağı

Adım 4: ESP 32 Dev Kit - Pinout

ESP 32 Geliştirme Kiti - Bağlantı Noktası
ESP 32 Geliştirme Kiti - Bağlantı Noktası

Adım 5: Türbin Montajı

Türbin Montajı
Türbin Montajı
Türbin Montajı
Türbin Montajı

Adım 6: Devre - Bağlantılar

Devre - Bağlantılar
Devre - Bağlantılar

Adım 7: Osiloskopta Ölçüm

Osiloskopta Ölçüm
Osiloskopta Ölçüm

Adım 8: Kaynak Kodu

başlık

#include // Arduino IDE'yi kullanma#include "driver/mcpwm.h" // "Motor Control PWM" kitapçığını içerir nativa do ESP32 #include // Arduino 1.6.5 ve sonrası için gerekli #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); //Instanciando e ajustando os pinos "görüntüleme" nesnesi yapmak #define GPIO_PWM0A_OUT 12 //Declara GPIO 12 ortak PWM0A #define GPIO_PWM0B_OUT 14 //Declara GPIO 14 ortak PWM0B

Kurmak

geçersiz kurulum() { Serial.begin(115200); display.init(); //display.flipScreenVertical(); //Vira a tela dikeymente display.clear(); //ajusta ya da esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); // Arial 16 display.setFont(ArialMT_Plain_16); //mcpwm_gpio_init(unidade PWM 0, sözde A, porta GPIO) => Instancia veya MCPWM0A pino yok GPIO_PWM0A_OUT kod yazmıyor mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0A); //mcpwm_gpio_init(unidade PWM 0, söz konusu B, porta GPIO) => Instancia veya MCPWM0B pino yok GPIO_PWM0B_OUT hiçbir comeco do código mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0_P); mcpwm_config_t pwm_config; pwm_config.frequency = 1000; //frequência = 500Hz, pwm_config.cmpr_a = 0; //Ciclo de trabalho (görev döngüsü) do PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (görev döngüsü) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; //Para MCPWM assimetrik pwm_config.duty_mode = MCPWM_DUTY_MODE_0; //Inicia(Unidade 0, Timer 0, Config PWM) mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); //PWM0A & PWM0B com'u yapılandırmak için acima olarak tanımlayın }

Fonksiyonlar

//MCPWM işleci A'nın işlevsel yapılandırması (Unidade, Zamanlayıcı, Porcentagem (ciclo de trabalho))statik void brushed_motor_forward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) { //_mcpwm_düşürme süresi) (0, 1 veya 2), Operatör (A veya B)); => Desliga o MCPWM Operador B yok (Baixo'yu tanımla) mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //mcpwm_set_duty(unidade PWM(0 veya 1), Número do timer(0, 1 veya 2), Operador (A veya B), Ciclo de trabalho (%do PWM)); => Bir porcentagem do PWM Operador A (Ciclo de trabalho) yapılandırın mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); //mcpwm_set_duty_tyoe(unidade PWM(0 veya 1), Número do timer(0, 1 veya 2), Operador (A veya B), Nível do ciclo de trabalho (alto ou baixo)); => ciclo de trabalho (alto ou baixo) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_A, MCPWM_DUTY_MODE_0); //Not: "mcpwm_set_signal_low" ya da "mcpwm_set_signal_high" chamado için şu anda vez que essa função ciclo de trabalho konfigurado anteriormente } // MCPWM Docent operador B (Unidade, Timer declo) için Função que konfigürasyonu () statik boşluk brushed_motor_backward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, kayan görev_döngüsü) { mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_A); //MCPWM'de o sinal do MCPWM Operador A yok (Baixo'yu tanımla) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); //PWM için bir porcentagem yapılandırması Operador B yok (Ciclo de trabalho) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //Cclo de trabalho (alto ou baixo) tanımlayın } // MCPWM'nin temel işlevlerine ilişkin işlemler statik void brushed_motor_stop(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timersign_m_m_m); // MCPWM'de işlem yok Operador A mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //Desliga o sinal do MCPWM Operador B }

Döngü

void loop() { //Motoru hareket ettirin sentido horário brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); ol("50"); gecikme(2000); //Para o motor brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); ol("0"); gecikme(2000); //Motoru hareket ettir hiçbir sentido antihorário brushed_motor_backward(MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled("25"); gecikme(2000); //Para o motor brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); ol("0"); gecikme(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(Dize(i)); gecikme(200); } // Desaceleração i de 100 a 1 gecikme(5000); for(int i=100;i>=10;i--){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(Dize(i)); gecikme(100); } gecikme (5000); }

9. Adım: Dosyaları İndirin

PDF

BEN HAYIR

RESİM ÇİZME

Önerilen: