İçindekiler:
- 1. Adım: Gösteri
- Adım 2: PWM Motor Kontrolü
- 3. Adım: Kullanılan Kaynaklar
- Adım 4: ESP 32 Dev Kit - Pinout
- Adım 5: Türbin Montajı
- Adım 6: Devre - Bağlantılar
- Adım 7: Osiloskopta Ölçüm
- Adım 8: Kaynak Kodu
- 9. Adım: Dosyaları İndirin
Video: ESP32'li Elektrikli Türbin: 9 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
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ü
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
• 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
Adım 5: Türbin Montajı
Adım 6: Devre - Bağlantılar
Adım 7: 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
BEN HAYIR
RESİM ÇİZME
Önerilen:
Spin Art Türbin Remix Projesi: 4 Adım
Spin Art Turbine Remix Projesi: Spin Art ile ilgileniyorsanız, bir problem var ve o problem şu ki, bir elinizle boya yaparken matkabı tutmanız gerekiyor. Bu bazen can sıkıcı olabiliyor ama bulduğumu hissediyorum. Bu basit türbin ile oluşturabileceğiniz çözüm
Geri Dönüştürülebilir Malzemelerden Yapılan İyileştirilmiş Elektrostatik Türbin: 16 Adım (Resimlerle)
Geri Dönüştürülebilir Malzemelerden Üretilmiş İyileştirilmiş Elektrostatik Türbin: Bu, yüksek voltajlı doğru akımı (HVDC) yüksek hızlı, döner harekete dönüştüren, tamamen sıfırdan yapılmış bir elektrostatik türbindir (EST). Projem, atmosferden elektrikle çalışan Jefimenko Corona Motor'dan ilham aldı
DIY Türbin Sprey Şişesi: 12 Adım (Resimlerle)
Kendin Yap Türbin Sprey Şişesi: Benim yerimde aşırı sıcak bir yaz var, bu yüzden bizi serinletebilecek bir şey bulmam gerekti. İşte sonuç geliyor
Elektrikli Parçalar İçin Elektrikli Scooter Nasıl Ayrılır?: 6 Adım
Elektrikli Parçalar için Elektrikli Scooter Nasıl Parçalanır.: Bu, elektrikli bir dağ tahtası yapmak için ihtiyaç duyulan parçalar için ikinci el bir elektrikli scooter'ı ayırma yöntemimdir.(Fikir >> https://www'den geliyor. .instructables.com/id/Electric-Mountain-Board/)İkinci el almamın nedeni
Geri Dönüşümlü Off-Grid Tesla CD Türbin Güç Arttırıcı Blender: 8 Adım (Resimlerle)
Geri Dönüştürülmüş Şebeke Dışı Tesla CD Türbin Güç Arttırıcı Blender: Aşağıdaki film, bu Tesla CD Türbin Blender'ın evde başarılı kullanımını göstermektedir. Hava Turbo-Boost ile Devridaim Tesla CD Türbini Bu video oynatılmazsa, bunun yerine burayı tıklayın Bu talimat, şebekeden bağımsız, T