Подключение датчика тока к Ардуино

Подключение датчика тока к Ардуино Уно

Датчики тока Ардуино ACS712 / TA12-100 основаны на эффекте Холла, используются в схемах для защиты от перегрузки. Рассмотрим, как работать с датчиком тока Arduino.

Датчик тока для Ардуино основан на эффекте Холла, имеет прямую зависимость измеряемой силы тока и выходного сигнала. Модули ACS712 / TA12-100 для измерения тока используются в проектах, где требуется защита от перегрузки, например, при изготовлении зарядных устройств и внешних аккумуляторов (power bank), импульсных источников питания. Рассмотрим, как работать с датчиками тока и Arduino Uno.

Характеристики датчика тока Arduino

ACS713 и ACS712 состоит из линейного датчика на базе эффекта Холла с медным проводником. Ток создает магнитное поле в медном проводнике, которое улавливается датчиком и преобразуется в напряжение. Сила магнитного поля линейно зависит от силы тока. Точность обеспечивается микросхемой на модуле с заводскими настройками. Работает цифровой датчик с постоянным и переменным током.

Принцип работы датчика тока ACS712 с элементом Холла
Принцип работы датчика тока ACS712 с элементом Холла

Технические характеристики ACS712

  • Тип интерфейса: цифровой;
  • Напряжение: постоянное и переменное;
  • Напряжение питания: 5 Вольт;
  • Ток потребления: не более 11 мА;
  • Измерение силы тока: от 5 до 30 Ампер;
  • Чувствительность: от 66 мВ/А до 185 мВ/А;
  • Температура эксплуатации: от -40°C до +85°C;
  • Размер платы модуля: 31 мм на 13 мм.

Датчик TA12-100 Arduino работает на другом принципе. Модуль измеряет напряжение, падающее на транзисторе в 200 Ом, который находится на выходе трансформатора. Датчик TA12-100 преобразует напряжение на резисторе в аналоговый сигнал, применяя закон Ома (I = E / R). Коэффициент трансформатора составляет 1000:1 и, чтобы получить значение тока, следует полученные данные умножить на 1000.

Датчик тока TA12-100 для платы Ардуино
Датчик тока TA12-100 для платы Ардуино

Технические характеристики TA12-100

  • Тип интерфейса: аналоговый;
  • Напряжение: постоянное;
  • Напряжение питания: 5 Вольт;
  • Ток потребления: не более 5 мА;
  • Измерение силы тока: до 5 Ампер;
  • Чувствительность: не известна;
  • Температура эксплуатации: от -55°C до +85°C;
  • Размер платы модуля: 30 мм на 24 мм.

Как подключить к Ардуино датчик ACS712

Для занятия нам понадобятся следующие детали:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • датчика тока ACS712 / TA12-100;
  • источник питания 12 Вольт;
  • нагрузка, например, лампа накаливания 12V;
  • провода «папа-папа», «папа-мама».
Схема подключения к Arduino датчика тока ACS712
Схема подключения к Arduino датчика тока ACS712

Датчик ACS712 является цифровым, для подключения потребуется три провода. Два для питания — GND и 5V и один провод для сигнала. Датчик подключается в разрыв цепи между источником питания и нагрузкой, через колодки. Используется библиотека TroykaCurrent.h (скачать ее можно здесь), которая переводит значения аналогового сигнала в миллиамперы. Соберите схему, установите библиотеку и загрузите скетч.

Счетч для датчика тока Arduino ACS712

#include <TroykaCurrent.h>  // библиотека для работы с датчиком

ACS712 sensorCurrent(10);  // сообщаем номер пина входного сигнала

void setup() {
    // открываем последовательный порт
    Serial.begin(9600);
}

void loop() {
    // вывод данных с датчика для постоянного тока
    Serial.print("I = ");
    Serial.print(sensorCurrent.readCurrentDC());
    Serial.println(" A");
    delay(500);
}

Пояснения к коду:

  1. для переменного тока используйте команду sensorCurrent.readCurrentAC();
  2. при отрицательных значениях поменяйте местами провода на колодках.

Как подключить к Ардуино датчик TA12-100

Схема подключения к Arduino датчика тока TA12-100
Схема подключения к Arduino датчика тока TA12-100

Данный датчик используется только для измерения переменного тока и является аналоговым. Для подключения к плате вам потребуется два провода (хотя на модуле имеется три контакта) — один провод подключается к GND, а второй к аналоговому входу. Провод, где вы хотите измерить силу тока, должен проходить через катушку модуля. Соберите схему, как на картинке и загрузите следующий скетч.

Счетч для датчика тока Arduino TA12-100

#define sensorTA12 A0           // назначаем пин для подключения датчика

float nVPP;                                 // напряжение на резисторе
float nCurrThruResistorPP;     // пиковый ток на резисторе
float nCurrThruResistorRMS; // среднеквадратичное значение тока на резисторе
float nCurrentThruWire;         // актуальное среднекватратичное значение тока

void setup() {
    Serial.begin(9600);
    pinMode(sensorTA12, INPUT);
}

void loop() {
    // узнаем напряжение на резисторе с помощью функции getVPP()
    nVPP = getVPP();

    // используем закон Ома для расчета тока на резисторе
    nCurrThruResistorPP = (nVPP / 200.0) * 1000.0;

    // преобразуем значения тока в среднекватичное значение
    nCurrThruResistorRMS = nCurrThruResistorPP * 0.707;

    // коэффициент трансформатора 1000:1, поэтому ток умножается на 1000
    nCurrentThruWire = nCurrThruResistorRMS * 1000;

    // выводим все данные на мониторе порта
    Serial.print("Volts Peak : ");
    Serial.println(nVPP, 3);

    Serial.print("Current Through Resistor (Peak) : ");
    Serial.print(nCurrThruResistorPP, 3);
    Serial.println(" mA Peak to Peak");

    Serial.print("Current Through Resistor (RMS) : ");
    Serial.print(nCurrThruResistorRMS, 3);
    Serial.println(" mA RMS");

    Serial.print("Current Through Wire : ");
    Serial.print(nCurrentThruWire, 3);
    Serial.println(" mA RMS");

    Serial.println();
}

// следующая функция узнает пиковое значение за одну секунду
float getVPP() {
  
    float result;
    int readValue;
    int maxValue = 0;
    uint32_t start_time = millis();
    while ((millis() - start_time) < 1000)
    {
        readValue = analogRead(sensorTA12);

        if (readValue > maxValue) {
            maxValue = readValue;
        }
   }
    result = (maxValue * 5.0) / 1024.0;

    return result;
}

Пояснения к коду:

  1. ;
  2. .
1 Star2 Stars3 Stars4 Stars5 Stars (3 votes, average: 5,00 out of 5)
Загрузка...

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

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