Амперметр на микроконтроллере PIC и датчике тока ACS712


Измерение тока и напряжения – одна из задач, которая достаточно часто возникает перед радиолюбителями. Наиболее часто она востребована при отладке работы электронных схем. В данной статье мы рассмотрим создание цифрового амперметра на микроконтроллере PIC и датчике тока ACS712, который будет способен проводить измерения как в цепях постоянного, так и в цепях переменного тока, с величиной измеряемого тока в диапазоне 0-30A с точностью 0.3A.

Внешний вид амперметра на микроконтроллере PIC и датчике тока ACS712

Также на нашем сайте вы можете посмотреть следующие проекты амперметров:

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

  1. Микроконтроллер PIC16F877A (купить на AliExpress).
  2. Держатель микросхем на 40 контактов (купить на AliExpress).
  3. Программатор PICkit 3 (купить на AliExpress).
  4. Кварцевый генератор 20 МГц (купить на AliExpress).
  5. Регулятор напряжения 7805 (купить на AliExpress).
  6. ЖК дисплей 16х2 (купить на AliExpress).
  7. Датчик тока ACS712 (купить на AliExpress).
  8. Конденсаторы.
  9. Макетная плата.
  10. Соединительные провода.
  11. Источник питания 12V.

Датчик тока ACS712

Ключевым компонентом нашего проекта цифрового амперметра является датчик тока ACS712 от компании Allegro. Точное измерение тока во многих случаях является достаточно непростой задачей из-за влияния различных нежелательных шумов, однако датчик ACS712 значительно уменьшает проблемы измерения силы тока.

Принцип действия датчика основан на эффекте Холла, открытого ученым Эдвином Холлом. В соответствии с данным принципом когда проводник с током помещается в магнитное поле, на его концах, перпендикулярных направлению протекающего тока и направлению действия магнитного поля, генерируется напряжение. Данный принцип показан на следующем рисунке.

При наличии магнита на поперечных концах проводниках появляется напряжение Холла

Для определения силы протекающего тока нам необходимо измерить величину магнитного поля (напряжения) вокруг проводника с током. Это напряжение называется напряжением Холла, его величина пропорциональна силе протекающего тока и составляет единицы милливольт.

Одним из основных достоинств датчика тока ACS712 является то, что он может измерять силу как переменного, так и постоянного тока и также обеспечивает развязку (изоляцию) между нагрузкой (постоянного или переменного тока) и измерительным блоком. Внешний вид датчика тока показан на следующем рисунке.

Внешний вид датчика тока ACS712

Как можно видеть из представленного тока, датчик содержит три контакта: Vcc, Vout и Ground. 2-х пиновый блок контактов предназначен для подключения проводников, прохождение тока через которые будет измеряться. Датчик работает от напряжения +5V, поэтому его контакт Vcc необходимо подключить 5V, а его контакт ground должен быть подключен к общему проводу схемы. На контакт Vout датчика подается сдвиг напряжения 2500mV, то есть если через датчик не протекает никакой ток, то напряжение на его выходном контакте будет равно 2500mV. Когда протекающий ток будет положителен, это напряжение будет больше 2500mV, а когда отрицателен – напряжение будет меньше 2500mV.

Для считывания напряжения с выходного контакта датчика тока мы будем использовать модуль АЦП микроконтроллера PIC. То есть когда на выходе данного АЦП будет значение 512 (соответствует напряжению 2500mV), это будет означать что через датчик ток не протекает. Значение на выходе АЦП будет уменьшаться если ток будет протекать в отрицательном направлении и увеличиваться, если ток будет протекать в положительном направлении. В следующей таблице показано соответствие между величиной протекающего через датчик тока и значением на выходе АЦП.

Соответствие между величиной протекающего через датчик тока и значением на выходе АЦП микроконтроллера

Эти значения можно рассчитать на основе информации, содержащейся в даташите на датчик тока ACS712. Их можно рассчитать по следующей формуле:

Vout Voltage(mV) = (ADC Value/ 1023)*5000
Current Through the Wire (A) = (Vout(mv)-2500)/185

Схема проекта

Схема амперметра на микроконтроллере PIC и датчике тока ACS712 представлена на следующем рисунке.

Схема амперметра на микроконтроллере PIC и датчике тока ACS712Схема запитывается от стабилизированного напряжения +5V, получаемого с выхода регулятора напряжения 7805. Для отображения значения тока будет использоваться ЖК дисплей 16х2. Выходной контакт датчика тока подключен к 7-му контакту микроконтроллера PIC, который также имеет обозначение AN4.

Схема соединений проекта приведена в следующей таблице.

№ п/п № контакта микроконтроллера Название контакта микроконтроллера Куда подключен
1 21 RD2 RS of LCD
2 22 RD3 E of LCD
3 27 RD4 D4 of LCD
4 28 RD5 D5 of LCD
5 29 RD6 D6 of LCD
6 30 RD7 D7 of LCD
7 7 AN4 контакт Vout датчика тока

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

Внешний вид использованной платы из проекта мигания светодиодом

Моделирование работы проекта

Перед тем как собирать схему проекта в "реальном железе", ее работу можно проверить в симуляторе Proteus. Hex файл программы проекта для этой проверки можно скачать по следующей ссылке. Смоделированная в симуляторе Proteus схема проекта приведена на рисунке ниже. Измеренные значения тока в этой симуляции отображаются на экране ЖК дисплея 16х2. В качестве нагрузки переменного тока мы использовали лампу, в симуляторе можно достаточно просто изменять сопротивление данной лампы – в соответствии с ним будет изменяться и величина протекающего через нее тока.

Смоделированная в симуляторе Proteus схема проекта

Как видно из представленного рисунка амперметр показывает величину тока, протекающего через лампу, равную 3.52 A, а на ЖК дисплее показывается что величина тока равна 3.6A. На практике ошибка в определении тока может составлять до 0.2A. Для лучшего понимания работы схемы на экран ЖК дисплея также выводится значение на выходе АЦП и напряжение на его входе (в mV).

Объяснение программы для микроконтроллера PIC

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Основным элементом нашей программы будет использование модуля АЦП микроконтроллера PIC, работу с которым мы более подробно рассматривали в этой статье.

Поскольку значение, считываемое с датчика тока, будет не совсем точным из-за того что ток переменный и подвержен влиянию шумов, для повышения точности результата мы будем считывать значение с АЦП 20 раз и усреднять его. Для расчета силы тока мы использовали формулу, приведенную ранее в статье.

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

Использование датчика тока на 30A

Если вам необходимо измерять ток силой более чем 5A, то в этом случае вы может купить модификацию датчика тока под названием ACS712-30A. Его подключение в схему будет таким же, как и датчика тока на 5A. В этом случае вам необходимо будет немного модифицировать программу проекта, заменив в ней значения 18.5 на 0.66 как показано в следующем фрагменте кода.

Если вам необходимо измерять небольшие силы тока, то рекомендуем присмотреться к проекту амперметра на основе микроконтроллера AVR, который позволяет измерять ток величиной до 100mA.

Тестирование работы проекта

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

Примечание: если вы используете датчик тока ASC7125A, убедитесь в том, что ваша нагрузка не потребляет ток более 5A, иначе используйте более толстые провода для ее подключения.

Тестирование работы проекта

Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
963 просмотров

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

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