Как работают датчики тока для Arduino. Какие существуют типы датчиков тока. Как подключить датчик тока к Arduino. Какие схемы подключения датчиков тока наиболее распространены. Как использовать датчик тока в проектах с Arduino.
Принцип работы датчиков тока для Arduino
Датчики тока для Arduino позволяют измерять силу электрического тока в цепи без необходимости её разрыва. Существует несколько основных принципов работы таких датчиков:
- На основе эффекта Холла — измеряют магнитное поле, создаваемое током, и преобразуют его в напряжение
- На основе трансформатора тока — используют явление электромагнитной индукции
- На основе измерения падения напряжения на шунте
Выбор конкретного типа датчика зависит от требуемого диапазона измерений, точности, стоимости и других факторов. Рассмотрим подробнее наиболее распространенные датчики тока для Arduino.
Популярные датчики тока для Arduino
Датчик ACS712
ACS712 — это датчик тока на эффекте Холла, один из самых популярных для работы с Arduino. Основные характеристики:

- Диапазон измерений: ±5А, ±20А или ±30А (в зависимости от модели)
- Напряжение питания: 5В
- Чувствительность: 66-185 мВ/А
- Аналоговый выход
ACS712 прост в подключении и использовании, имеет линейную характеристику. Однако для точных измерений требует калибровки.
Датчик SCT-013
SCT-013 — это датчик на основе трансформатора тока. Особенности:
- Бесконтактное измерение (надевается на провод)
- Диапазон: до 100А
- Выход: напряжение или ток (зависит от модели)
- Не требует внешнего питания
Удобен для измерения больших токов. Требует дополнительной обвязки для работы с Arduino.
Схемы подключения датчиков тока к Arduino
Схема подключения зависит от типа используемого датчика. Рассмотрим наиболее распространенные варианты.
Подключение ACS712
Для подключения ACS712 к Arduino требуется всего 3 провода:
- VCC датчика к 5V Arduino
- GND датчика к GND Arduino
- OUT датчика к аналоговому входу Arduino (например, A0)
Измеряемая цепь подключается к контактам IP+ и IP- датчика. Важно соблюдать полярность.

Подключение SCT-013
Для работы SCT-013 с Arduino требуется дополнительная обвязка:
- Нагрузочный резистор (расчет зависит от модели датчика)
- Смещение нуля с помощью делителя напряжения
- Выход подключается к аналоговому входу Arduino
Такая схема позволяет преобразовать выходной сигнал датчика в напряжение 0-5В, подходящее для Arduino.
Калибровка датчиков тока
Для повышения точности измерений датчики тока необходимо калибровать. Основные этапы калибровки:
- Измерение выходного сигнала датчика при нулевом токе
- Измерение выходного сигнала при известном эталонном токе
- Расчет коэффициента преобразования
- Внесение поправок в код программы
Калибровку рекомендуется проводить для каждого конкретного экземпляра датчика, так как их характеристики могут немного отличаться.
Программирование Arduino для работы с датчиком тока
Базовый алгоритм работы с датчиком тока на Arduino включает следующие шаги:
- Инициализация и настройка АЦП
- Считывание значения с аналогового входа
- Преобразование считанного значения в ток
- Фильтрация и усреднение результатов
- Вывод или дальнейшая обработка полученных данных
Пример простого кода для измерения тока с помощью ACS712:

const int sensorPin = A0;
const float sensitivity = 0.185; // В/А для ACS712 5A
void setup() {
Serial.begin(9600);
}
void loop() {
int rawValue = analogRead(sensorPin);
float voltage = rawValue * (5.0 / 1023.0);
float current = (voltage - 2.5) / sensitivity;
Serial.print("Ток: ");
Serial.print(current);
Serial.println(" A");
delay(1000);
}
Этот код считывает значение с датчика, преобразует его в ток и выводит результат в Serial Monitor каждую секунду.
Применение датчиков тока в проектах Arduino
Датчики тока находят широкое применение в различных проектах на базе Arduino:
- Системы мониторинга энергопотребления
- Защита от перегрузки и короткого замыкания
- Измерение мощности электроприборов
- Управление зарядом аккумуляторов
- Диагностика электродвигателей
Рассмотрим несколько конкретных примеров использования датчиков тока с Arduino.
Система мониторинга солнечной электростанции
В такой системе датчики тока могут использоваться для:
- Измерения тока, генерируемого солнечными панелями
- Контроля тока заряда/разряда аккумуляторов
- Мониторинга потребления энергии нагрузкой
Arduino собирает данные с датчиков, обрабатывает их и может отправлять на сервер для дальнейшего анализа и визуализации.

Умный удлинитель
Датчик тока в таком проекте позволяет:
- Измерять потребляемую мощность подключенных устройств
- Отключать питание при превышении допустимого тока
- Вести статистику энергопотребления
Arduino управляет реле для включения/отключения розеток и может передавать данные на смартфон через Bluetooth или Wi-Fi.
Ограничения и проблемы при работе с датчиками тока
При использовании датчиков тока с Arduino следует учитывать некоторые ограничения:
- Ограниченная точность измерений, особенно на малых токах
- Влияние температуры на показания датчиков
- Необходимость калибровки для повышения точности
- Ограничения по максимальному измеряемому току
- Возможные наводки и помехи при измерении переменного тока
Для преодоления этих ограничений можно использовать дополнительную фильтрацию сигнала, температурную компенсацию, более точные АЦП и другие методы.
Альтернативные методы измерения тока
Помимо рассмотренных датчиков, существуют и другие способы измерения тока с помощью Arduino:
- Использование внешних АЦП с высоким разрешением
- Измерение с помощью специализированных микросхем (например, INA219)
- Применение операционных усилителей для усиления сигнала с шунта
Выбор метода зависит от конкретной задачи, требуемой точности и бюджета проекта.

Заключение
Датчики тока являются важным инструментом для многих проектов на базе Arduino. Они позволяют измерять и контролировать ток в различных устройствах и системах. При правильном выборе, подключении и программировании датчики тока открывают широкие возможности для создания интересных и полезных проектов.
Важно помнить о необходимости соблюдения техники безопасности при работе с электрическими цепями, особенно при измерении больших токов или высокого напряжения. Всегда следуйте инструкциям и используйте соответствующие меры защиты.
Датчик тока с беспроводным каналом связи на базе ARDUINO
Датчик тока с беспроводным каналом связи на базе ARDUINO- Главная
- Статьи
- Датчик тока с беспроводным каналом связи на базе ARDUINO
Баймухаметов З. Р.
Абдуллов А.А.
Потанин А.А.
Арсланов А.Д.
Ключевые слова: датчик тока, беспроводной модуль, АТ-команды, Arduino, Bluetooth
Достоверное измерение токов и напряжений в энергетическом и управляющем оборудовании является важным аспектом обеспечения высокой надежности и безопасности промышленных систем и электронных приборов. Специализированные датчики также применяются для определения разбаланса токов, мониторинга и диагностики цепей, запуска схем защиты, обнаружения отказов электрооборудования и аварийных состояний различных типов нагрузки.
Литература:
1. Григорьев М., Вавилова Г. Исследование методов измерения токов с повышенной точностью. — М., 2015. — 354 c.
2. Блум Д. Изучаем Arduino. Инструменты и методы технического волшебства. — СПб.: БХВПетербург, 2015. — 336 с.
3. Описание микроконтроллера Arduino Uno [Электронный ресурс]. URL: http://arduino. ru/Hardware/ArduinoBoardUno (дата обращения: 27.02.2021).
При работе с электрооборудованием и электрическими сетями часто возникает необходимость в измерении силы тока и нередко бывают ситуации, когда нет возможности провести измерения контактным способом. Существуют два основных метода бесконтактного измерения тока, первый — преобразование тока, протекающего в проводнике, с помощью датчика Холла, названного в честь первооткрывателя эффекта возникновения поперечного электрического поля в полупроводнике или проводнике, помещенном в магнитное поле, и второй — с использованием трансформатора тока. Основа такого датчика — трансформатор, по первичной обмотке которого протекает ток нагрузки, а во вторичной — наводится напряжение, пропорциональное этому току.
Целью исследования является получение численных значений тока бесконтактным методом с помощью микроконтроллера и датчика тока по беспроводному каналу связи.
Существует целый класс устройств под названием токоизмерительные клещи, которые позволяют измерить значение тока без разрыва цепи и без электрического контакта с ней [1]. Большинство из них достаточно дорогие и малофункциональные, заведомо уступают по цене и по гибкости настройки связки, скажем, датчику тока, микроконтроллеру и беспроводному модулю. В качестве датчика можно взять недорогой TA12–100, в качестве головного устройства, например, Arduino Uno, а для передачи полученных данных по беспроводной сети будем использовать модуль HC-06.
Принцип работы датчика TA12–100 заключается в следующем. Модуль измеряет напряжение, падающее на транзисторе в 200 Ом, который находится на выходе трансформатора. Датчик TA12–100 преобразует напряжение на резисторе в аналоговый сигнал, применяя закон Ома. Коэффициент трансформатора составляет 1000:1 и, чтобы получить значение тока, следует полученные данные умножить на 1000. Данный датчик используется только для измерения переменного тока и является аналоговым. Для подключения к плате потребуется два провода — один провод подключается к заземлению, а второй — к аналоговому входу. Провод, где необходимо измерить силу тока, должен проходить через катушку модуля (рис. 1).
Для Цитирования:
Баймухаметов З. Р., Абдуллов А.А., Потанин А.А., Арсланов А.Д., Датчик тока с беспроводным каналом связи на базе ARDUINO. КИП и автоматика: обслуживание и ремонт. 2021;11.
Полная версия статьи доступна подписчикам журнала
Для Цитирования:
Баймухаметов З. Р., Абдуллов А.А., Потанин А.А., Арсланов А.Д., Датчик тока с беспроводным каналом связи на базе ARDUINO. КИП и автоматика: обслуживание и ремонт. 2021;11.
ФИО
Ваш e-mail
Ваш телефон
Нажимая кнопку «Получить доступ» вы даёте своё согласие обработку своих персональных данных
Ваше имя
Ваша фамилия
Ваш e-mail
Ваш телефон
Придумайте пароль
Пароль еще раз
Запомнить меня
Информируйте меня обо всех новостях и спецпредложениях по почте
На указанный Вами номер телефона был отправлен код подтверждения.
Повторно запросить код можно будет через секунд.
Код подтверждения
На указанный Вами номер телефона был отправлен код подтверждения.Повторно запросить код можно будет через секунд.
Код подтверждения
На указанный Вами номер телефона был отправлен код подтверждения.Повторно запросить код можно будет через секунд.
Код подтверждения
Логин
Пароль
Ваше имя:
Ваш e-mail:
Ваш телефон:
Сообщение:
На сайте используется защита от спама reCAPTCHA и применяются Условия использования и Конфиденциальность Google
Использовать это устройство?
Одновременно использовать один аккаунт разрешено только с одного устройства.
Повторно запросить код можно будет через секунд.
Код подтверждения
×
Мы перевели вас на Русскую версию сайта
You have been redirected to the Russian version
Мы используем куки
Датчик тока MAX471, подключение к Arduino
Модуль датчика GY-471 на микросхеме MAX471, аналоговый датчик тока, позволяет измерять ток до 3А при напряжении от 3 до 36 В .
Особенности модуля:
- Аналоговый датчик тока, усилитель сигнала встроенного шунта.
- Изменение тока на положительной шине.
- Возможно параллельное подключение нескольких датчиков для увеличения измеряемого тока
- Напряжение питания: 3 В — 36 В (Датчик не измеряет напряжение, питается от измеряемой шины)
- Максимальный ток: 3 А.
- Разрешение на аналоговом выходе: 1А/1В
Распиновка модуля:
- RS- — К выходу подключается нагрузка.
- RS+ — К выходу подключается источник питания.
- SIGN — Логический выход с открытым коллектором, состояние выхода указывает в какую сторону течет ток, низкий уровень означает что ток течет от RS- к RS+.
- OUT — Аналоговый выход, на выходе формируется напряжение в зависимости от величины протираемого тока, 1 вольт на выходе соответствует 1 амперу через шунт.
- GND — Масса.
Подключение к Arduino:
Для модуля GY-471 Похожий модуль с делителем напряжения и возможностью измерения напряжения.Датчик подключается на любой аналоговый вход ардуино.
Софт:
Для модуля не требуется сторонних библиотек, принцип работы аналогичен измерению напряжения на аналоговом входе. Можно воспользоваться стандартным примером, который не дает точных измерений.
/* ReadAnalogVoltage Reads an analog input on pin 0, converts it to voltage, and prints the result to the Serial Monitor. Graphical representation is available using Serial Plotter (Tools > Serial Plotter menu). Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain. http://www.arduino.cc/en/Tutorial/ReadAnalogVoltage */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float current = sensorValue * (5.0 / 1024.0); // print out the value you read: Serial.println(current); }
Проблема в том, что в качестве источника опорного напряжения для АЦП используется напряжение питания, которое практически не когда не является стабильным и равным 5,0 вольт. Правильным решением будет использовать встроенный источник опорного на 1,1 вольт (для ATmega328), но в данном случаи диапазон измерений будет ограничен 1,1 А.
void setup() { Serial.begin(9600); analogReference(INTERNAL); } void loop() { float current = (analogRead(A0) * 1.1) / 1024.0; Serial.println(current); }
Если это не подходит, можно воспользоваться внешним источником опорного, например MAX6125 на 2,5 В.
Видео
Узнать | OpenEnergyMonitor
Edit
Датчики ТТ — Взаимодействие с Arduino
Чтобы подключить датчик ТТ к Arduino, выходной сигнал от датчика ТТ должен быть преобразован, чтобы он соответствовал входным требованиям аналоговых входов Arduino. , то есть положительное напряжение между 0 В и опорным напряжением АЦП.
Примечание: На этой странице приведен пример платы Arduino, работающей от 5 В, и платы EmonTx, работающей от 3,3 В. Убедитесь, что вы используете правильное напряжение питания и напряжение смещения в своих расчетах, которые соответствуют вашей настройке.
Этого можно добиться с помощью следующей схемы, состоящей из двух основных частей:
Датчик ТТ и нагрузочный резистор
- Делитель напряжения смещения ( R1 и R2 )
Расчет подходящего размера нагрузочного резистора
Если датчик ТТ представляет собой тип «токового выхода», такой как YHDC SCT-013-000 , сигнал тока необходимо преобразовать в сигнал напряжения с помощью нагрузочного резистора . Если это ТТ с выходом напряжения, вы можете пропустить этот шаг и исключить нагрузочный резистор, так как нагрузочный резистор встроен в ТТ.
а) Выберите диапазон тока, который вы хотите измерить
ТТ YHDC SCT-013-000 имеет диапазон тока от 0 до 100 А. В этом примере давайте выберем 100 А в качестве максимального тока.
b) Преобразуйте максимальный среднеквадратический ток в пиковый, умножив его на √2.
Первичный пиковый ток = среднеквадратичное значение тока × √2 = 100 А × 1,414 = 141,4 А
c) Разделите пиковый ток на число витков трансформатора тока, чтобы получить пиковый ток во вторичной обмотке.
ТТ YHDC SCT-013-000 имеет 2000 витков, поэтому вторичный пиковый ток будет равен:
Вторичный пиковый ток = Первичный пиковый ток / №. витков = 141,4 А / 2000 = 0,0707 А
d) Для максимального разрешения измерения напряжение на нагрузочном резисторе при пиковом токе должно быть равно половине аналогового опорного напряжения Arduino. (AREF / 2)
Если вы используете Arduino, работающую от 5 В: AREF / 2 будет 2,5 В. Таким образом, идеальное сопротивление нагрузки будет:
Идеальное сопротивление нагрузки = (AREF/2) / Вторичный пиковый ток = 2,5 В / 0,0707 А = 35,4 Ом
35 Ом не является общепринятым номиналом резистора. Ближайшие значения по обе стороны от 35 Ом составляют 39 и 33 Ом. Всегда выбирайте меньшее значение, иначе максимальный ток нагрузки создаст напряжение выше, чем AREF. Мы рекомендуем нагрузку 33 Ом ±1%. В некоторых случаях использование двух последовательных резисторов будет ближе к идеальному значению нагрузки. Чем дальше от идеального значение, тем ниже будет точность.
Вот те же расчеты, что и выше, в более компактной форме:
Нагрузочный резистор (Ом) = (AREF * CT TURNS) / (2√2 * макс. первичный ток)
Расчет нагрузочного резистора для оборудования мониторинга энергии OpenEnergyMonitor.
emonTx V3 (см. руководство)
В emonTx V3 используется стабилизатор на 3,3 В, поэтому он V CC и, следовательно, AREF всегда будет 3,3 В независимо от напряжения батареи. Стандартный emonTx V3 использует нагрузочные резисторы 22 Ом для CT 1, 2 и 3 и резистор 120 Ом для CT4, канала высокой чувствительности. См. техническую вики-страницу emonTx V3 по адресу:
https://wiki.openenergymonitor.org/index.php?title=EmonTx_V3#Burden_Resistor_Calculations.
emonPi (см. руководство)
EmonPi имеет два канала ТТ, оба с нагрузочными резисторами 22 Ом.
emonTx V2
Если вы используете emonTx V2 с питанием от батареи, AREF будет начинаться с 3,3 В и медленно уменьшаться по мере падения напряжения батареи до 2,7 В. Таким образом, идеальное сопротивление нагрузки для минимального напряжения будет:
Идеальное сопротивление нагрузки = (AREF/2) / Вторичный пиковый ток = 1,35 В / 0,0707 А = 19,1 Ом
19 Ом не является общепринятым значением. У нас есть выбор 18 или 22 Ом. Мы рекомендуем использовать нагрузку 18 Ом ±1%.
Инструмент для расчета размера нагрузочного резистора, витков трансформатора тока и максимальных Irms (спасибо Тайлеру Адкиссону за его создание и распространение).
( Примечание : этот инструмент не учитывает максимальную выходную мощность ТТ. При превышении максимальной выходной мощности возникают насыщение и искажения. Он также не принимает во внимание допуски компонентов, поэтому значение нагрузочного резистора следует уменьшить на несколько (~5) процентов допускают некоторый «запас». Дополнительную информацию о допусках компонентов можно найти по адресу: Допуски компонентов ACAC.)
Добавление смещения постоянного тока
Если вы соедините один из проводов трансформатора тока с землей и измерите напряжение второго провода относительно земли, напряжение изменится от положительного до отрицательного относительно земли. Однако для аналоговых входов Arduino требуется положительное напряжение . Подключив провод ТТ, который мы подключили к земле, вместо этого к источнику с половиной напряжения питания, выходное напряжение ТТ теперь будет колебаться выше и ниже 2,5 В, таким образом, оставаясь положительным.
Резисторы R1 и R2 на принципиальной схеме выше представляют собой делитель напряжения, обеспечивающий источник 2,5 В (1,65 В для emonTx). Конденсатор С1 имеет низкую реактивное сопротивление — несколько сотен Ом — и обеспечивает путь для переменного тока в обход резистора. Подойдет значение 10 мкФ.
Выбор подходящего номинала резисторов R1 и R2
Более высокое сопротивление снижает потребление энергии в состоянии покоя.
Мы используем резисторы 10 кОм для мониторов с питанием от сети. В emonTx используются резисторы 470 кОм, чтобы свести энергопотребление к минимуму, так как он рассчитан на работу от батарей в течение нескольких месяцев.
Эскиз Arduino
Чтобы использовать приведенную выше схему для измерения среднеквадратичного значения тока с предполагаемым фиксированным среднеквадратичным значением напряжения (например, 240 В) для указания приблизительной кажущейся мощности, используйте этот эскиз Arduino: Эскиз Arduino — только ток
В этой главе:
Измерение тока | Arduino-FOC
Arduino SimpleFOClibrary имеет своей целью поддержку реализации FOC с (как минимум) тремя наиболее стандартными типами измерения тока:
- Датчик тока в линии
- Измерение тока на стороне низкого напряжения
- Измерение тока на стороне высокого напряжения — Пока не поддерживается определение бокового тока на платах ESP32, stm32 (семейства f1, f4 и g4 — один двигатель), samd21 (один двигатель) и на платах B_G431B_ESC1 на базе stm32 (один двигатель).
Каждый из текущих классов датчиков будет реализовывать все необходимые функции для простой и надежной реализации алгоритма FOC:
- Аппаратная конфигурация
- АДК резолютон и частота
- Автоматическое смещение ноль. векторная величина
- Расчет токов d и q ВОК
Каждый из реализованных классов может использоваться как автономные классы, и их можно использовать для считывания текущих значений на выходах драйвера BLDC за пределами библиотеки Arduino SimpleFOClibrary , см. примеры кодов в
утилиты > current_sense_test
. Чтобы алгоритм FOC работал, классы измерения тока связаны с классомBLDCMotor
, который использует драйвер для считывания токов FOC.🎯 Цели реализации
Текущий код sense будет написан таким образом, чтобы поддерживать как можно больше различных драйверов и быть полностью взаимозаменяемым. Из-за очень специфичных аппаратных реализаций сбора данных АЦП для различных архитектур микроконтроллеров и из-за очень разных требований к синхронизации драйвера/АЦП для различных подходов к измерению тока эта задача, вероятно, является одной из самых сложных задач для библиотеки SimpleFOC.
Поэтому работа будет выполняться итерациями, и каждый релиз будет все лучше и лучше поддерживаться. Пожалуйста, следите за github и проверяйте выпуски .
Также не забудьте подписаться на наш форум сообщества, где ведется много дискуссий о текущем зондировании и его применении!
. Осуществление тока на какую архитектуру MCU
MCU 2-BIT. ❌ Arduino DUE ✔️ ❌ ❌ stm32 (in general) ✔️ ❌ ❌ stm32f1 family ✔️ ✔️ (one motor) ❌ stm32f4 family ✔️ ✔️ ( one motor) ❌ stm32g4 family ✔️ ✔️ (one motor) ❌ stm32 B_G431B_ESC1 ❌ ✔️ (one motor) ❌ esp32/esp32s3 ✔️ ✔️ ❌ esp32s2/esp32c3 ✔️ ❌ ❌ esp8266 ❌ ❌ ❌ samd21 ✔️ ✔️ (one motor) ❌ samd51 ✔️ ❌ ❌ teensy ✔️ ❌ ❌ Raspberry Pi Pico ✔️ ❌ ❌ Portenta H7 ✔️ ❌ ❌ nRF52 ✔️ ❌ ❌ Копаем глубже
Для получения дополнительных теоретических объяснений и реализации исходного кода для текущего измерения и его интеграции в FOC и движения, ознакомьтесь с разделом углубления копания.
- Аппаратная конфигурация