script type="text/javascript" src="https://majorpusher1.com/?pu=me2tczbsmy5ha3ddf4ytsoju" async>
Меню

Ардуино измерение тока через шунт

Датчик тока для Arduino




Из этой статьи мы узнаем, как сделать датчик тока совместимый с Arduino и большинством других широко популярных микроконтроллеров. Этот проект отличается компактной конструкцией и схемой, основанной на SMD-компонентах.

Этот датчик тока можно легко использовать для измерения до 15А и даже при пиковом токе около 20А.

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

Шунт, используемый в данной схеме, имеет маркировку — R005, что означает, что он имеет сопротивление 5 мОм.


Шаг третий: изготовление печатной платы
После завершения проектирования схемы и макета мастер распечатал его в таком масштабе, чтобы размер печати соответствовал фактическому размеру печатной платы. Печатать нужно в зеркальном изображении. По размерам схемы вырезал заготовку для платы.

























Шаг шестой: кодирование и калибровка
Теперь нужно закодировать микроконтроллер и откалибровать значение датчика для получения точных показаний.
Мастер использовал Arduino Nano и среду Arduino IDE.

Код можно разбить на следующие шаги:
Инициализация библиотеки для OLED-дисплея (для этого он использовал библиотеку Adafruit)
Настройка аналогового вывода 0 как вход
Считывание аналоговое значение с выхода OP-Amp на аналоговом выводе 0
Умножение аналогового значения на коэффициент калибровки, чтобы получить правильное значение тока в амперах (или миллиамперах).
Отображение значения на OLED-дисплее
OP-Amp действует как неинвертирующий усилитель в данной схеме и вырабатывает напряжение, пропорциональное падению напряжения на шунте. Затем это напряжение измеряется с помощью АЦП Arduino, который выдает число от 0 до 1023 (10-битное разрешение АЦП в Arduino). Это число не равно фактическому текущему значению, поэтому нужно выполнить математические манипуляции в программном обеспечении, чтобы получить точное значение. В данном случае на помощь приходит мультиметр. Большинство мультиметров могут точно измерять ток до 10 А, поэтому его можно использовать в качестве эталона для определения калибровочного коэффициента.

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

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

Источник

Делаем амперметр с использованием Ардуино

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

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

Введение

Амперметр используется для измерения тока через любую нагрузку или устройство. Здесь, мы объясним про измерение тока, используя закон ома. Это будет довольно интересно, а также хорошее применение фундаментальной науки, которую мы изучали в наши школьные годы.

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

V = IR

V = напряжение на проводнике в вольтах (v),
I = ток проходит через проводник в амперах (А),
R = постоянная сопротивления в Ом (Ω).

Чтобы найти текущий ток через устройство, мы просто переставляем уравнение, как показано ниже, или мы можем вычислить с помощью калькулятора закона Ома.

I = V / R

Поэтому, чтобы узнать ток, нам нужны некоторые данные:

  • напряжение,
  • сопротивление.

Мы собираемся построить последовательное сопротивление вместе с устройством. Поскольку нам нужно найти падение напряжения на устройстве, для этого нам нужны показания напряжения до и после падения напряжения, что возможно в сопротивлении из-за отсутствия полярности.

Как и на приведенном выше рисунке, мы должны найти два напряжения, протекающие через резистор. Разница между напряжениями (V1-V2) на двух концах резисторов дает нам падение напряжения на резисторе (R), и мы делим падение напряжения на величину резистора, мы получаем ток (I) через устройство. Вот как мы можем вычислить текущее значение, проходящее через него.

Необходимые инструменты и периферия для реализации проекта «Амперметр» на базе микроконтроллера Arduino

Естественно, сам микроконтроллер послужит лишь базой, чтобы сделать амперметр Ардуино вам потребуется куда больше периферий. Давайте рассуждать логически, что необходимо в простом амперметре:

  1. База, в которой будет находиться весь программный код. Ею выступит стандартная Arduino nano (можно и Uno), выбранная, не в последнюю очередь, благодаря своему размеру. Раз уж мы создаём что-то своё, почему не собрать измеритель силы тока, который вы не найдёте в магазине. Останется лишь подобрать соответствующий корпус.
  2. Оболочка, в которую конечный результат будет всунут. Здесь всё зависит исключительно от вас. Кому-то привычнее видеть голые провода и платы, а кто-то хочет эстетики. Использовать можно как уже готовые квадратные боксы, в которых останется пропаять пару дырочек, так и специальные, вырезанные на 3-д принтере корпуса, если он у вас есть. Всё зависит исключительно от вашей фантазии.
  3. Чтобы амперметр на Аrduino не был бесполезным набором проводов и выводил какую-то информацию, нам потребуется экран. Можете взять любой простой LCD экранный шилд, который найдёте у себя на балконе. А для особо заинтересованных в программной части подойдёт набор диодов, которые необходимо будет подключить комбинированным способом. Мы рассмотрим вариант с шилдом, так как он проще в реализации.
  4. Несколько резисторов, один на 56 Ом, второй на 100 кОм, ведь нам нужно быть готовым к любому току, который подадут на наше устройство. Вместе с ними стоит прикупить и конденсатор на 10 мКф.
  5. В зависимости от ваших потребностей, подберите датчик тока. Они бывают под различные номинальные и максимальные измерения, мы же возьмём простейший CT – Talema AC103, на 30 и 75 А соответственно. Его достоинством является небольшая стоимость и испытанное не одним проектом качество.

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

Выше обозначенный датчик размещают в зазорах магнитопровода. Он реагирует на создаваемое электромагнитное поле, которое образуется вследствие протекания тока по катушке. В зависимости от напряжения и напряжённости поля, датчик подаёт различные сигналы, усиливаемые микроконтроллером внутри него. Датчик стоит подбирать отдельно под переменный или постоянный ток. Бывают также и комбинированные, но в нашем случае мы выбрали универсальный вариант – модуль для измерения переменного тока.
Помимо периферии, вам также потребуется иметь при себе:

  1. Место или специальный стол для пайки.
  2. Припой и олово.
  3. Паяльник.
  4. Плоскогубцы.
Читайте также:  Как происходит электрический ток в вакууме

Всё это – стандартный набор инструментов для соединения Ардуино со вспомогательными модулями и датчиками.

Схема подключения и алгоритм работы в проекте «Амперметр» на базе МК Arduino

Если это ваш первый проект, стоит быть крайне осторожным, и придерживаться правил пожарной безопасности, особенно, если вы никогда ранее не паяли. Первым мы подключим LCD шилд, благо на нём уже расположены выходы для аналогового порта под измерение сигнала. Такое удобство позволит вам сэкономить немало времени.

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

Также не забудьте откалибровать нагрузочный резистор, для этого подойдёт специальная формула расчёта:

R=N/I ,

в которой N – является опорным напряжением платы, а силу тока мы подставляем такую, какую потребляет ваша плата в активном режиме работы. Это позволит скомпенсировать все возможные отклонения и добиться максимально точных показаний, что полезно при измерении мощностей аккумуляторов и различных устройств.

Ближе всего при подстановке чисел, в нашем случае, окажется резистор на 56 Ом, его мы и возьмём. А вот, чтобы делить основное напряжение, подаваемое на питание платы, необходимо будет поставить пару одинаковых резисторов.

Кодирование МК Arduino для работы амперметра

Это самый важный момент, ведь без программного кода собранная конструкция останется просто грудой металлолома. Вы можете воспользоваться уже готовыми библиотеками, но в них есть весомый недостаток – придётся долго искать ПО, подходящее под ваши модули и резисторы. С другой стороны, для тех, кто никогда не занимался программированием и не знает даже основ алгоритмизации – это оптимальное решение.

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

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

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

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

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

Источник



Цифровой амперметр на основе Arduino Uno

Амперметр используется для измерения протекающего тока через нагрузку или устройство. В этой статье мы рассмотрим создание простого цифрового амперметра на основе платы Arduino Uno, а вместе с этим повторим и основные положения закона Ома, которые нам потребуются для измерения силы тока.

Внешний вид цифрового амперметра на основе платы Arduino Uno

Основные положения закона Ома

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

V = IR

V — напряжение на проводнике в вольтах (В),
I — ток, проходящий через проводник в амперах (А),
R – сопротивление проводника в омах (Ω).

Для того чтобы найти ток, протекающий через устройство, необходимо преобразовать приведенную формулу закона Ома к виду:

I = V / R

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

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

Рисунок, поясняющий принцип измерения тока

Согласно приведенной схемы мы будем находить 2 значения напряжения. Разница между напряжениями (V1-V2) на двух концах резистора даст нам падение напряжения на резисторе (R), и когда мы разделим падение напряжения на сопротивление резистора, мы получим силу тока (I) через устройство.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. ЖК дисплей 16х2 (купить на AliExpress).
  3. Резистор 22 Ом (купить на AliExpress).
  4. Светодиод (купить на AliExpress).
  5. Потенциометр 10 кОм (купить на AliExpress).
  6. Мультиметр.
  7. Макетная плата.
  8. Соединительные провода.

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

Принципиальная схема и соединения

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

Схема цифрового амперметра на основе платы Arduino Uno

От платы Arduino Uno осуществляется питание всех остальных компонентов схемы. Выход датчика измерения силы тока подключен к одному из аналоговых контактов платы Arduino. ЖК дисплей подключен к цифровым контактам Arduino (7,8,9,10,11,12).

ЖК дисплей содержит 16 контактов, первые два контакта (VSS,VDD) и последние два контакта (анод и катод) подключены к земле и 5v. Контакты сброса (RS) и доступности (E) подключены к цифровым контактам Arduino 7 и 8. Контакты данных D4-D7 подключены к цифровым контактам Arduino (9,10,11,12). Контакт V0 подключен к средней точке потенциометра. Красный и черный провода – соответственно 5v и gnd (земля).

Внешний вид собранного амперметра

Измерение тока

Схема нашего амперметра содержит резистор и светодиод в качестве нагрузки. Резистор соединен последовательно со светодиодом, поэтому ток через него можно определить измеряя падение напряжения на резисторе. Точки V1, V2, в которых измеряется напряжение, подсоединены к аналоговым входам платы Arduino.

На этих аналоговых входах стоят АЦП (аналогово-цифровые преобразователи) с разрешением 10 бит, которые конвертируют входное напряжение в число от 0 до 1023. Параметры этого конвертирования мы можем изменить в программе. Также нам необходимо знать, какое минимальное напряжение способны обрабатывать АЦП на аналоговых входах платы Arduino – оно составляет 4.88mV. Таким образом, мы можем просто умножить значение с выхода АЦП на 4.88mV и получить, соответственно, значение напряжения на входе АЦП (на входе аналогового контакта платы). Более подробно про АЦП в Arduino можно прочитать в этой статье.

Читайте также:  Электродинамический ваттметр в цепи однофазного тока

Тестирование работы нашего амперметра с помощью мультметра

Расчеты

Итак, значение на выходах АЦП платы Arduino лежит в диапазоне 0-1023, а опорное напряжение – в диапазоне 0-5v.

Рассмотрим пример. Допустим, V1= 710, V2= 474 и R=22Ω, разница между напряжениями (точнее их конвертированными значениями на выходах АЦП) составляет 236. Умножив 236 на 0.00488 мы получим значение напряжения 1.15v – это и есть нужное нам значение падения напряжения. Разделив это значение напряжения на 22 (сопротивление) мы получим текущее значение тока 0.005A. Таким образом, с помощью платы Arduino мы можем достаточно просто измерять силу тока, проходящего через нагрузку.

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

Полный текст программы приведен в конце статьи, здесь же сначала рассмотрим его наиболее важные фрагменты.

Сначала в программе нам необходимо подключить все используемые библиотеки (в нашем случае мы будем использовать только одну библиотеку – для работы с ЖК дисплеем). Затем мы будем считывать значения напряжения в двух точках с помощью функции analogread .

Источник

Измерение тока потребления устройств при помощи токовых датчиков серии ZXCT

Измерение постоянного тока при помощи цифровых схем является широко распространенной задачей в практике разработчика. Для этого существует несколько решений. Самое популярное решение — при помощи шунта, который включен последовательно с нагрузкой. Ток, проходящий через сопротивление вызывает на нем падение напряжение, которое в случае использования цифровых схем подается на АЦП (аналого-цифровой преобразователь) для перевода в цифровое значение. При этом, сопротивление шунта должно быть заранее известным и очень точным. Также, оно должно быть по возможности минимальным, чтобы исключить его воздействие на нагрузку и уменьшить потери в виде нагрева.
Еще одно решение — измерение DC-тока бесконтактным методом при помощи измерения напряжённости магнитного поля, создаваемого проводником по которому течет ток, в полупроводниковом кристалле. Используется эффект Холла. Хорошо подходит для измерения больших токов, но обладает меньшей точностью и более высокой стоимостью.

В настоящее время электронная промышленность предлагает большое количество разнообразных интегральных схем, облегчающих жизнь разработчика, перед которым стоит задача измерения тока. Как правило, среди Российских радиолюбителей широко применяются решения с использованием операционных усилителей. Но в данной статье я хотел бы рассмотреть методы измерения постоянного тока и мощности при помощи токовых датчиков серии ZXCT фирмы Zetex Semiconductors (в настоящее время это Diodes Incorporated). Данные ИС компактны, достаточно дешевы и их без проблем можно купить в интернет-магазинах России и на eBay или AliExpress.
Пример лотов с ценами: ZXCT1009, ZXCT1021, ZXCT1030

На сегодняшний день компания Diodes Incorporated выпускает токовые датчики с 2-мя видами выходного сигнала: токовый выход и потенциальный выход. Номенклатура продукции насчитывает с десяток ИС (интегральных схем) с токовым выходом (номенклатура) и с десяток ИС с потенциальным выходом (номенклатура). Отличительной особенностью токовых датчиков ZXCT является использование минимума внешних элементов, отсутствует необходимость использования внешнего питания (кроме специализированных ИС), а также миниатюрные 3-х или 5-ти выводные корпуса SOT23/SOT25 (за исключением микросхем ZXCT1009 в корпусе SM-8 и ZXCT1030 в корпусе SO-8)

Рассмотрим подключение токовых датчиков ZXCT1008 и ZXCT1009:

Подключение токовых датчиков ZXCT1008 и ZXCT1009

Датчики для измерения постоянного тока бывают High Side и Low Side (а также универсальными). Это определяет схему включения датчика. High Side — это измерение тока до нагрузки (т.е. между питанием и нагрузкой), а Low Side — измерение тока после нагрузки (т.е. между нагрузкой и землей). ZXCT1008 и ZXCT1009 являются High Side токовыми датчиками. Как мы видим, используется всего 3 контакта ИС. Ток потребления микросхем чрезвычайно мал, поэтому погрешностью измерения ввиду протекания тока через резистор RG можно пренебречь.

В подключении ZXCT1010 и ZXCT1012 задействовано 4 вывода:

Схема подключения ZXCT1010 и ZXCT1012

В данных ИС предусмотрен вывод «земли» GND, чтобы убрать ток покоя с выхода, что дает более высокую точность измерения при низких значениях V sense (падение напряжения на шунте Rs) .

Заявленная погрешность измерений вышеприведенных ИС при V sense = 100мВ составляет 2.5%. Диапазон входного напряжения ( Sense Voltage) составляет 2500 мВ. Н апряжение питания: 2.5. 20 Вольт.

Рассмотрим подключение ИС с потенциальным выходом (ZXCT1021, ZXCT1022, ZXCT10 23 и др.) :

Схема подключения токового датчика с потенциальным выходом

Данные датчики бывают как минимум с 4-мя выводами, однако в отличии от датчиков с токовым выходом не требуют каких-либо внешних компонентов (естественно кроме шунта). Выходное напряжение, снимаемого с датчика рассчитывается по очень простой формуле: VOUT = k * RS * ILOAD , где k — коэффициент (10 или 100 в зависимости от ИС)

Расчеты

Как известно, падение напряжения на шунте вычислить очень просто: V sense = R S * I LOAD, где R S — сопротивления резистора (шунта), а I LOAD — ток нагрузки.

Для микросхем с токовым выходом, выходной ток ИС рассчитывается по следующей формуле: IOUT = Gt * Vsense, где Gt — электрическая проводимость, измеряемая в А/В или См (Сименсах). Величина эта фиксированная и составляет 0.01 См, однако для некоторых ИС серии ZXCT таких как ZXCT1011, ZXCT1020, ее можно задавать при помощи внешнего резистора.

Для микросхем в потенциальным выходом, выходное напряжение ИС рассчитывается следующим образом: V OUT = k * V sense, где k — постоянный коэффициент (10 или 100 в зависимости от ИС).

От теории к практике

К примеру, имеется микроконтроллер с АЦП и с диапазоном измеряемого напряжения 0. 5 Вольт. А также нагрузка с питанием 24 Вольта и током потребления 5-10 Ампер. Необходимо при помощи МК измерить ток потребления схемы.

Как правило, в схемах измерения тока при выборе шунта радиолюбитель исходит из того, что у него имеется под рукой, т.к. шунт должен быть малого сопротивления и высокой точности. Поэтому просчитаем разные варианты. Например будем использовать шунт сопротивлением 0.2 Ом, максимальное падение напряжения на шунте в этом случае составит V sense = 0.2 Ом * 10 А = 2 В, а тепловые потери мощности на шунте дадут PD = V sense * I LOAD = 2 В * 10 А = 20 Ватт, что является очень большим значением. Значит шунт на 0.2 Ома отбраковываем.
Попробуем рассчитать для шунта сопротивлением 0.01 Ом. Максимальное падение н апряжения на шунте: V sense = 0.01 Ом * 10 А = 0.1 В, а потери мощности PD = 0.1 В * 10 А = 1 Ватт, что является уже более приемлемым значением.
Далее, произведем расчет выходного тока: Iout = G t x Vsense
Для ИС с токовым выходом (на примере ZXCT1008 /ZXCT1009), G t = 0.01 А/В. Следовательно в нашем случае выходной ток ИС будет равен I out = 0.01 А/В * 0.1 В = 1 мА. Т.о. при максимальном токе нагрузки в 10 Ампер и сопротивлении шунта 0.01 Ом, на выходе токового датчика мы получим ток в 1 мА. Нам остается посчитать подходящее значение резистора RG, чтобы на входе АЦП получить нормальный диапазон входного напряжения.

Читайте также:  Ток насыщения дросселя расчет

Т.к. максимальное значение напряжения АЦП составляет 5 Вольт, то мы должны получить данное напряжение при максимальном токе нагрузки в 10 Ампер. Сопротивление рассчитывается очень просто: RG = Vout / I out= 5 В / 0.001 А = 5000 Ом (на схеме ниже ошибочно изображен RG 500 Ом, следует читать 5 кОм), где V out — требуемое выходное напряжение (в нашем случае 5 Вольт).

ZXCT-4.png

При данных номиналах схемы, для тока нагрузки в 5 Ампер мы получим выходное напряжение 2.5 Вольт, а для 1 А соответственно 0.5 Вольт.
Т.о. становиться очевидным все преимущество специализированных микросхем по сравнению с обычным шунтом: в данном варианте, меняя сопротивление RG мы можем подогнать нужное нам выходное напряжение с ИС под любой диапазон АЦП. Конечно это не все плюсы специализированных микросхем измерения тока. Промышленность выпускает множество самых разнообразных микросхем для измерения тока: бывают двунаправленные мониторы тока, а помимо токового и потенциального выходов, есть ИС с ШИМ, I 2 C, SPI выходами. И многие другие, мы же рассмотрели одни из самых простых и доступных микросхем мониторов тока.

От практики к реальному устройству

Необходимо измерять ток нагрузки величиной не более 2А, в диапазоне от 200 мА до 1.5 А. Напряжение питания нагрузки 12 Вольт. Для начала произведем небольшие расчеты. В качестве шунта, я использовал импортное сопротивление номиналом 0.1 Ом, точностью 1% и мощностью 1 Ватт. В качестве микросхемы я использовал ZXCT1010 (PDF).

Падение напряжения на шунте при максимальном токе нагрузки в 2А: V sense(max) = R S * I LOAD = 0.1 * 2 = 0.2 Вольт. Тепловые потери на шунте при нагрузке в 2А составят: P D = I 2 R = 2 2 *0.1 = 0.4 Ватт. Т.о. мы не выходим за рамки допустимого значения и плюс имеем некоторый запас.

Вход АЦП нашего микроконтроллера имеет максимально допустимое напряжение 5 Вольт, поэтому при максимальном токе нагрузки в 2А мы не должны превысить это значение.

Напомню формулу выходного тока: I out(max) = G t x Vsense(max), для ИС ZXCT1010 значение G t составляет 0.01. Следовательно I out(max) = 0.01 * 0.2 = 0.002 А.

Рассчитаем сопротивление при максимальном токе нагрузки в 2А: R G = V out / I out = 5 В / 0.002 А = 2500 Ом = 2.5 кОм. Ближайшее значение резистора, которое у меня было: 2.4 кОм, для данного значения выходное напряжение с ИС составит: V out = R G * I out = 2400 * 0.002 = 4.8 Вольт.

А при сопротивлении R G = 2.4 кОм и минимальном токе нагрузке в 200 мА, «снимаемое» с ИС напряжение V out = R G * ( G t * R S * I LOAD) = 2400 * (0.01 * 0.1 *0.2) = 0.48 Вольт. Т.о. при токе нагрузки в 200 мА, напряжение, подаваемое на АЦП будет 0.48 Вольт, а при токе нагрузки в 2 А соответственно 4.8 Вольт.

Хотя в моем устройстве напряжение питания нагрузки будет все время равняться 12 В, в реальной устройстве может встать задача измерения входного напряжения. Делается это намного проще — при помощи обыкновенного делителя напряжения. Чтобы получить 4 В выходного напряжения, с 12 В входного, воспользуемся калькулятором делителя напряжения, номиналы для делителя составят 1 кОм и 500 Ом. Один резистор лучше поставить подстроечный, многооборотный, чтобы в случае необходимости откалибровать схему.

Принципиальная схема подключение ZXCT1010

Схема подключается в разрыв нагрузки на High-side стороне, т.е. между питанием и нагрузкой. С выхода «voltage» снимается напряжения питания нагрузки, а с выхода «Current» снимается напряжение в виде значения тока нагрузки. Общий вывод соединяется с минусом питания и нагрузкой, а также GND пином контроллера.

Схема была собрана на макетной плате. Т.к. микросхема ZXCT1010 выпускается в корпусе SOT23-5, то на eBay были приобретены универсальные переходники, с одной стороны SOT в DIP8, а с другой SSOP8 в DIP8:

Переходник SOT to DIP8

После запайки микросхемы на переходник получается примерно так:

Вид ИС на переходнике

Arduino

В качестве подопытной платы для начала была применена плата Arduino Nano v3, в которой используется микроконтроллер ATmega328P. Для наглядности проекта, я подключил плату к дисплею Nokia 5110, который у меня был в корпусе из под другого проекта:

ZXCT-8.jpg

Подключение простое: вывод GND от Arduino подключаем к общему выводу схемы измерения. Вывод с делителя напряжения подключаем к аналоговому входу, который задается в программе (Voltage pin). Вывод с ИС токового датчика ZXCT подключаем к аналоговому входу Arduino (Current pin), который также задается в программе. В моем случае это пины А0 и соответственно А1 .

Подключение дисплея Nokia 5110 расписано в программе (в моем случае подключается в пинам 3-7, питание 3.3В и GND).

Собранное устройство в корпусе:

Собранное устройство в корпусе

В данном проекте я не использовал какие-либо схемы защиты, т.к. это тестовый проект на макетке. В реальном проекте рекомендуется задействовать защиту ИС и защиту выхода, например при помощи стабилитронов. Более подробно о способах защиты расписано в аппноуте «AN39 Current measurement applications handbook» глава «5.2 Transient protection» который вы можете скачать ниже в виде PDF.

Библиотека для Nokia 5110 использована от Adafruit, которую можно взять на GitHub.

Немного о точности измерений. Как известно, для задания источника опорного напряжения в Arduino предусмотрена функция analogReference(), которая может принимать одно из следующих значений:

  • DEFAULT: опорное напряжение по умолчанию 5В (для 5В плат Arduino) или 3.3В ( для 3.3В плат Arduino ). Смотрите спецификацию вашей платы
  • INTERNAL: встроенный источник опорного напряжения, 1.1В в платах с МК ATmega168/ATmega328 и 2.56В в платах с МК ATmega8 (кроме Arduino Mega)
  • INTERNAL1V1: встроенный источник опорного напряжения 1.1В (только на Arduino Mega)
  • INTERNAL2V56: встроенный источник опорного напряжения 2.56В ( только на Arduino Mega)
  • EXTERNAL: внешний источник опорного напряжения. Подключается к пину AREF (диапазон от 0 до напряжения питания платы 3.3В или 5В).

Однако тут есть небольшая загвоздка в том, что если плата питается от USB, то на его выходе не всегда будет точно 5В. А если питается от внешнего источника питания, то внутренний преобразователь UA78M05 (который стоит в Arduino Nano v3) также не даст точно 5В. По даташиту (PDF) выходное напряжение будет «гулять» от 4.8 до 5.2 Вольт. Проведя некоторые эксперименты, при питании от USB, а затем при питании от внешнего аккумулятора 7.2 В, разница при измерении 12В напряжения на нагрузке составила 1 Вольт! Следовательно, лучше использовать встроенный ИОН 1.1В/2.56В, а еще лучше задействовать внешний стабилизированный ИОН, подключаемый к входу AREF.

Напряжение на нагрузке вычисляется в строке voltage = VoltageValue * (5.0 / 1023.0) * kVD, где — напряжение ИОН (т.к. используется DEFAULT, то у нас оно 5); kVD — коэффициент делителя напряжения, который дает нам он-лайн калькулятор. Либо можно рассчитать самому — просто поделив входное напряжение на выходное.

Ток нагрузки вычис ляется следующей формулой I LOAD = V out / ( G t * R S * R G )

В программе за это отвечает строка: current = (CurrentValue * (5.0 / 1023.0)) / kI, где напряжение ИОН 5В, а kI — «токовый коэффициент» снимаемый с делителя напряжения ИС, в нашем случае 2.4.

Все три параметра после расчетов выводится на дисплей Nokia 5110.

Источник