Генератор ШИМ с кнопочным контролем

Простой генератор ШИМ (широтно-импульсная модуляция), построен на микроконтроллере ATtiny серии 25 / 45 / 85 и питается от стабилизированного напряжения 2,7 — 5,5 В. На его выходе получается прямоугольный сигнал с выбранной постоянной частотой 1,25/2,5/5/10/20/40/80 кГц и регулируемым заполнением в диапазоне 0-100% с шагом 1%. Написана управляющая программа на Ассемблере, и она идентична для каждого из этих микроконтроллеров.

Схема генератора ШИМ на ATtiny

Принцип работы схемы: после подачи питания на выходе генератора (разъем CON2) формируется прямоугольный сигнал с частотой 10 кГц, заполнением 50% и уровнем, зависящим от значения напряжения питания Vcc. Чтобы уменьшить / увеличить заполнение сигнала на 1%, кратко нажмите кнопку микрик S1 (-) / S2 (+) (длительность нажатия менее 250 мс). Нажатие и удерживание кнопки S1 / S2 в течение более длительного времени приведет к непрерывному уменьшению / увеличению значения заполнения со скоростью примерно 4% в секунду до тех пор, пока не будет достигнуто предельное значение, то есть 0% или 100%. Установка 0% / 100% заполнения вызовет непрерывную логику низкого / высокого уровня (GND / Vcc) на выходе генератора.

Чтобы изменить частоту сигнала ШИМ, нажмите одновременно кнопки S1 и S2 на короткое время (менее 1 секунды). Тогда частота будет меняться до следующего значения в таком порядке: 10/20/40/80/1,25/2,5/5 кГц по кругу. Одновременное нажатие и удерживание кнопок S1 и S2 будет непрерывно изменять значение частоты до тех пор, пока кнопки не будут отпущены. После каждого изменения частоты начальное значение заполнения сигнала всегда составляет 50% (независимо от предыдущей настройки).

Транзистор полевой T1 (MOSFET-P) защищает схему от обратного подключения полярности напряжения питания. Была специально выбрана модель Si2305, которая начинает работать при напряжении на затворе Vgs от 1,8 В — это важно, если схема будет работать от низкого напряжения. В качестве замены для T1 можете использовать следующие транзисторы: DMP1045, FDN306, Si2315, IRLML6401. При отсутствии подходящего полевого транзистора можно вообще отказаться от этой защиты — тогда нужно замкнуть площадки «D» и «S» на плате.

Кварцевый резонатор X1 нужен для работы микроконтроллера, благодаря чему получается выход с достаточно точной и стабильной частотой. Также возможно синхронизировать микроконтроллер с его внутренним RC-генератором с номинальной частотой 8 МГц. Преимущество этого решения заключается в том, что не нужно устанавливать резонатор X1 и конденсаторы C3 / C4, но большим недостатком будет неточная и нестабильная частота выходного сигнала.

Конденсаторы С1 и С2 фильтруют напряжение питания. Резистор R2 ограничивает ток, снимаемый непосредственно с вывода PB1 микроконтроллера, предотвращает его повреждение в случае короткого замыкания на выходе CON2.

При программировании не забудьте правильно установить фузы:

  1. Когда микроконтроллер работает с кварцевым резонатором X1: FL (низкий уровень фуза): $ FF, FH (высокий уровень): $ DF, FE (расширенный): $ FF, LB (блокирующие биты): $ FF.
  2. Когда микроконтроллер будет синхронизирован с внутренним RC-генератором: FL (низкий уровень): $ E2, FH (высокий уровень): $ DF, FE (расширенный): $ FF, LB (блокирующие биты): $ FF.

Генератор может питаться постоянным напряжением 2,7 — 5,5 В от блока питания или от аккумуляторов (например от одного 18650 Li элемента). Потребляемый ток составляет максимум 2,5 / 5 мА (сигнал 80 кГц / 99%, выход генератора не загружен). Собран ШИМ генератор на односторонней плате размером 40 x 40 мм.

Улучшение схемы контроллера

Конечно всегда есть пути дальнейшего улучшения схемы:

  1. Хорошо бы дать между выходом ШИМ и микроконтроллером некоторый буфер на транзисторе или простой усилитель, работающий в классе AB. В этом случае он защитит микроконтроллер от повреждений и дополнительно раскачает сигнал.
  2. Дополнительные шаги контроля частоты также были бы полезны. Если собираетесь внедрить проект, предлагаем более крупный микроконтроллер с аппаратным ШИМ для SMPS, чтобы было 2/4 канала и регулирование времени простоя.

Можно также расширить диапазон регулирования заполнения до 0..100%. Это может быть полезно при тестировании работы исполнительных блоков управления ШИМ. Например, при 100% заполнении — измерение падения напряжения на дорожках и открытом ключе.

Сравнение с ШИМ на NE555

Прямоугольный сигнал конечно может быть получен с использованием популярнейшей микросхемы NE555, плюс два выпрямительных диода, несколько резисторов и конденсаторов. Это естественно гораздо более дешевое решение. И не нужно ничего программировать.

Но разница в том, что генератор 555 является аналоговым, и вы никогда не знаете точно, какое именно значение скважности установили в данный момент времени. Он также не позволяет точно установить уровень скважности с разрешением 1%.

Аналоговые и цифровые схемы — это два разных мира. У каждого из них есть свои плюсы и минусы, но факты таковы, что цифровой контроль сегодня есть практически везде и за ним будущее схемотехники.

В случае AtTiny программирование может быть выполнено по i2s, последовательно с пульта дистанционного управления или с использованием энкодера. Единственное, что нужно добавить, это дополнительный код. С таймером 555 таких возможностей не будет. Прилагаемый архив содержит схему в Eagle, плату в DipTrace, исходный текст программы и документацию в PDF.

Схема генератора ШИМ на МК

Обновление 14.2.2025

Ещё один простой генератор ШИМ (широтно-импульсной модуляции), построенный на микроконтроллере ATtiny24/44/84, работающий от стабилизированного напряжения Vcc=2,7-5,5 В. На выходе формируется прямоугольный сигнал с выбранной фиксированной частотой 1,25/10/80 кГц и коэффициентом заполнения, регулируемым в диапазоне 0–100% с шагом 1%. Написана программа на ассемблере и она идентична для каждого из упомянутых микроконтроллеров. Параметры выходного сигнала отображаются на монохромном OLED-дисплее (контроллер SSD1306, шина I2C) с разрешением 128×32/128×64 пикселей и адресом $78 ($3C)/$7A ($3D).

После включения питания на выходе генератора (разъем CON2) получается прямоугольный сигнал с частотой 10 кГц, скважностью 50% и уровнем, зависящим от величины напряжения питания Vcc. Если перемычка J1 (FLIP) замкнута (ВКЛ) во время включения питания, отображаемое изображение будет повернуто на 180 градусов. Если после включения питания OLED-дисплей не обнаружен, генератор будет нормально работать и без него. Дисплей 128×64 обрабатывается как 128×32, поэтому отображаемое им изображение имеет горизонтальные зазоры в одну строку (каждая вторая горизонтальная строка пустая, из-за чего изображение растягивается по вертикали).

Для уменьшения/увеличения скважности сигнала на 1% кратковременно (менее 250 мс) нажмите кнопку (микропереключатель) S1 (DUTY-)/S2 (DUTY+). Нажатие и удерживание кнопки S1/S2 в течение более длительного периода времени приведет к непрерывному уменьшению/увеличению значения заполнения со скоростью приблизительно 4%/с, пока не достигнет предельного значения, т. е. 0%/100% соответственно. Установка рабочего цикла на 0%/100% приведет к постоянному низкому/высокому логическому состоянию (GND/Vcc) на выходе генератора.

Для изменения частоты сигнала кратковременно (менее 1 секунды) нажмите одновременно обе кнопки S1 и S2. Затем частота изменится на следующее значение в последовательности: 10/80/1,25 кГц и т.д. Одновременное нажатие и удерживание кнопок S1 и S2 приведет к непрерывному изменению значения частоты со скоростью приблизительно 1 раз/с до тех пор, пока кнопки не будут отпущены. После каждого изменения частоты начальный рабочий цикл всегда составляет 50% (независимо от предыдущей настройки).

При программировании не забудьте правильно установить фьюз-биты:

1. Когда микроконтроллер тактируется кварцевым резонатором X1: FL (предохранитель низкого уровня): $FF, FH (предохранитель высокого уровня): $DF, FE (предохранитель расширенного уровня): $FF, LB (биты блокировки): $FF.

2. Когда микроконтроллер тактируется внутренним RC-генератором: FL (предохранитель низкого уровня): $E2, FH (предохранитель высокого уровня): $DF, FE (предохранитель расширенного уровня): $FF, LB (биты блокировки): $FF.

Кварцевый резонатор X1 тактирует микроконтроллер, благодаря чему на выходе формируется сигнал с достаточно точной/стабильной частотой, а временные ходы сигналов OSCL/OSDA точны/симметричны относительно друг друга. Также возможно тактировать микроконтроллер с помощью его внутреннего RC-генератора с номинальной частотой 8 МГц.

Преимущество этого решения заключается в том, что нет необходимости устанавливать резонатор X1 и конденсаторы C3/C4, но большим недостатком является очень неточная/нестабильная частота выходного сигнала и ухудшенное качество временных форм сигнала OSCL/OSDA. Конденсаторы C1 и C2 фильтруют напряжение питания. Резистор R2 ограничивает ток, потребляемый непосредственно от вывода PA7 микроконтроллера, что предотвращает его повреждение в случае короткого замыкания выхода CON2.

Скачать файл прошивки

Оцените материал:

5 / 5. Рейтинг: 2

Может подскажете что улучшить?