Arduino

Электронная нагрузка под управлением Arduino

При работе с электрическими источниками питания бывают случаи, когда необходимо проверить их работу под нагрузкой. В самых простых случаях в качестве нагрузки можно использовать попавшегося под руки потребителя — лампу накаливания нужной мощности или мощный проволочный резистор. Это, конечно, не всегда удобно, когда потребителя нужной мощности под рукой нет. В таких случаях выручит электронная нагрузка — потребитель, у которого можно настроить протекающий через него ток. Однако это всё статическая нагрузка, и извратиться при желании можно, совсем другое дело, когда речь идёт о динамической нагрузке. В таких случаях без электронной нагрузки уже не обойтись. Помимо этого электронная нагрузка, как правило, имеет различные режимы тестирования источников питания. В этой статье я предлагаю Вам рассмотреть, как изготовить самодельную электронную нагрузку на основе Arduino, ЖК-дисплея, поворотного энкодера и мощного полевого транзистора для управления нагрузкой. Транзистор имеет хорошую систему охлаждения, поэтому он может выдерживать высокие нагрузки.

Необходимые компоненты:

1 х Arduino NANO (или UNO, или Pro Mini)
1 х ЖК-дисплей 16×2 c i2c модулем
1 х Модуль 16-битного АЦП ADS1115
1 х Модуль 12-битного ЦАП MCP4725
2 х кнопки на замыкание без фиксации, тактовые или любые подходящие
1 х Поворотный энкодер
1 х Транзистор IRF3205
1 х Блок питания 9-12 В от старого сканера, модема и т.д.
1 х Резистор 1 Ом / 5 Вт
4 х Клеммы винтовые
1 х Разъем+штекер 2,1 х 5,5 мм
1 х Выключатель (включатель?)
Провода сечением 0,8-1,0 мм2 для силовых цепей
Любой тонкий провод для подключения кнопок, энкодера и т.д.

Помимо этого потребуется фанера для корпуса, радиатор с активным охлаждением, например кулер от процессора ПК.

Схема

Теперь о схеме. Это важно, и вам может понадобиться адаптировать её к вашим потребностям.
• Прежде всего, 12В от блока питания идут в разрыв через тумблер включения, а затем к выводу Arduino Vin и к вентилятору. Arduino имеет встроенный стабилизатор напряжения на 5В, это напряжение и будет на выводах Vcc или +5V (подписывают по-разному). По этому напряжение 12 вольт нужно подключать именно к Vin, на вход этого стабилизатора. Все модули же буду цепляться как обычно к выводам Vcc и GND. Выводы SDA и SCL (А5 и А4) от Arduino подключаются ко всем модулям, подключаемых по шине i2c (ЦАП, АЦП и LCD дисплей).
• Подключите энкодер к Vcc, GND и три его управляющих контакта к цифровым выводам Arduino D8, D9 и D10. Подключите кнопки к контактам D11 и D12. Также подключите зуммер к D3.
• О делителе напряжения. В делителе использованы резисторы 10K и 100K, однако их реальное значение может отличаться от номинала, поэтому Вам, возможно, придется подправить множитель в коде.
• Для определения тока используется шунт 1 Ом. Опять же, этот резистор вряд ли будет ровно 1 Ом, поэтому множитель также потребуется подобрать. При использовании высокоточных прецизионных резисторов такой проблемы не возникнет. Подключите выход ЦАП к затвору полевого транзистора. Load +, Load-, S + и S- — это винтовые клеммы, монтируемые на переднюю панель.
Если вы хотите, чтобы нагрузка работала на ток больше 2,1 А, Вам потребуется увеличить напряжения на затворе транзистора. ЦАП не может выдать больше пяти вольт, так что в таком случае используйте другую схему с использованием операционного усилителя, которую Вы можете видеть ниже.

Подготовьте транзистор

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

Монтаж печатной платы

На макетной плате распаяйте ардуино и модули. Для соединения адресных шин, питания 5V, модулей, энкодера и кнопок можно использовать маломощные провода. В силовой части от клемм к транзистору и шунту (крайняя правая часть схемы) необходимо использовать провода с большим сечением. Кроме того, подключите контакты ADC0 и ADC1 модуля ADS1115 к резистору 1 Ом. Провода эти должны быть как можно короче, чем длиннее эти соединения — тем большая погрешность измерения будет при включенной нагрузке.

Ниже Вы можете увидеть соединения на нижней стороне макетной платы. Как Вы могли заметить, автор использовал толстый провод для некоторых дорожек, чтобы они могли выдерживать большой ток. А также обильно пропаял некоторые соединения по той же причине. Для удобства подключения модулей и дисплея использованы штыревые PBS разъёмы. На этом этапе можно произвести первые тесты и переходить к изготовлению корпуса.

Корпус

Корпус изготовлен из тонкой фанеры. На задней панели вырезается отверстие для вентилятора охлаждения радиатора. Сбоку делается отверстие для забора воздуха. Сам корпус автор обклеил самоклеящейся пленкой. Для лучшего внешнего вида отверстия закрываются декоративными панелями, напечатанными на 3D принтере. Скачать модели для печати вы сможете архивом в конце статьи.

Затем автор приклеивает 4 деревянных крепления к нижней крышке и вклеивает в них гайки М3. Передняя панель изготавливается так же, как и остальной корпус. Для ЖК-дисплея печатается специальная панель. Далее автор решает, где разместить каждый элемент, делает отверстия и устанавливает все кнопки, ЖК-дисплей, энкодер и разъемы. Передняя панель прикручивается к корпусу, и все её элементы подключаются к плате. Плату автор закрепил при помощи клея, однако лучше делать это при помощи специальных стоек.

Вентилятор устанавливается на своё место на задней панели. Для USB-разъема Arduino сбоку проделывается отверстие, чтобы была возможность обновить прошивку при необходимости с помощью USB-кабеля. Разъем основного питания 12 В расположен на задней панели. Вот и все, закройте корпус, закрутите винтами, и можно переходить к коду.

Архивом в конце статьи Вы можете скачать код. Вам так же понадобятся библиотеки для ЖК-дисплея, модулей ADS1115 и MCP4725, эти библиотеки в том же архиве. Вам также понадобится библиотека BusIO, установите ее менеджером библиотек Arduino IDE. Скомпилируйте код и загрузите его в плату, а затем протестируйте контроллер.

Настройки

Это важная часть. Видите ли, считывая данные с ADS1115, мы получаем их в битовом значении. Чтобы перейти от битовых значений (от 0 до 65000), мы используем множитель. По умолчанию это «0,185 мВ» или «0,000185 В». В коде для измерения тока мы производим дифференциальное измерение напряжения на нагрузке «1 Ом». Поскольку нагрузка составляет 1 Ом, это даст равное текущее значение, поскольку «I = V / R» и R равно 1. НО !!! Вряд ли получится найти резистор ровно на 1 Ом, поэтому в случае автора он изменил множитель на 0,0001827. Возможно, Вам придется настроить эту переменную на другие значения, пока Вы не получите хорошие показания, поэтому во время настройки одновременно измеряйте значение тока с помощью внешнего мультиметра и отрегулируйте эту переменную до отображения верных результатов.

То же самое касается и делителя напряжения. Видите ли, ADS1115 может измерять только до 5 В. Если входное напряжение будет выше — он будет поврежден. По этой причине используется делитель из резисторов 10K и 100K, что даёт значение 0.0909090. Итак, теперь множитель составляет 0,000185 / 0,0909090 = 0,002035. Снова же, так как сложно найти резисторы точно на 10K и 100K, множитель для измерения напряжения подправлен до 0,0020645. Просто сделайте то же самое, сравните напряжение на экране ЖК с показаниями внешнего мультиметра и отрегулируйте это значение до получения хороших результатов.

const float multiplier = 0.0001827; //Multiplier used for "current" read between ADC0 and ADC1 of the ADS1115
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const float multiplier_A2 = 0.0020645; //Multiplier for voltage read from the 10K/100K divider

Скачать библиотеки и код одним архивом Вы можете тут:

eload_kod.rar

[58.74 Kb] (скачиваний: 16)

Скачать файлы для печати на 3D принтере тут:

stl.zip

[232.08 Kb] (скачиваний: 9)

Ну а на этом всё, и всем удачи в творчестве!

Источник

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть
Закрыть