Isi kandungan:

Turbin Elektrik Dengan ESP32: 9 Langkah
Turbin Elektrik Dengan ESP32: 9 Langkah

Video: Turbin Elektrik Dengan ESP32: 9 Langkah

Video: Turbin Elektrik Dengan ESP32: 9 Langkah
Video: high speed Closed Loop nema 34 12nm stepper motor, esp32 FastAccelStepper, SBH860H driver. 2024, Julai
Anonim
Image
Image
Demonstrasi
Demonstrasi

Hari ini, saya akan membincangkan turbin elektrik dengan ESP32. Pemasangan mempunyai bahagian yang dicetak dalam bentuk 3D. Saya akan membentangkan fungsi PWM ESP32 yang sesuai untuk mengawal motor elektrik. Ini akan digunakan dalam motor DC. Saya juga akan menunjukkan pengoperasian MCPWM ini (Motor Control PWM) dalam aplikasi praktikal.

Saya menggunakan ESP32 LoRa dalam projek ini, dan saya rasa penting untuk diperhatikan di sini bahawa mikrokontroler ini mempunyai dua blok di dalamnya. Blok ini mampu mengawal tiga motor masing-masing. Oleh itu, adalah mungkin untuk mengawal sehingga enam motor dengan PWM, semuanya secara bebas. Ini bermaksud bahawa kawalan yang akan saya gunakan di sini bukanlah standard (yang serupa dengan Arduino). Sebaliknya, kawalannya adalah cip itu sendiri, yang menjamin banyak kelenturan ESP32 berkenaan dengan kawalan motor.

Langkah 1: Demonstrasi

Langkah 2: Kawalan Motor PWM

Kawalan Motor PWM
Kawalan Motor PWM
Kawalan Motor PWM
Kawalan Motor PWM

Rajah Umum:

• Fungsi MCPWM ESP32 dapat digunakan untuk mengawal pelbagai jenis motor elektrik. Ia mempunyai dua unit.

• Setiap unit mempunyai tiga pasangan output PWM.

• Setiap pasangan A / B output dapat diselaraskan dengan salah satu daripada tiga pemasa penyegerakan 0, 1, atau 2.

• Satu Pemasa dapat digunakan untuk menyegerakkan lebih dari satu pasangan output PWM

Rajah penuh:

• Setiap unit juga mampu mengumpulkan isyarat input sebagai TANDA SINKRONISASI;

• Kesan TANDA-TANDA FAULT untuk arus lebih atau voltan motor;

• Dapatkan maklum balas dengan TANDA CAPTURE, seperti kedudukan Mesin

Langkah 3: Sumber yang Digunakan

Sumber Yang Digunakan
Sumber Yang Digunakan

• Pelompat untuk sambungan

• Heltec Wifi LoRa 32

• Motor DC biasa

• Jambatan H - L298N

• Wayar USB

• Protoboard

• Bekalan kuasa

Langkah 4: Kit Peranti ESP 32 - Pinout

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

Langkah 5: Pemasangan Turbin

Pemasangan Turbin
Pemasangan Turbin
Pemasangan Turbin
Pemasangan Turbin

Langkah 6: Litar - Sambungan

Litar - Sambungan
Litar - Sambungan

Langkah 7: Pengukuran pada Osiloskop

Pengukuran pada Osiloskop
Pengukuran pada Osiloskop

Langkah 8: Kod Sumber

Kepala

#include // Não é ضروريário caso menggunakan Arduino IDE # include "driver / mcpwm.h" // inclui a biblioteca "Motor Control PWM" nativa do ESP32 #include // Necessário apenas para o 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 paparan SSD1306 (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos melakukan objeto "display" #define GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 komo PWM0B

Persediaan

persediaan tidak sah () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento untuk a esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // ajusta a fonte para 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 decarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0A, MCPWM0A, MCPWM0A // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B no pino GPIO_PWM0B_OUT Decarado no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0, MCPWM0; MCPWM0; MCBWP0 mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // freência = 500Hz, pwm_config.cmpr_a = 0; // Ciclo de trabalho (kitaran tugas) lakukan PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (kitaran tugas) melakukan PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Tentukan 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 com PWM0A & PWM0B sebagai configurações acima}

Fungsi

// Função que configura o MCPWM operador A (Unidade, Timer, Porcentagem (ciclo de trabalho)) void statik disikat_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) (0, 1 ou 2), Operador (A ou B)); => Desliga o sinal do MCPWM no Operador B (Tentukan o 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)); => Configura a porcentagem do 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 Do operador B (Unidade) void statik 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); // Configura a porcentagem do PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // tentukan o nível do ciclo de trabalho (alto ou baixo)} // Função que para o MCPWM de ambos os Operadores void statik disikat_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm_mm // Desliga o sinal do MCPWM no Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal do MCPWM no Operador B}

Gelung

gelung void () {// Pindahkan o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled ("50"); kelewatan (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); kelewatan (2000); // Pindahkan motor tanpa sentido antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled ("25"); kelewatan (2000); // Para o motor brushed_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); oled ("0"); kelewatan (2000); // Aceleracao i de 1 a 100 untuk (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Rentetan (i)); kelewatan (200); } // Desaceleração i de 100 a 1 kelewatan (5000); untuk (int i = 100; i> = 10; i -) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (Rentetan (i)); kelewatan (100); } kelewatan (5000); }

Langkah 9: Muat turun Fail

PDF

INO

LUKISAN

Disyorkan: