Схема шим регулятора напряжения на микроконтроллере. Разработка проекта ШИМ-регулятора на микроконтроллерах серии AVR для управления нагрузкой электрических устройств

Очень часто нужно иметь возможность регулировать ток, протекающий через лампы или нагревательные элементы. Поскольку нагрузка у них резистивная - самое простое решение собрать небольшой PWM (с английского ШИМ - широтно-импульсная модуляция) регулятор. Поскольку простые схемы на базе таймеров NE555 не интересовали - решено было разработать и собрать свою, несколько похожую на .

Схема, несмотря на наличие микроконтроллера PIC18LF2550, очень проста для повторения и может быть условно разделена на 3 части:

Генератор ШИМ

Микроконтроллер генерирует чёткие импульсы нужной формы и скважности, что значительно упрощает схему. Есть две кнопки, для увеличения и уменьшения мощности. Они идут на 3 и 5 выводы микросхемы PIC18LF2550. В зависимости от ширины импульса - светодиод медленнее или быстрее мигает, так визуально можно оценить скважность. Если светодиод светит полностью - мощность 100%, а если он погас, то скважность 0%.

Микроконтроллерный блок питания

Стаблизатор МК на 3,3 вольта, поэтому в зависимости от выходного транзистора можно использовать источник питания от 3.7 до 25 вольт. Частота коммутации составляет 32 кГц, а длительность импульса разделена на 256 шагов, в том числе полное включение и отключение.

Коммутатор нагрузки

Драйвер для MOSFET транзистора является - обычный 2N3904. Сам силовой транзистор может быть любой подходящий N-канальный MOSFET, не обязательно как по схеме 80NF55L.

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

При первом включении схеме на сегментном индикаторе горит цифра 0. Включение и отключение осуществляется одномоментным нажатием и удержанием двух кнопок-микропереключателей. Регулировка больше-меньше – каждым нажатием по отдельности. Если не нажимать ни на один из тумблеров, то после последнего нажатия через два часа регулятор отключится самостоятельно, индикатор до тех пор будет моргать на ступени последнего рабочего уровня потребляемой мощности.

В момент отключения устройства от сети запоминается последний уровень выдаваемой мощности, который будет автоматически задан при очередном включении. Регулировка осуществляется в диапазоне от 0 до 9 и далее от А до F. То есть всего имеется 16 ступеней регулировки.

Радиатор на фото выше достаточно большой, конструкция позволяет поставить вариант и по меньше, но другого у меня не было. При первом включении устройства у меня на дисплее моргал 0, на нажатие кнопок схема не реагировала. Заменив конденсатора по питанию на номинал 1000 мкФ,проблема исчезла.

Печатная плата в формате и прошивка микроконтроллера размещены в одном архиве по ссылке выше.

Схема используется для плавного регулирования мощности в нагрузке. В основу способа управления положен метод фазового управления симистором. Сущность его заключается в пропуске части полупериода переменного сетевого напряжения. Ток поступающий в нагрузку пропорционален интегралу полученного сигнала. Основа конструкции микроконтроллер PIC16F1823.

Устройство поддерживает работу с активной (лампа накаливания, нагреватель) и индуктивной нагрузкой. Тактирование микроконтроллера осуществляется от внутреннего генератора. Сигнал синхронизации с сетью поступает с выпрямительного моста на вход внутреннего компаратора микроконтроллера через фильтр на R10, C5, R9, R8, C3. Опорное напряжение компаратора поступает с внутреннего ЦАП микроконтроллера и равно около 0,6 В, которое задается при конфигурации МК. Для устранения влияния емкости C6 на синхронизацию применяется диод D6. Индикация выполнена на E30561 с общим катодом.

Конструктивно устройство собрано на двух печатных платах. На одной распологаются индикатор и управляющие кнопки, а на другой МК, блок питания и симистор. Соединение плат выполнено проводом МГТФ.

С радиатором для симистора (HS-135-38), как на рисунке максимальная мощность нагрузки около 500 Вт. Соответственно под этот радиатор и сделано посадочное место на печатной плате.

Прошивка для МК выполнена в среде MPLAB на языке С для компилятора HI-TECH PICC 9.83. Скачать печатные платы, прошивку и проект MPLAB вы можете по ссылке выше.

Регулирование конструкции происходит с помощью симистора типа BT138. Управление которым осуществляется посредством МК. Цифровой LED дисплей показывает на сколько процентов в текущий момент времени открыт симистор. Логическая часть схемы получает питание от блок питания, основа которого стабилизатор напряжения DA1 7805.

Эта схема отлично подойдет для раздельной регулировки мощности отдачи для двух разных нагрузок, например, нагреватели, лампы, электродвигатели. Максимальная мощность нагрузки зависит от типа ключей, её коммутирующих. На схеме ниже в роли таковых выступают транзисторы КТ819, но могут быть и другие варианты, в зависмости от необходимой мощности обоих нагрузок. Устройство генерирует импульсные сигналы, которые идут на любой из силовых ключей.

Прибор генерирует импульсные сигналы, широту их импульсов можно настраивать 256 равными степенями. Для управления схемой предназначены переменные сопротивления, подсоединенные к портам РВЗ и РВ4 МК, работающим с АЦП. ATtiny13 измеряет номинал сопротивление переменного резистора и задает широту импульсов выходного импульсного сигнала, следующих на ключ, управляющий питанием конкретной нагрузки. Т.е, поворачивая регулятор переменного сопротивления осуществляется регулировка мощности. Такая регулировка по сравнению с настройкой кнопками «меньше» и «больше» более удобна в использование, благодаря оперативности. Для программирования устройства имеется разъем ISP6. При программировании фьюзы ставим по умолчанию, работа с внутренним тактовым RC-генератором на частоте 9,6 МГц. Архив с исходником пршивки, забираем по ссылке выше.

Регулятор оборотов микродрели на PIC-контроллере
ПОТАПЧУК,
г.Ровно, Украина. E-mail: [email protected]

В радиолюбительской практике одним из самых важных инструментов является дрель. В качестве миниатюрных электродрелей для сверления плат часто используются двигатели постоянного тока с приделанным микровыключателем на рукоятке. Питание на такую микроэлектродрель подается от внешнего блока питания. В большинстве случаев обороты электромотора не регулируются, а чтобы "сверлилка" лучше работала, на нее подается завышенное напряжение питания. Это приводит к преждевременному выходу со строя электромотора. Еще одним слабым звеном устройства является кнопка включения. Это и не удивительно, если учесть, что пусковой ток электромотора может достигать 3 А и более.

Эти недостатки побудили разработать регулятор оборотов на современном микроконтроллере ф.Microchip PIC16F627/628. Важной особенностью данной модели микроконтроллера является наличие внутреннего двухскоростного RC-генератора. Используя эту особенность, в процессе выполнения программы можно переключать тактовую частоту микроконтроллера с 4 МГц на 32 кГц и наоборот. Данная микросхема содержит также встроенный широтно-импульсный модулятор (ШИМ), что позволяет реализовать весь диапазон регулировки оборотов. Коэффициент заполнения импульсов (величина, обратная скважности) меняется от 0 до 1. Это позволяет построить очень эргономичное устройство практически на одной микросхеме с минимальным количеством внешних компонентов.


Технические характеристики

Напряжение питания, В 8...25
Ток потребления устройством в рабочем режиме
(зависит от мощности электромотора), А 0.5...3
Ток потребления в ждущем режиме работы, мА < 1
Частота работы ШИМ, кГц 15
Коэффициент заполнения ШИМ 0.4...1
Количество ступеней регулировки напряжения на электродвигателе 50
Плавность регулировки скважности ШИМ, ступени/с 2

К выводам 18, 7 и 8 микроконтроллера (рис.1) подключены кнопки управления устройством. Следует отметить, что от электромотора и соединительного шлейфа во время работы идет довольно солидное электромагнитное излучение, которое может привести к самопроизвольному срабатыванию кнопок SB2 и SB3. Для предотвращения этого используются блокировочные конденсаторы С4 и С5, которые шунтируют высокочастотные наводки на выводах кнопок. Цепь R2-VD2 представляет собой простейший параметрический стабилизатор, снижающий уровень напряжения, которое подается с кнопки SB1 на цифровой вход микроконтроллера, до стандартных TTL-уровней сигнала. Резистор R3 формирует на
выводе 18 DD1 уровень логического "О" в то время, когда кнопка SB1 отпущена. Светодиод HL1 отображает режимы работы устройства.
ШИМ-сигнал с выхода микроконтроллера через резистор R4 подается на составной транзистор VT1, VT2. Коллекторы транзисторов подсоединены к одному из полюсов электромотора. Электромотор подключается к устройству при помощи трехпроводного шлейфа. Два провода используются для подачи питания, третий — для приема сигнала от кнопки "Пуск". Напряжение питания на двигателе зависит от коэффициента заполнения ШИМ-сиг-нала. Стабилизатор на микросхеме DA1 обеспечивает питанием микроконтроллер. Конденсаторы С1 и С2 используются для фильтрации высокочастотных помех, поступающих как с блока питания, так и от самого электромотора. Для этих же целей установлен конденсатор СЗ, включенный параллельно полюсам питания электромотора. Диод VD1 гасит токи самоиндукции, которые появляются в цепи питания электромотора при работе.
Подробно разобраться в принципах работы устройства поможет схема алгоритма, представленная на рис.2. В соответствии с ним сразу после старта программы микроконтроллер проходит начальную инициализацию. Во время инициализации настраиваются порты микроконтроллера, таймеры (счетчики), и переключается тактовая частота с 4 МГц на 32 кГц. После этого микроконтроллер входит в программный цикл ожидания нажатия кнопки "Пуск" (SB1). В этом цикле также происходит обработка прерывания по переполнению таймера-счетчика 2, которое используется для задания периодов работы светодиодаНL1.
После нажатия кнопки SB1 программа микроконтроллера сразу же переключает частоту тактирования с 32 кГц на 4 МГц и проводит инициализацию внутреннего ШИМ-контрол-лера. Далее процессор читает сохраненное ранее в энергонезависимой памяти (EEPROM) значение длительности импульса ШИМ и записывает его в соответствующий служебный регистр. Проделав все эти операции, микроконтроллер запускает ШИМ и снова оказывается в программном цикле ожидания нажатия кнопок SB2, SB3, либо отпускания кнопки SB1.
При нажатии кнопки SB2 (SB3) микроконтроллер увеличивает (уменьшает) длительность импульса ШИМ, и тем самым изменяет напряжение, прикладываемое к электромотору. После каждого изменения длительности импульса ШИМ текущее значение сохраняется в виде константы в энергонезависимой памяти микроконтроллера (EEPROM). Это позволяет не проводить начальную настройку скорости вращения "сверлилки" каждый раз при начале работы. Если же программа обнаруживает, что кнопка SB1 отпущена, микроконтроллер сразу же переходит на программную ветвь завершения работы ШИМ-регулятора. В этой ветви производится выключение ШИМ (на выводе 9 DD1 устанавливается низкий уровень), и микроконтроллер снова переходит в цикл ожидания нажатия кнопки "Пуск". Дальше алгоритм работы устройства повторяется.
Управляющая программа микроконтроллера приведена в табл.1, а карта прошивки — в табл.2. Основные ее задачи — сканирование кнопок и управление ШИМ-сигналом.
Благодаря наличию в данном микроконтроллере регистра периода ШИМ, можно задать практически любую его частоту. В данном устройстве из практических соображений частота ШИМ выбрана около 15 кГц (точное значение зависит от частоты внутреннего RC-генератора). Коэффициент заполнения (К3), как уже упоминалось выше, можно задать от 0 до 1. Но практика показала, что большинство электромоторов при К3 меньше 0,4 не вращаются. По этой причине диапазон возможных К3 в данной программе составляет 0,4.. 1. Программа обеспечивает дискретное изменение К3 (50 ступеней) при нажатии соответствующих кнопок управления.
Устройство управляется с помощью трех кнопок SB1.. SB3. При помощи кнопки SB1 осуществляется включение и выключение электромотора (пока эта кнопка нажата, мотор вращается). Кнопка SB2 увеличивает обороты, a SB3 — уменьшает. Каждое изменение оборотов запоминается в энергонезависимой памяти микроконтроллера. Поэтому при следующем включении питания электродвигатель вращается со скоростью, заданной раньше.
Когда электродрель выключена, микроконтроллер находится в режиме энергосбережения (частота RC-генератора — 37 кГц), и ток потребления составляет менее 1 мА. О данном режиме сигнализирует светоди-Од HL1, который неравномерно мигает (с интервалом в 3 с). После пуска электромотора кнопкой SB1 светоди-од гаснет Изменение К3 можно производить только при включенном электромоторе. Все нажатия кнопок SB2 и SB3 подтверждаются миганием светодиода HL1. Если во время регулировки оборотов достигнут верхний либо нижний предел, светодиод HL1 перестает мигать, сигнализируя о том, что регулятором достигнут предел регулировок.
Устройство собрано на плате размерами 55x38 мм (рис.3). На одном ее конце сверлят три отверстия, в которые впаивают выводы шлейфа питания электромотора, длина которого может быть 0,5... 1 м. На корпусе электромотора в удобном месте монтируют кнопку SB1, а также блокировочный конденсатор СЗ и импульсный диод VD1. В описываемом устройстве используется микроконтроллер PIC16F627 или PIC16F628. Без какой-либо коррекции программы возможно замена на PIC16F627A, PIC16F628A или PIC16F648A, которые в большинстве случаев стоят дешевле. Основное различие между этими тремя микроконтроллерами заключается в разном объеме памяти программ. Так, у PIC16F627/627A объем памяти программ составляет 1024 слова, у PIC16F628/628A — 2048 слова, а у PIC16F648A — 4096 слов. Кроме того, PIC16F648A имеет больший объем ОЗУ и EEPROM (по 256 байт). Саму микросхему микроконтроллера выгодно установить в плату на "панельке". Это позволяет модернизировать устройство, не прибегая к паяльнику, т.к. в любое время можно вынуть микроконтроллер и запрограммировать его обновленным программным обеспечением.
Поскольку ток потребления электромотора может быть довольно большим, транзистор VT2 желательно установить на теплоотвод размерами не менее 40x40 мм (я использовал теплоотвод от блока разверток старого телевизора). Транзистор VT2 подбирается по мощности используемого мотора, например, КТ817 имеет рассеваемую мощность с теплоот-водом 20 Вт, а КТ819 — 60 Вт . В моем устройстве работает электромотор типа ДПМ-25-03.
В некоторых случаях необходимо, чтобы электродрель плавно набирала обороты при пуске (например, при сверлении отверстий в платах без кернения). Для таких случаев разработан второй вариант программы (карта прошивки — в табл.3).

В электронном виде таблицы можно найти по адресу http //radio-mir.com

1. Полупроводниковые приемно-усилительные устройства (Р.М.Терещук и др.). — К., 1987.
2. http://www.microcontrollers.narod.ru

Регулировка оборотов электродвигателей в современной электронной технике достигается не изменением питающего напряжения, как это делалось раньше, а подачей на электромотор импульсов тока, разной длительности. Для этих целей и служат, ставшие в последнее время очень популярными - ШИМ (широтно-импульсно модулируемые ) регуляторы. Схема универсальная - она же и регулятор оборотов мотора, и яркости ламп, и силы тока в зарядном устройстве.

Схема ШИМ регулятора

Указанная схема отлично работает, прилагается.

Без переделки схемы напряжение можно поднимать до 16 вольт. Транзистор ставить в зависимости от мощности нагрузки.

Можно собрать ШИМ регулятор и по такой электрической схеме, с обычным биполярным транзистором:

А при необходимости, вместо составного транзистора КТ827 поставить полевой IRFZ44N, с резистором R1 - 47к. Полевик без радиатора, при нагрузке до 7 ампер, не греется.

Работа ШИМ регулятора

Таймер на микросхеме NE555 следит за напряжением на конденсаторе С1, которое снимает с вывода THR. Как только оно достигнет максимума - открывается внутренний транзистор. Который замыкает вывод DIS на землю. При этом на выходе OUT появляется логический ноль. Конденсатор начинает разряжаться через DIS и когда напряжение на нем станет равно нулю - система перекинется в противоположное состояние — на выходе 1, транзистор закрыт. Конденсатор начинает снова заряжаться и все повторяется вновь.

Заряд конденсатора С1 идет по пути: «R2->верхнее плечо R1 ->D2«, а разряд по пути: D1 -> нижнее плечо R1 -> DIS. Когда вращаем переменный резистор R1, у нас меняются соотношения сопротивлений верхнего и нижнего плеча. Что, соответственно, меняет отношение длины импульса к паузе. Частота задается в основном конденсатором С1 и еще немного зависит от величины сопротивления R1. Меняя отношение сопротивлений заряда/разряда - меняем скважность. Резистор R3 обеспечивает подтяжку выхода к высокому уровню — так так там выход с открытым коллектором. Который не способен самостоятельно выставить высокий уровень.

Диоды можно ставить любые, конденсаторы примерно такого номинала, как на схеме. Отклонения в пределах одного порядка не влияют существенно на работу устройства. На 4.7 нанофарадах, поставленных в С1, например, частота снижается до 18кГц, но ее почти не слышно.

Если после сборки схемы греется ключевой управляющий транзистор, то скорее всего он полностью не открывается. То есть на транзисторе большое падение напряжения (он частично открыт) и через него течет ток. В результате рассеивается большая мощность, на нагрев. Желательно схему параллелить по выходу конденсаторами большой емкости, иначе будет петь и плохо регулировать. Чтобы не свистел - подбирайте С1, свист часто идет от него. В общем область применения очень широкая, особенно перспективным будет её использование в качестве регулятора яркости мощных светодиодных ламп, LED лент и прожекторов, но про это в следующий раз. Статья написана при поддержке ear, ur5rnp, stalker68.

Рис.1 Принципиальная схема регулятора мощности

На рис.1 приведена схема простого регулятора мощности на микроконтроллере ATtiny2313(V). Регулятор предназначен для работы с активной нагрузкой, подключаемой к сети напряжением 220 В. Напряжение подается на вход X1, нагрузка подсоединяется к выходу X2. Источником тактовой частоты DD1 выбран внутренний генератор сторожевого таймера, работающий на частоте ≈128 кГц. Благодаря этому энергопотребление устройства очень мало. Общий ток не превышает 15 мА, что легко позволяет реализовать также бестрансформаторное питание.

Регулирование мощности нагрузки производится изменением коэффициента заполнения импульсов на ШИМ-выводе OC0B DD1. Импульсы поступают на сток транзистор VT1. Он включен в диагональ моста VD5…VD8 и может работать без радиатора с токоприемниками до 400 Вт. Из-за слишком высокого уровня помех генерируемых в сеть, ШИМ-модуляция не является самым лучшим способ управления потребителями большей мощности.

Для формирования ШИМ-импульсов на выводе OC0B таймер-счетчик 0 функционирует в режиме Fast PWM (быстрый ШИМ). Частота импульсов FOC0B выбрана постоянной. Она зависит от модуля счета, определяемого содержимым регистра OCR0A:

F OC0B = F clk /(OCR0A*N),

где F clk – частота тактового генератора, N-коэффициент деления предделителя частоты таймера-счетчика 2.

Коэффициент заполнения импульсов αOC0B, а значит и мощность, отдаваемая в нагрузку, будет пропорционален содержимому регистра совпадения OCR0B:

α OC0B = OCR0B/OCR0A.

В данном примере в настройках микроконтроллера выбраны N=1 (предделитель отключен), OCR0A=100, т.е. FOC0B = 1280 Гц и α OC0B = OCR0B/100. Изменяя программно значения OCR0B от 0 до 100, получим диапазон регулировки мощности 0…100%.

Значение мощности нагрузки постоянно отображается 3-разрядном индикаторе с общим анодом HG1. Циклическая смена символов, а также опрос кнопок SB1…SB3, происходят во время прерывания по совпадению регистра OCR1AH:OCR1AL и счетного регистра таймера-счетчика 1. Таймер-счетчик 1 при этом работает в режиме CTC (сброс при совпадении). Частота F OCR1A с которой происходят прерывания:

F OCR1A = F clk /((OCR1AH:OCR1AL+1)*N),

где N-коэффициент деления предделителя частоты таймера-счетчика 1.

В программе F OCR1A = 200 Гц (N=1, OCR1AH:OCR1AL=639). Таким образом, смена каждого из трех символов и опрос кнопок происходят каждые 20 мс (т.е. с частотой 200/4=50 Гц).

Рис.2 Алгоритм работы регулятора мощности

Алгоритм работы регулятора мощности приведен на рис.2. В основном цикле программа реагирует на нажатие кнопок и производит двоично-десятичное преобразование величины мощности нагрузки в 3-разрядное число (0…100) для вывода на индикатор.

Каждое нажатие SB1 заставляет изменить состояние выхода на противоположное: нагрузка подключается с указанной мощностью, либо обесточивается. Признаком активизированного выхода является светящаяся десятичная точка в младшем разряде индикатора. Кнопки SB2 и SB3, соответственно, уменьшают и увеличивают мощность в нагрузке. При длительном нажатии модификация параметра происходят быстрее (≈10% в секунду). Если ни одна кнопка не нажата, то через 5 с после последнего изменения, значение мощности и состояния выхода (вкл./выкл.) сохраняются в EEPROM-памяти. Для защиты от зависания включен сторожевой таймер с периодом сброса 125 мс.