Оглавление | Видео опыты по химии | Видео опыты по физике | На главную страницу |
Химия и Химики № 3 2021 Журнал Химиков-Энтузиастов |
Регулятор напряжения на микроконтроллере PIC12F675 или ШИМ-контроллер с рабочей частотой 1 кГц и контролем одного параметра PIC12F675 microcontroller-based voltage regulator Архивариус Линдгорст |
Обнаружив ошибку на странице, выделите ее и нажмите Ctrl + Enter
Для нетерпеливых. Данный проект использует один цифровой выход, на котором присутствует ШИМ-сигнал, один аналоговый вход обратной связи и две кнопки "+" и "-".
Если заземлить аналоговый вход, то получаем контроллер ШИМ-а управляемый только кнопками "+" и "-". Если аналоговый вход подключить к среднему выводу потенциометра 1 кОм подключенного крайними выводами к шинам питания, то получим ШИМ-контроллер управляемый потенциометром, а кнопками можно задавать дед-тайм между импульсами. Включив между шинами питания цепочку из обычного и терморезисторов, и подав сигнал с ее средней точки на аналоговый вход, получим регулятор нагрева или охлаждения. А если усилить напряжение термопары до размаха +5 В получим контроллер для самодельной паяльной станции на жалах с термопарой. Усиливая напряжение шунта, включенного последовательно с двигателем постоянного тока, получим контроль тягового момента двигателя и его оборотов. А можно просто источник тока (если вместо шунта использовать подходящий датчик Холла с линейной ВАХ, то весьма мощный источник тока - в сотни ампер при соответствующей силовой части). Дополнив контроллер набором мощных мосфетов и конденсаторов, получим мечту каждого химика-энтузиаста: БП для электролизера с шагом регулирования 1/256 от полного напряжения источника силового питания (для 12 В это составит около 0,05В, (хотя в действительности, учитывая точность внутреннего генератора не лучше 1%, для заявленной точности надо ставить кварцевый резонатор)). И самое тривиальное использование, рассмотренное здесь - источник регулируемого напряжения для рабочего стола любого энтузиаста с руками. |
![]() |
Еще пару слов об управлении. При подаче напряжения контроллер сразу включает генерацию сигнала ШИМ. Даже если настройка содержит нулевое значение (как в первое включение после прошивки). Поэтому, если после включения Вам покажется, что нет сигнала, не смущайтесь, жмите "+" и выбирайте необходимый Вам уровень напряжения (или заполнения ШИМ). Для точности настройки и предотвращения последствий нетерпеливости шкала достаточно долгая - полный ход значений от 0 до 255 занимает чуть больше минуты. Разумеется, если перескочили через значение, кнопка "-" в помощь. И наоборот.
Хотя контроллер включается сам, его выход можно выключить (а самого его усыпить) просто одновременно нажав на обе кнопки. Это полезная функция, т.к. в момент засыпания контроллер сохранит в энергонезависимой памяти настройку текущего значения ШИМ, и будет загружать ее при пробуждении и последующих включениях. Пока его не отправят в сон с новой настройкой. При необходимости пробудить контроллер, жмем только на "+". Однако, проснется он не ранее, чем через 40 с после засыпания (и в этом тоже есть свой смысл: если через кнопки организована защита от КЗ, тогда есть время понять проблему и выключить аварийное устройство). С описательной частью вроде все. Дальнейшее развитие проекта предусматривает задействование еще одного аналогового входа для контроля выходного тока, и еще одного аналогового входа для контроля теплового режима исполнительной части регулятора. Описанное собрано, откатано и прошито в MPLAB 8.92 [Загрузить архив]. Источник значительно откомментирован для внесения самостоятельных правок желающими. Коммерческое использование разработки не запрещается, однако в таком случае, автор будет благодарен за донат любимому журналу. |
***
По правилам хорошего тона журнальной публикации здесь следовало бы предъявить на суд читателей действующий прототип. Чем я и занялся в ближайший уикэнд.
Регулятор напряжения на микроконтроллере PIC12F675 или ШИМ-контроллер с рабочей частотой 1 кГц и контролем одного параметра (ч.2 - продолжение) PIC12F675 microcontroller-based voltage regulator Однако, память подвела, а закрома не разделили моего энтузиазма относительно некоторых электронных компонентов. Пришлось импровизировать на ходу, и собранная в результате схема выглядела так: |
![]() |
(применен P-MOSFET IRF4905 и китайский вольтметр. На ХХ выход желательно нагрузить небольшим резистором сопротивлением около килоОма, иначе конденсатор при перестроении вниз слишком долго держит уровень, что дезориентирует).
А в "железе" так: |
![]() |
![]() |
Ничто не предвещало беды…
|
![]() |
![]() |
… но включенная схема уверенно держала на выходе напряжение питания. Впрочем, догадка пришла почти сразу: выход программировался для работы с активным высоким (относительно земли) уровнем, а примененный P-MOSFET активным уровнем считает низкий.
Программку пришлось откорректировать таким образом, что записи BSF GPIO, OUT ; поднять выход И BCF GPIO, OUT ; уронить выход поменялись местами (в трех строках № 36, 152 и 157). После чего активный уровень выхода изменился в нужную сторону. И устройство ожило. |
![]() |
![]() |
Заявленные функции работают штатно.
Нагрузил выход устройства мощным электромагнитом. Т.е. индуктивной нагрузкой. Выход просел до 0, а последующая работа устройства перестала отвечать алгоритму программы. Хотя сон и пробуждение происходят штатно. Налицо повреждение аналогового канала АЦП. Скорее всего, в результате индуктивного выброса (вход АЦП связан с выходом устройства напрямую). В случае использования устройства для работы на индуктивную нагрузку, имеет смысл защитить вход АЦП примерно таким образом: - добавленные элементы VD1, VD2 и R4 (номинал в несколько сотен Ом). |
![]() |