Оглавление:

Электротурбина с ESP32: 9 ступеней
Электротурбина с ESP32: 9 ступеней

Видео: Электротурбина с ESP32: 9 ступеней

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

Сегодня я буду обсуждать электрическую турбину с ESP32. В сборке есть деталь, напечатанная в 3D. Я представлю функцию ШИМ ESP32, которая подходит для управления электродвигателями. Это будет использоваться в двигателе постоянного тока. Я также продемонстрирую работу этого MCPWM (Motor Control PWM) на практике.

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

Шаг 1: демонстрация

Шаг 2: управление двигателем с ШИМ

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

Общая схема:

• Функция MCPWM ESP32 может использоваться для управления различными типами электродвигателей. Он состоит из двух блоков.

• Каждый блок имеет три пары выходов ШИМ.

• Каждую пару выходов A / B можно синхронизировать с одним из трех таймеров синхронизации 0, 1 или 2.

• Один таймер можно использовать для синхронизации нескольких выходных пар ШИМ.

Полная схема:

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

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

• Получите обратную связь с СИГНАЛАМИ ЗАХВАТА, такими как положение двигателя

Шаг 3. Используемые ресурсы

Используемые ресурсы
Используемые ресурсы

• Перемычки для подключения

• Heltec Wifi LoRa 32

• Обычный двигатель постоянного тока

• Мост H - L298N

• USB-кабель

• Протоборд

• Источник питания

Шаг 4: ESP 32 Dev Kit - распиновка

ESP 32 Dev Kit - Распиновка
ESP 32 Dev Kit - Распиновка

Шаг 5: Установка турбины

Крепление турбины
Крепление турбины
Крепление турбины
Крепление турбины

Шаг 6: Схема - Подключения

Схема - Подключения
Схема - Подключения

Шаг 7: Измерение на осциллографе

Измерение на осциллографе
Измерение на осциллографе

Шаг 8: Исходный код

Заголовок

#include // Нет необходимости использовать Arduino IDE # include "driver / mcpwm.h" // включает в себя библиотеку "Motor Control PWM" для ESP32 #include // Необходимы для Arduino 1.6.5 и последующие #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 (0x3c, SDA, SCL, RST); // Установить и установить параметры для объекта "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 (); // Выполнить вертикальное отображение display.clear (); // установить или изменить настройки 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, no começo do código mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0; MCPWM_UNIT_0, MCPWM0; // mcpwm_gpio_init (unidade PWM 0, saida B, porta GPIO) => Создать или MCPWM0B no pino GPIO_PWM0B_OUT, чтобы не указывать команду mcpwm_gpio_init (MCPWM_UNIT_0, MCPWM0; MCPWM_UNIT_0, MCPWM0; mcpwm_config_t pwm_config; pwm_config.frequency = 1000; // частота = 500 Гц, pwm_config.cmpr_a = 0; // Ciclo de trabalho (рабочий цикл) do PWMxA = 0 pwm_config.cmpr_b = 0; // Ciclo de trabalho (рабочий цикл) do PWMxb = 0 pwm_config.counter_mode = MCPWM_UP_COUNTER; // Параметр ассиметрии MCPWM pwm_config.duty_mode = MCPWM_DUTY_MODE_0; // Определить цикл перехода на другой уровень // Inicia (Unidade 0, Timer 0, Config PWM) mcpwm_init (MCPWM_UNIT_0, MCPWM_TIMER_0, & pwm_config); // Определите PWM0A и PWM0B com как configurações acima}

Функции

// Настройка функции MCPWM Operador A (Unidade, Timer, Porcentagem (ciclo de trabalho)) static void brasted_motor_forward (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, float duty_cycle) {// unset_mcpwm_index_out_mcpwade (0) do_set_mcpwade (OU_SYNT_DUID_INDOWS) (0, 1 или 2), Operador (A или B)); => Назначить MCPWM без Operador B (Определить значение для 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)); => Настройте параметры для 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)); => определить уровень цикла (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 or ciclo de trabalho configurado anteriormente} // Função que configura o MCPWM Poris (Unidade de Operador B (Unidade de Operador)) статическая пустота brasted_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 без Operador A (Определить значение для 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); // определение уровня цикла движения (alto ou baixo)} // Функционал для MCPWM в системе Operadores static void brasted_motor_stop (mcpwm_unit_t mcpwm_num, mcpwm_timer_t timer_num, mcpwm_timer_t timer_num, mcpwm_set_mcpwm_set_mcpwm_set_mcpwm_set_mcpwm_set_mcpwm_set_mcpwm_set_mcpwm_set) {mcpwm_set_mcpwm_set_mcpwm_set_mcpwm_ // Не разрешено использовать MCPWM без Operador A mcpwm_set_signal_low (mcpwm_num, timer_num, MCPWM_OPR_B); // Desliga o sinal do MCPWM no Operador B}

Петля

void loop () {// Двигайся дальше двигателя, но не разумного brasted_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, 50.0); олед («50»); задержка (2000); // Параметр двигателя brasted_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); олед ("0"); задержка (2000); // Двигаться без движения против часовой стрелки brush_motor_backward (MCPWM_UNIT_0, MCPWM_TIMER_0, 25.0); олед («25»); задержка (2000); // Параметр двигателя brasted_motor_stop (MCPWM_UNIT_0, MCPWM_TIMER_0); олед ("0"); задержка (2000); // Aceleracao i de 1 a 100 for (int i = 10; i <= 100; i ++) {brasted_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); олед (Строка (i)); задержка (200); } // Desaceleração de 100 a 1 delay (5000); for (int i = 100; i> = 10; i -) {brasted_motor_forward (MCPWM_UNIT_0, MCPWM_TIMER_0, i); олед (Строка (i)); задержка (100); } задержка (5000); }

Шаг 9: Загрузите файлы

PDF

Я НЕТ

РИСУНОК

Рекомендуемые: