Съдържание:

Електрическа турбина с ESP32: 9 стъпки
Електрическа турбина с ESP32: 9 стъпки

Видео: Електрическа турбина с ESP32: 9 стъпки

Видео: Електрическа турбина с ESP32: 9 стъпки
Видео: Котика ударило током, 10 т. Вольт 2024, Ноември
Anonim
Image
Image
Демонстрация
Демонстрация

Днес ще обсъждам електрическа турбина с ESP32. Монтажът има част, която е отпечатана в 3D. Ще представя PWM функция на ESP32, която е подходяща за управление на електродвигатели. Това ще се използва в DC двигател. Ще демонстрирам и работата на този MCPWM (PWM за управление на двигателя) в практическо приложение.

Използвах ESP32 LoRa в този проект и мисля, че тук е важно да се отбележи, че този микроконтролер има два блока вътре. Тези блокове могат да управляват по три двигателя всеки. По този начин е възможно да се управляват до шест двигателя с ШИМ, всички независимо. Това означава, че контролът, който ще използвам тук, не е стандарт (който е нещо подобно на Arduino). Вместо това контролът е самият чип, който гарантира на ESP32 много гъвкавост по отношение на управлението на двигателя.

Стъпка 1: Демонстрация

Стъпка 2: ШИМ управление на двигателя

ШИМ управление на двигателя
ШИМ управление на двигателя
ШИМ управление на двигателя
ШИМ управление на двигателя

Обща диаграма:

• Функцията MCPWM на ESP32 може да се използва за управление на различни видове електродвигатели. Разполага с две единици.

• Всяко устройство има три изходни двойки ШИМ.

• Всяка изходна A / B двойка може да бъде синхронизирана с един от трите таймера за синхронизация 0, 1 или 2.

• Един таймер може да се използва за синхронизиране на повече от една ШИМ изходна двойка

Пълна диаграма:

• Всяко устройство може също да събира входни сигнали като СИНХРОНИЗАЦИОННИ ЗНАКИ;

• Открийте ЗНАКИТЕ НА НЕИЗПРАВНОСТ за свръхток или пренапрежение на двигателя;

• Получавайте обратна връзка със СИГНАЛИ ЗА ЗАХВАНЕ, като например позицията на двигателя

Стъпка 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: Изходен код

Заглавка

#include // Не е необходимо Caso да използва Arduino IDE #включва "драйвер/mcpwm.h" // включва библиотека "PWM за управление на двигателя" до ESP32 #include // Необходими апени за 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 e ajustando os pinos do objeto "display" #define 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.flipScreenVertical (); // Vira a tela verticalmente display.clear (); // ajusta o alinhamento за esquerda display.setTextAlignment (TEXT_ALIGN_LEFT); // добавяне на фон за 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 декларира няма começo do codigo mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0A; MCPWM0A); // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Instancia o MCPWM0B без pino GPIO_PWM0B_OUT декларира няма começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0B0_MPWM0B0_MPWM0B0_MPWM0B0_MPWM0B0_MP_0_MP_0_MP_0_M0_MP_0_MP_0_MP_0_MP_0_MP_0_MP_0_MP_0_MPWM0_0; mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // честота = 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; // Пара 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)) static void brushed_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) {// mc (0, 1 ou 2), Operador (A ou B)); => Desliga o sinal do MCPWM no Operador B (Define o sinal em Baixo) mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // mcpwm_set_duty (универсална PWM (0 ou 1), Numero do timer (0, 1 ou 2), Operador (A ou B), Ciclo de trabalho (% до PWM)); => Конфигурирайте порцентама за PWM без Operador A (Ciclo de trabalho) mcpwm_set_duty (mcpwm_num, timer_num, MCPWM_OPR_A, duty_cycle); // mcpwm_set_duty_tyoe (универсална PWM (0 ou 1), Numero do timer (0, 1 ou 2), Operador (A ou B), Nível do ciclo de trabalho (alto ou baixo)); => дефинирайте нивото на цикло де трабалхо (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 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,, статична празнота 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); // Конфигурирайте порцентама до PWM без Operador B (Ciclo de trabalho) mcpwm_set_duty_type (mcpwm_num, timer_num, MCPWM_OPR_B, MCPWM_DUTY_MODE_0); // дефиниране на нивото за цикло на трабалхо (alto ou baixo)} // Функции за изчакване за MCPWM де ambos os Operadores статична празнота brushed_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num) {mcpwm_m Timer_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}

Цикъл

void loop () {// Преместване на мотора без усещане 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); // Преместване на мотор без сензорен антихорион 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 for (int i = 10; i <= 100; i ++) {brushed_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); oled (низ (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 (низ (i)); забавяне (100); } забавяне (5000); }

Стъпка 9: Изтеглете файловете

PDF

АЗ НЕ

ЧЕРТЕЖ

Препоръчано: