สารบัญ:
- ขั้นตอนที่ 1: การสาธิต
- ขั้นตอนที่ 2: การควบคุมมอเตอร์ PWM
- ขั้นตอนที่ 3: ทรัพยากรที่ใช้
- ขั้นตอนที่ 4: ESP 32 Dev Kit - Pinout
- ขั้นตอนที่ 5: การติดตั้งกังหัน
- ขั้นตอนที่ 6: วงจร - การเชื่อมต่อ
- ขั้นตอนที่ 7: การวัดออสซิลโลสโคป
- ขั้นตอนที่ 8: รหัสที่มา
- ขั้นตอนที่ 9: ดาวน์โหลดไฟล์
วีดีโอ: กังหันไฟฟ้าพร้อม ESP32: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
วันนี้ผมจะมาพูดถึงเทอร์ไบน์ไฟฟ้ากับ ESP32 การประกอบมีส่วนที่พิมพ์ในแบบ 3 มิติ ฉันจะนำเสนอฟังก์ชั่น PWM ของ ESP32 ที่เหมาะสำหรับการควบคุมมอเตอร์ไฟฟ้า ซึ่งจะใช้ในมอเตอร์กระแสตรง ฉันจะสาธิตการทำงานของ MCPWM (Motor Control PWM) นี้ในแอปพลิเคชันที่ใช้งานได้จริง
ฉันใช้ ESP32 LoRa ในโครงการนี้ และฉันคิดว่าสิ่งสำคัญที่ควรทราบคือไมโครคอนโทรลเลอร์นี้มีสองช่วงตึกอยู่ภายใน บล็อกเหล่านี้สามารถควบคุมมอเตอร์ได้สามตัวแต่ละตัว ดังนั้นจึงสามารถควบคุมมอเตอร์ได้ถึงหกตัวด้วย PWM ทั้งหมดโดยอิสระ ซึ่งหมายความว่าการควบคุมที่ฉันจะใช้ที่นี่ไม่ใช่มาตรฐาน (ซึ่งคล้ายกับ Arduino) ในทางกลับกัน ส่วนควบคุมคือตัวชิปเอง ซึ่งรับประกันว่า ESP32 จะมีความยืดหยุ่นอย่างมากในส่วนที่เกี่ยวกับการควบคุมมอเตอร์
ขั้นตอนที่ 1: การสาธิต
ขั้นตอนที่ 2: การควบคุมมอเตอร์ PWM
แผนภาพทั่วไป:
• ฟังก์ชัน MCPWM ของ ESP32 สามารถใช้ควบคุมมอเตอร์ไฟฟ้าประเภทต่างๆ ได้ มันมีสองหน่วย
• แต่ละยูนิตมีเอาต์พุต PWM สามคู่
• แต่ละคู่เอาต์พุต A / B สามารถซิงโครไนซ์กับตัวจับเวลาการซิงโครไนซ์หนึ่งในสามตัว 0, 1 หรือ 2
• ตัวจับเวลาหนึ่งตัวสามารถใช้เพื่อซิงโครไนซ์เอาต์พุต PWM มากกว่าหนึ่งคู่
แผนภาพเต็ม:
• แต่ละยูนิตยังสามารถรวบรวมสัญญาณอินพุตเป็นสัญญาณซิงโครไนซ์
• ตรวจจับสัญญาณผิดพลาดสำหรับกระแสไฟเกินหรือแรงดันไฟเกินของมอเตอร์
• รับข้อเสนอแนะด้วย CAPTURE SIGNALS เช่นตำแหน่งของ Engine
ขั้นตอนที่ 3: ทรัพยากรที่ใช้
• จัมเปอร์สำหรับเชื่อมต่อ
• Heltec Wifi LoRa 32
• มอเตอร์กระแสตรงทั่วไป
• สะพาน H - L298N
• สาย USB
• โปรโตบอร์ด
• แหล่งจ่ายไฟ
ขั้นตอนที่ 4: ESP 32 Dev Kit - Pinout
ขั้นตอนที่ 5: การติดตั้งกังหัน
ขั้นตอนที่ 6: วงจร - การเชื่อมต่อ
ขั้นตอนที่ 7: การวัดออสซิลโลสโคป
ขั้นตอนที่ 8: รหัสที่มา
หัวข้อ
#include //ไม่จำเป็น caso use 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 หลัง #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 และ ajustando os pinos ทำ objeto "display" #define GPIO_PWM0A_OUT 12 // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B
ติดตั้ง
การตั้งค่าเป็นโมฆะ () { Serial.begin (115200); display.init(); //display.flipScreenVertically(); //Vira a tela verticalmente display.clear(); //ajusta หรือ alinhamento สำหรับ esquerda display.setTextAlignment(TEXT_ALIGN_LEFT); //เปลี่ยนฟอนต์สำหรับ Arial 16 display.setFont(ArialMT_Plain_16); //mcpwm_gpio_init(unidade PWM 0, saida A, porta GPIO) => Instacia o MCPWM0A no pino GPIO_PWM0A_OUT declarado no começo do código mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0A_OUT); //mcpwm_gpio_init(unidade PWM 0, saida B, porta GPIO) => Instacia o MCPWM0B no pino GPIO_PWM0B_OUT declarado no começo do código mcpwm_gpio_init(MCPWM_UNIT_0, MCPWM0PW_, GPBIO) mcpwm_config_t pwm_config; pwm_config.frequency = 1,000; //ความถี่ = 500Hz, pwm_config.cmpr_a = 0; //Ciclo de trabalho (รอบการทำงาน) ทำ PWMxA = 0 pwm_config.cmpr_b = 0; //Ciclo de trabalho (รอบการทำงาน) ทำ PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Para MCPWM assimetrico pwm_config.duty_mode = MCPWM_DUTY_MODE_0; //กำหนด ciclo de trabalho em nível alto //Inicia(Unidade 0, Timer 0, Config PWM) mcpwm_init(MCPWM_UNIT_0, MCPWM_TIMER_0, &pwm_config); //กำหนด PWM0A & PWM0B com เป็น configurações acima }
ฟังก์ชั่น
// Função que configura o ตัวดำเนินการ MCPWM A (Unidade, Timer, Porcentagem (ciclo de trabalho)) โมฆะแบบคงที่ brushed_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) {//mcpwm_seter (0, 1 ou 2), ตัวดำเนินการ (A ou B)); => Desliga o sinal do MCPWM ไม่มี Operador B (กำหนด 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 (% ทำ PWM)); => กำหนดค่า porcentagem ทำ PWM ไม่มีตัวดำเนินการ 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)); => กำหนด 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); // หมายเหตุ: Chame essa função toda vez que สำหรับ chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" สำหรับ manter o ciclo de trabalho configurado anteriormente } // Função que configura o MCPWM Do operador B (Unidade) โมฆะแบบคงที่ 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 (กำหนด o sinal em Baixo) mcpwm_set_duty(mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); //กำหนดค่า porcentagem ทำ PWM ไม่มี Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); //define o nível do ciclo de trabalho (alto ou baixo) } // Função que para o MCPWM de ambos os Operadores static void brushed_motor_stop(mcpwm_unit_t mcpwm_num, mcpwm_timer_t timermcp_m_num) { mcpwm_timer_t timermcp_m_num) //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 }
ห่วง
วงเป็นโมฆะ () {// ย้าย o มอเตอร์ไม่มี sendido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); oled("50"); ล่าช้า (2000); //พาราหรือมอเตอร์ brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); ล่าช้า (2000); // ย้าย o motor no sentido antihorário brushed_motor_backward(MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); oled("25"); ล่าช้า (2000); //พารามอเตอร์ brushed_motor_stop(MCPWM_UNIT_0, MCPWM_TIMER_0); oled("0"); ล่าช้า (2000); // Aceleracao i de 1 a 100 สำหรับ (int i=10;i<=100;i++){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(สตริง(i)); ล่าช้า(200); } // Desaceleração ฉัน 100 a 1 ล่าช้า (5000); สำหรับ (int i=100;i>=10;i--){ brushed_motor_forward(MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled(สตริง(i)); ล่าช้า (100); } ล่าช้า (5000); }
ขั้นตอนที่ 9: ดาวน์โหลดไฟล์
ไฟล์ PDF
ฉันไม่
การวาดภาพ
แนะนำ:
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: 9 ขั้นตอน (พร้อมรูปภาพ)
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: LineaMeteoStazione เป็นสถานีตรวจอากาศที่สมบูรณ์แบบซึ่งสามารถเชื่อมต่อกับเซ็นเซอร์ระดับมืออาชีพจาก Sensirion รวมถึงส่วนประกอบ Davis Instrument (Rain Gauge, เครื่องวัดความเร็วลม) โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อเป็นสถานีตรวจอากาศแบบ DIY แต่ต้องใช้
ความแรงของสัญญาณ ESP32 TTGO WiFi: 8 ขั้นตอน (พร้อมรูปภาพ)
ความแรงของสัญญาณ WiFi ESP32 TTGO: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีแสดงความแรงของสัญญาณเครือข่าย WiFi โดยใช้บอร์ด ESP32 TTGO ดูวิดีโอ
ESP32 Bluetooth Tutorial - วิธีใช้ Bluetooth ในตัวของ ESP32: 5 ขั้นตอน
ESP32 Bluetooth Tutorial | วิธีใช้ Bluetooth ในตัวของ ESP32: สวัสดีทุกคน เนื่องจากบอร์ด ESP32 มาพร้อมกับ WiFi & บลูทูธทั้งคู่ แต่สำหรับโปรเจ็กต์ส่วนใหญ่ เรามักจะใช้แค่ Wifi เราไม่ได้ใช้บลูทูธ ดังนั้นในคำแนะนำนี้ ฉันจะแสดงให้เห็นว่าการใช้บลูทูธของ ESP32 & สำหรับโครงการพื้นฐานของคุณ
เริ่มต้นใช้งาน ESP32 CAM - สตรีมวิดีโอโดยใช้ ESP CAM ผ่าน Wifi - โครงการกล้องรักษาความปลอดภัย ESP32: 8 ขั้นตอน
เริ่มต้นใช้งาน ESP32 CAM | สตรีมวิดีโอโดยใช้ ESP CAM ผ่าน Wifi | โครงการกล้องรักษาความปลอดภัย ESP32: วันนี้เราจะเรียนรู้วิธีใช้บอร์ด ESP32 CAM ใหม่นี้ และวิธีที่เราสามารถเข้ารหัสและใช้เป็นกล้องรักษาความปลอดภัยและรับการสตรีมวิดีโอผ่าน wifi
เริ่มต้นใช้งาน ESP32 - การติดตั้งบอร์ด ESP32 ใน Arduino IDE - ESP32 Blink Code: 3 ขั้นตอน
เริ่มต้นใช้งาน ESP32 | การติดตั้งบอร์ด ESP32 ใน Arduino IDE | รหัสการกะพริบของ ESP32: ในคำแนะนำนี้ เราจะดูวิธีการเริ่มทำงานกับ esp32 และวิธีการติดตั้งบอร์ด esp32 ลงใน Arduino IDE และเราจะตั้งโปรแกรม esp 32 เพื่อเรียกใช้โค้ดกะพริบโดยใช้ arduino ide