Агуулгын хүснэгт:

ESP32 бүхий цахилгаан турбин: 9 алхам
ESP32 бүхий цахилгаан турбин: 9 алхам

Видео: ESP32 бүхий цахилгаан турбин: 9 алхам

Видео: ESP32 бүхий цахилгаан турбин: 9 алхам
Видео: 5 САМЫХ ИННОВАЦИОННЫХ РЕВЕРСНЫХ ЭЛЕКТРИЧЕСКИХ ТРАЙКОВ 2021 ГОДА 2024, Долдугаар сарын
Anonim
Image
Image
Жагсаал
Жагсаал

Өнөөдөр би ESP32 -тэй цахилгаан турбины талаар ярилцах болно. Уг чуулган нь 3D форматаар хэвлэгдсэн хэсэгтэй. Би цахилгаан хөдөлгүүрийг хянахад тохиромжтой ESP32 -ийн ХОУХШ -ийн функцийг танилцуулах болно. Үүнийг DC хөдөлгүүрт ашиглах болно. Би мөн энэхүү MCPWM (Motor Control PWM) ажиллагааг практик хэрэглээнд харуулах болно.

Би энэ төсөлд ESP32 LoRa -ийг ашигласан бөгөөд энэ микроконтроллер нь хоёр блоктой гэдгийг энд тэмдэглэх нь зүйтэй гэж бодож байна. Эдгээр блокууд нь тус бүр гурван моторыг удирдах чадвартай. Тиймээс ХОУХ -тэй 6 хүртэлх моторыг бие даан удирдах боломжтой. Энэ нь миний энд ашиглах хяналт нь стандарт биш гэсэн үг юм (энэ нь Arduino -той төстэй зүйл юм). Үүний оронд хяналт нь чип өөрөө бөгөөд ESP32 нь моторын удирдлагын уян хатан чанарыг баталгаажуулдаг.

Алхам 1: Жагсаал

Алхам 2: ХОУХ -ны моторын хяналт

ХОУХ -ны моторын хяналт
ХОУХ -ны моторын хяналт
ХОУХ -ны моторын хяналт
ХОУХ -ны моторын хяналт

Ерөнхий диаграм:

• ESP32 -ийн MCPWM функцийг янз бүрийн төрлийн цахилгаан хөдөлгүүрийг удирдахад ашиглаж болно. Энэ нь хоёр нэгжтэй.

• Нэгж бүр гурван ХОУХ -ны гаралтын хостой.

• Гаралтын A / B хос бүрийг гурван синхрончлолын таймерын аль нэгээр нь синхрончлох боломжтой 0, 1, эсвэл 2.

• Нэг Таймер ашиглан нэгээс олон ХОУХ -ны гаралтын хосыг синхрончлох боломжтой

Бүрэн диаграм:

• Нэгж бүр нь синхрончлолын тэмдэг болгон оролтын дохиог цуглуулах чадвартай;

• Хэт гүйдэл буюу моторын хэт хүчдэлийн алдааг илрүүлэх;

• Хөдөлгүүрийн байрлал гэх мэт CAPTURE SIGNALS -аас санал авах

Алхам 3: Ашигласан нөөц

Ашигласан нөөц
Ашигласан нөөц

• Холбох зориулалттай холбогч

• Heltec Wifi LoRa 32

• Энгийн DC мотор

• H гүүр - L298N

• USB кабель

• Protoboard

• Цахилгаан хангамж

Алхам 4: ESP 32 Dev Kit - Pinout

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

Алхам 5: Турбин суурилуулах

Турбин суурилуулах
Турбин суурилуулах
Турбин суурилуулах
Турбин суурилуулах

Алхам 6: Хэлхээ - холболтууд

Хэлхээ - холболтууд
Хэлхээ - холболтууд

Алхам 7: Осциллографын хэмжилт

Осциллограф дээрх хэмжилт
Осциллограф дээрх хэмжилт

Алхам 8: Эх код

Толгой

#оруулах // Arduino IDE -г ашиглах шаардлагатай "драйвер/mcpwm.h" -ийг оруулна уу // "Motor Control PWM" номиналийн ESP32 -ийг оруулаарай SSD1306.h "// o mesmo que #include" SSD1306Wire.h "// OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - GPIO16 #define SDA 4 #define SCL 15 #destine RST 16 SSD1306 дэлгэц (0x3c, SDA, SCL, RST); // Instanciando e ajustando os pinos do objeto "display" #GPIO_PWM0A_OUT 12 -ийг тодорхойлох // Declara GPIO 12 como PWM0A #define GPIO_PWM0B_OUT 14 // Declara GPIO 14 como PWM0B

Тохируулах

void setup () {Serial.begin (115200); display.init (); //display.flipScreenVertically (); // Виртуал дэлгэцийн дэлгэц.clear (); // дэлгэцийг харуулах.setTextAlignment (TEXT_ALIGN_LEFT); // Arial 16 display.setFont (ArialMT_Plain_16); // mcpwm_gpio_init (unidade PWM 0, saida A, porta GPIO) => Суурилуулалт эсвэл MCPWM0A байхгүй, GPIO_PWM0A_OUT зарлахгүй ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, MCP_PO00M, MCPWM0A) // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Суурилуулалт эсвэл MCPWM0B байхгүй GPIO_PWM0B_OUT зар сурталчилгаа ccdigo mcpwm_gpio_init (MCPWM_UNIT_0, MCP_PO_00, MCPWM0B) mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // давтамж = 500 Гц, 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; // MCPWM ассиметрийн хувьд 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 -ийг тохиргоог acima} гэж тодорхойл

Чиг үүрэг

// MCPWM оператор A (Unidade, Timer, Porcentagem (ciclo de trabalho)) статик хоосон орон зай brushed_motor_forward (0, 1 ou 2), Operador (A ou B)); => SCP эсвэл MCPWM ямар ч Operador B (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)); => 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)); => тодорхойлно уу? // Nota: Chame essa função toda vez cham chamado "mcpwm_set_signal_low" ou "mcpwm_set_signal_high" para trabalho configurado anteriormente} // Funksão que configura o MCPWM Do operador B (Unidade, Timer) 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); // MCPWM ямар ч операторгүй A (Sinal em Baixo -г тодорхойлох) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_B, duty_cycle); // PWM no Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0) -ийг тохируулах; // тодорхойлох o nível do ciclo de trabalho (alo ou baixo)} // Funksão que o o MCPWM de ambos os Operadores static void brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_mum_mum_mum_mum_mum_m_) // MCPWM байхгүй бол операторгүй mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // MCPWM -ийг ажиллуулахгүй байх

Гогцоо

void loop () {// Move o motor no sentido horário brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); олед ("50"); саатал (2000); // Мотор сойзтой_мотор_ зогсолт (MCPWM_UNIT_0, MCPWM_TIMER_0); олед ("0"); саатал (2000); // Хөдөлгөөнгүй моторгүй sentiho antihorário brushed_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); олед ("25"); саатал (2000); // Мотор сойзтой_моторын зогсолт (MCPWM_UNIT_0, MCPWM_TIMER_0); олед ("0"); саатал (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)); саатал (200); } // Desaceleração i de 100 a 1 саатал (5000); for (int i = 100; i> = 10; i-) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (String (i)); саатал (100); } саатал (5000); }

Алхам 9: Файлуудыг татаж авах

PDF

INO

ЗУРАГ

Зөвлөмж болгож буй: