Daftar Isi:

Turbin Listrik Dengan ESP32: 9 Langkah
Turbin Listrik Dengan ESP32: 9 Langkah

Video: Turbin Listrik Dengan ESP32: 9 Langkah

Video: Turbin Listrik Dengan ESP32: 9 Langkah
Video: SULTAN MEDAN INDRAKENZ NAIK JET PRIBADI KE PULAU PRIBADI!! 2024, Juli
Anonim
Image
Image
Demonstrasi
Demonstrasi

Hari ini, saya akan membahas turbin listrik dengan ESP32. Perakitan memiliki bagian yang dicetak dalam 3D. Saya akan menyajikan fungsi PWM dari ESP32 yang cocok untuk mengendalikan motor listrik. Ini akan digunakan dalam motor DC. Saya juga akan mendemonstrasikan pengoperasian MCPWM (Motor Control PWM) ini dalam aplikasi praktis.

Saya menggunakan ESP32 LoRa dalam proyek ini, dan saya pikir penting untuk dicatat di sini bahwa mikrokontroler ini memiliki dua blok di dalamnya. Blok ini mampu mengendalikan tiga motor masing-masing. Dengan demikian, dimungkinkan untuk mengontrol hingga enam motor dengan PWM, semuanya secara mandiri. Ini berarti bahwa kontrol yang akan saya gunakan di sini bukanlah standar (yang mirip dengan Arduino). Sebaliknya, kontrolnya adalah chip itu sendiri, yang menjamin banyak fleksibilitas ESP32 sehubungan dengan kontrol motor.

Langkah 1: Demonstrasi

Langkah 2: Kontrol Motor PWM

Kontrol Motor PWM
Kontrol Motor PWM
Kontrol Motor PWM
Kontrol Motor PWM

Diagram Umum:

• Fungsi MCPWM pada ESP32 dapat digunakan untuk mengontrol berbagai jenis motor listrik. Ini memiliki dua unit.

• Setiap unit memiliki tiga pasangan output PWM.

• Setiap pasangan A / B keluaran dapat disinkronkan dengan salah satu dari tiga pengatur waktu sinkronisasi 0, 1, atau 2.

• Satu Timer dapat digunakan untuk menyinkronkan lebih dari satu pasangan output PWM

Diagram Lengkap:

• Setiap unit juga mampu mengumpulkan sinyal input sebagai TANDA SYNCHRONISATION;

• Mendeteksi TANDA KESALAHAN untuk arus lebih atau tegangan lebih motor;

• Dapatkan umpan balik dengan SINYAL TANGKAP, seperti posisi Mesin

Langkah 3: Sumber Daya yang Digunakan

Sumber Daya yang Digunakan
Sumber Daya yang Digunakan

• Jumper untuk koneksi

• Heltec Wifi LoRa 32

• Motor DC biasa

• Jembatan H - L298N

• Kabel USB

• Protoboard

• Sumber Daya listrik

Langkah 4: ESP 32 Dev Kit - Pinout

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

Langkah 5: Pemasangan Turbin

Pemasangan Turbin
Pemasangan Turbin
Pemasangan Turbin
Pemasangan Turbin

Langkah 6: Sirkuit - Koneksi

Sirkuit - Koneksi
Sirkuit - Koneksi

Langkah 7: Pengukuran pada Osiloskop

Pengukuran pada Osiloskop
Pengukuran pada Osiloskop

Langkah 8: Kode Sumber

Tajuk

#sertakan //Tidak perlu menggunakan Arduino IDE#sertakan "driver/mcpwm.h" //sertakan biblioteca "Motor Control PWM" nativa do ESP32 #include // Diperlukan apenas untuk 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 display SSD1306 (0x3c, SDA, SCL, RST); //Instance dan ajustando os pinos lakukan objeto "display" #define GPIO_PWM0A_OUT 12 //Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 //Declara GPIO 14 como PWM0B

Mempersiapkan

void setup() { Serial.begin(115200); tampilan.init(); //display.flipScreenVertikal(); //Vira a tela verticalmente display.clear(); //ajusta o alinhamento untuk esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //ajusta a fonte untuk Arial 16 display.setFont(ArialMT_Plain_16); //mcpwm_gpio_init(unidade PWM 0, kata A, porta GPIO) => Instancia o MCPWM0A no pino GPIO_PWM0A_OUT nyatakan no começo do código mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0A, GPIO_OUT); //mcpwm_gpio_init(unidade PWM 0, kata B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT nyatakan no começo do código mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0B, GPIO_OUT); mcpwm_config_t pwm_config; pwm_config.frekuensi = 1000; //frekuncia = 500Hz, pwm_config.cmpr_a = 0; //Ciclo de trabalho (duty cycle) lakukan PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (duty cycle) lakukan PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; //Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; //Define ciclo de trabalho em nível alto //Inicia(Unidade 0, Timer 0, Config PWM) mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); //Tentukan PWM0A & PWM0B com sebagai konfigurasi acima }

Fungsi

//konfigurasi yang menyenangkan untuk operador MCPWM A (Unidade, Timer, Porcentagem (ciclo de trabalho))static void brushed_motor_forward(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) { //mcpwm_low_set (0, 1 ou 2), Operador (A ou B)); => Desliga o sinal lakukan MCPWM no Operador B (Tentukan 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)); => Konfigurasi persentase melakukan 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)); => tentukan 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); //Nota: 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 Lakukan operador B (Unid) 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); //Konfigurasi persentase melakukan PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type(mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //menentukan apa yang akan dilakukan ciclo de trabalho (alto ou baixo) } //Menyenangkan untuk MCPWM de ambos os Operadores static void brushed_motor_stop(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num_mcpw) { mcpwm_num_mcpwm_num_set); //Desliga untuk melakukan MCPWM tanpa Operador A mcpwm_set_signal_low(mcpwm_num, timer_num, MCPWM_OPR_B); //Desliga dan lakukan MCPWM tanpa Operador B }

Lingkaran

void loop() { //Pindahkan motor no sentido horário brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled("50"); penundaan(2000); //Para o motor brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); penundaan(2000); //Pindahkan motor no sentido antihorário brushed_motor_backward(MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled("25"); penundaan(2000); //Para o motor brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); penundaan(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)); penundaan (200); } // Desaceleração i de 100 a 1 delay(5000); for(int i=100;i>=10;i--){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(String(i)); penundaan(100); } penundaan(5000); }

Langkah 9: Unduh File

PDF

SAYA TIDAK

MENGGAMBAR

Direkomendasikan: