В предыдущих статьях я рассказывал о своей версии линейной нагрузки до 4,5 ампер, реализованной на LM358, TL431 и КТ829А , а также о способе ее охлаждения . Тогда же возникло желание сделать для нее цифровое управление.
Алгоритм работы представляется мне следующим образом. На жидкокристаллическом дисплее типа 1602 отображаются заданное и измеренное значения тока (последнее — скорее для самоуспокоения, чтобы убедиться в наличии тока), напряжение на входе нагрузки, а также значение мощности (P = U*I). Значение тока выставляется инкрементальным энкодером. Нажатие на кнопку энкодера включает или выключает ток через нагрузку. Причем от использования ШИМ я принципиально отказался: хочется, чтобы нагрузка осталась полностью линейной. То есть транзисторами по-прежнему управляет операционный усилитель, а микроконтроллер лишь задает ему нужное значение. Такая схема должна обладать высокой стабильностью. Следовательно, потребуются ЦАП (цифро-аналоговый преобразователь) и усилители шунта, чтобы микроконтроллер мог измерить на них падение напряжения и, суммировав данные, получить точное значение тока.
Изначально возник соблазн использовать китайскую плату Arduino на микроконтроллере LGT8F328P. Это улучшенный аналог ATmega328P, который уже имеет на борту ЦАП и АЦП с дифференциальными усилителями. По идее — все то, что нужно. Но сколько я ни мучился, добиться стабильной одновременной работы ЦАП и АЦП не смог. Каким-то образом сигнал, заданный на выходе ЦАП, проникает в АЦП. С поставленной задачей не справились даже две разные нейросети. Точной причины я не знаю: возможно, это конструктивная недоработка микроконтроллера (что вряд ли), глюк «ардуиновского» ядра или просто недостаток информации о правильном использовании.
В итоге, намучившись с LGT8F328P, я решил пойти более привычным путем. Использовал обычную Arduino Nano на стандартном ATmega328P с внешним ЦАП и внешними усилителями шунтов. В качестве внешнего ЦАП выбрал AD7524 — 8-битный ЦАП с параллельным интерфейсом, который ранее уже рассматривался на канале. Усилители шунтов сделал на тех же LM358.
Схема получилась достаточно громоздкой. Элементы DA1, VT1, VT2 с шунтами R6 и R7 перекочевали из аналогового варианта без изменений. ЦАП (DA5) подключается к порту D платы Arduino Nano. К выходам ЦАП подключена микросхема DA2, которая обеспечивает напряжение 0–2,5 В, поступающее через делитель напряжения на DA1. Потенциометром можно подстроить ток нагрузки. DA3 (TL431) формирует опорное напряжение одновременно для AD7524 и для АЦП Arduino. DA4 (ICL7660) формирует отрицательное напряжение −5 В, необходимое для работы DA2. На DA6 собраны усилители шунтов. Резисторы номиналом 90 кОм (R12, R14) я получил, соединив параллельно по два резистора на 180 кОм.
В качестве энкодера применил китайский модуль. Помимо самого энкодера он уже содержит подтягивающие резисторы и RC-цепи на выходах каналов. Жидкокристаллический дисплей 1602 использовал совместно с I2C-модулем.
Код можно скачать по ссылке ниже (писал его с применением ИИ). В эту же папку я добавил схему и библиотеку LiquidCrystal_I2C, так как проект критичен к ее версии.
Максимальный ток я оставил, как и в предыдущей версии, — 4,54 А, максимальное напряжение — 50 В. Однако мощность, думаю, превышать более чем на 50 Вт не стоит.
Спаял всё на двух макетных платах, так как хотелось по максимуму использовать готовый задел от предыдущего проекта. Часть элементов добавил на уже имеющуюся плату, а не поместившиеся — на вторую, соединив их между собой стойками.
Такой вот монстр получился!
Проведем некоторые эксперименты. На нагрузку подано питание, а на ее вход — напряжение от самодельного лабораторного блока питания.
В левой нижней части дисплея мы видим показания напряжения, в остальных полях — нули. Присутствует небольшая погрешность, но надо учитывать: нагрузка — это не средство измерения, высокая точность здесь не требуется. Мне лично вполне хватит и 10%. Тем более не стоит воспринимать встроенный в лабораторный БП вольтамперметр как эталон — у моего экземпляра вольтметр завышает показания как раз на 0,22 В.
Зададим энкодером максимальный ток 4,54 А. Он отобразился в левой верхней части экрана.
Теперь нажмем на кнопку энкодера, тем самым включив нагрузку.
Как видим, в цепи появился заданный ток и засветился светодиод, предупреждающий о включении нагрузки. Фактический ток отображается в правой верхней части экрана. Возможно, это излишняя информация, но мне так спокойнее: вдруг транзистор сгорит и ток на самом деле перестанет течь? А так — всё сразу видно. В правой нижней части экрана отображается рассчитанная мощность. При необходимости выдаваемый ток можно подстроить потенциометром.
Я проверил еще несколько режимов работы.
В общем, несмотря на сложность схемы, проектом я остался доволен: всё работает стабильно и достаточно точно. Начинаю работу над созданием корпуса, и уже в нем проведу более масштабные тесты.