
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05



Сегодня я буду обсуждать электрическую турбину с 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 - распиновка

Шаг 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: Загрузите файлы
Я НЕТ
РИСУНОК
Рекомендуемые:
Ретро-ночник «Райотрон» (Часть 1): 16 ступеней

Ретро-ночник «Rayotron» (Часть 1): Введение В декабре 1956 года Атомные лаборатории рекламировали Rayotron как «первый недорогой электростатический генератор и ускоритель частиц» для учителей естественных наук и любителей [1]. Rayotron был большим, с резиновым ремнем
Усилитель динамика ПК: 6 ступеней (с изображениями)

Усилитель динамика ПК: это транзисторный усилитель малой мощности (менее 10 Вт), использующий LM386 и TIP41 / 42. Несмотря на то, что выходная мощность не очень впечатляет, он вполне может служить усилителем для динамика ПК и MP3-плеера. квартира вместе, ха
2 настольных источника питания 48 В, 5 А: 7 ступеней (с изображениями)

2x 48V 5A Bench Top Power Supply: Это руководство по сборке настольного источника питания. Не ждите ни разработки электроники, ни большого количества пайки, я просто заказал некоторые детали на AliExpress и положил их в коробку. Имейте в виду, что я внес небольшие изменения в пабли
Супер БЫСТРЫЙ RC Ground Effect Vehicle (Экраноплан): 5 ступеней (с фотографиями)

Super FAST RC Ground Effect Vehicle (Экраноплан): вы знаете, как во время приземления самолеты некоторое время зависают на высоте нескольких футов над землей, прежде чем их колеса действительно коснутся взлетно-посадочной полосы? Это не только для обеспечения плавной посадки пассажиров, но и естественный результат эффекта земли, при котором
Начало работы с ESP32 - Установка плат ESP32 в Arduino IDE - Мигающий код ESP32: 3 шага

Начало работы с ESP32 | Установка плат ESP32 в Arduino IDE | Мигающий код ESP32: в этой инструкции мы увидим, как начать работу с esp32 и как установить платы esp32 в Arduino IDE, и мы запрограммируем esp 32 для запуска мигающего кода с использованием arduino ide