Оглавление:
Видео: Pwm2pwm: 4 ступени
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-10 13:48
Измените входной сигнал ШИМ на другой выходной сигнал ШИМ с помощью энкодера.
Этот проект родился, когда я купил свой первый станок для лазерной резки. С первого раза непросто установить мощность ШИМ в соответствии с материалом, который вы хотите вырезать. Итак, я хочу создать небольшое устройство для изменения мощности во время выполнения.
Шаг 1. Списки компонентов
Для этого проекта вам понадобятся:
- 1 x Oled-дисплей, в моем случае I2C
- 1 x Arduino, в моем случае - arduino mini pro для небольших размеров.
- 1 х триммер с пуговицей.
- Резистор 3 x 10 кОм, 2 для подтягивания триммера и один для подтягивания вниз.
На картинке этого шага вы видите еще один Arduino mini pro, называемый лазерным, потому что я смоделировал работу контроллера лазера (pwm в сигнале) с помощью этого Arduino.
Шаг 2: Подключения
Не забудьте подключить на этой схеме 3 резистора, подтягивающий и понижающий.
В первый раз я рекомендую вам подключить второй Arduino (на предыдущем шаге он назывался лазером), чтобы проверить, работают ли код и соединение вместе.
Если вы более знакомы со схематическим представлением, откройте файл pwmTOpwm.svg.
Шаг 3: эскиз Arduino
Вы можете легко скопировать мой код со страницы GitHub:
Основные навыки этого кода - интеграция команды "pulseIn", подробнее:
Когда вы пытаетесь измерить сигнал ШИМ, поступающий на микроконтроллер, вам необходимо подсчитать, как долго сигнал остается в верхнем (или нижнем) периоде. Вы можете использовать команду «pulseIn».
Если вы попытаетесь изобразить сигнал pulseIn, вы можете увидеть что-то нестабильное.
Чтобы решить эту проблему, нам нужно использовать медианный фильтр, в моем случае экспоненциальную скользящую среднюю (EMA).
Вы можете попробовать этот классный и простой фильтр на следующем примере:
Не волнуйтесь, фильтр уже встроен в код: p.
Если вы используете второй Arduino (лазер), вы можете загрузить в этот Arduino следующий пример:
Шаг 4: печатная плата
Я хотел бы создать печатную плату для этого проекта с помощью KiCad и поделиться ею.
Если я внесу изменения в печатную плату, я опубликую их на странице GitHub.