Инструмент сможет измерять значение тока переменного напряжения для одной конкретной нагрузки. На основании полученных результатов рассчитать значение мощности и вывести на ЖК-дисплей.
Необходимые компоненты
- Arduino UNO
- Датчик тока SCT 013
- ЖК-дисплей 16х2 с клавиатурой (LCD Keypad Shield)
- Макетная плата
- Электролитический конденсатор 10 мкФ
- Резистор 100 Ом (2 шт.)
- Резистор 33 Ом
Теория
Ваттметр – это прибор, который измеряет электрическую мощность. Сам ваттметр можно разделить на два вида: аналоговый и цифровой. Аналоговые ваттметры работают по электродинамическому принципу. Но нам интересен цифровой ваттметр, принцип работы которого заключается в использовании датчиков. Датчик или датчики получают некоторые выборочные значения, затем эти результаты обрабатываться с помощью микроконтроллера и выводятся на устройства ввода/вывода.
В цифровом ваттметре, как правило, используются два датчика, которые вычисляют действующее значение тока (RMS current) и значение действующего напряжения (RMS voltage). Мощность рассчитывается путем перемножения этих двух значений ( напряжение (U) × ток (I) ). Датчики, используемые для измерения напряжения и тока, используют трансформатор ТT (трансформатор тока) и трансформатор ТН (трансформатор напряжения).
В нашем случае, трансформатор ТT модуля SCT-013 имеет только одну обмотку с ферритовым сердечником, через которую пропускается измерительный провод (сечением не более 13мм). Выходной сигнал с датчика тока пропорционален протекающему току через провод.
Для информации
Метод измерения тока датчиком SCT-013 основан на законе электромагнитной индукции Фарадея и на опыте Эрстеда.
Разновидности датчика тока SCT-013
Существуют 10 моделей датчика SCT-013.
Модель SCT-013-000 отличается от всех остальных типом выходного сигнала: это токовый сигнал от 0 до 50 миллиАмпер. При максимальном выходном сигнале в 50 мА в измерительном проводе протекает ток в 100 А.
У остальных моделей выходной сигнал составляет от 0 до 1 Вольта. Различаются они только максимальным измеряемым значением тока: 5А; 10А; 15А; 20А; 25А; 30А; 50А; 60А; 100А.
Характеристики датчика
Назначение | Используется для измерения тока, контроля и защиты двигателя переменного тока, осветительного оборудования, воздушного компрессора и т. д. |
---|---|
Нелинейность | ±3% |
Провод | 1 м, стандартный трехжильный вывод Jack ∅3,5. |
Тип выхода | Токовый 0-50мА или напряжение 0-1В |
Материал сердечника: | феррит |
Размер отверстия для провода | 13 мм * 13 мм |
Механическая прочность | количество переключений не менее 1000 раз (испытание при 25°С) |
Индекс безопасности | диэлектрическая прочность (между корпусом и выходом) 1000 В переменного тока на протяжении 1 минуты. |
Рабочая температура | -25°C~+70°C |
Свойство огнестойкости | согласно стандарту UL94-Vo |
Принципиальная схема
Arduino – это аппаратное обеспечение с открытым исходным кодом, которое можно использовать в качестве микроконтроллера, способного выполнять введенные в него команды. Arduino uno – один из распространенных типов плат.
Сама плата Arduino имеет чип типа ATmega 328, где и хранятся инструкции для работы (программный код). Контроллер имеет 8-битную архитектуру. Arduino поможет в обработке аналоговых данных с датчика в цифровую форму. Для этого этого используется аналого-цифровой преобразователь (АЦП). Получив цифровые данные, программа рассчитает значение мощности с помощью формулы.
Библиотека EmonLib является одной из библиотек, используемых для проектирования ваттметра. В библиотеке предоставлена функция, которая вычислит величину среднеквадратичного значения тока. Функции нужно передать величину выборки, которую вы хотите использовать для получения значения величины тока.
В этом ваттметре используется только датчик, который предназначен для измерения тока. После измерения полученный ток можно умножить на напряжение 220 вольт, чтобы получить значение потребляемой мощности.
Однако результат расчета будет иметь отклонение от реального значения, поскольку напряжение не всегда составляет 220 вольт, если только вы не используете стабилизатор напряжения на 220В.
В библиотеке EmonLib (Energy Monitor) также есть своя собственная калибровка, которую при необходимости можно выполнить, зная используемый нагрузочный резистор.
Описание подключения
- Подключите ЖК-экран с клавиатурой к Arduino Uno.
- Подключите датчик SCT-013 к цепи фильтра, состоящего из делителя напряжения (двух резисторов на 100 Ом), из резистора 33 Ом и конденсатора 10 мкФ.
- Конденсатор подключается между землей и выходом с делителя напряжения, а резистор 33 Ом подключается параллельно датчику тока, один из контактов датчика подключается к аналоговому входу А1 ардуино уно, рисунок 2.
- Загрузите приведенный ниже код в Arduino с помощью Arduino IDE.
#include <LiquidCrystal.h> // Подключение библиотеки для работы с ЖК-дисплея #include <EmonLib.h> // Подключение библиотеки для работы с датчиком тока EnergyMonitor emon1; // Создание экземпляра класса для работы с датчиком int peakPower = 0; // Переменная для хранения пиковой мощности double kilo = 0; // Переменная для хранения потребляемой мощности LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Создание экземпляра класса для работы с дисплеем void setup() { Serial.begin(9600); // Инициализация последовательного порта lcd.begin(16,2); // Инициализация дисплея (2 строки по 16 символов) lcd.clear(); // Очистка дисплея lcd.setCursor(0,0); // Установка курсора на первую строку и первый символ lcd.print("Start . . ."); emon1.current(1,1); // Ток: пин датчика, калибровочный коэффициент. } void loop() { double RMSCurrent = emon1.calcIrms(2500); // Получение текущего значения тока с датчика double cur = 0.92513*RMSCurrent + 0.02799; // Расчет текущего значения тока int RMSPower = 220*cur; // Расчет текущего значения мощности if (RMSPower > peakPower) // Определение пиковая ли мощность { peakPower = RMSPower; } kilo = kilo + (RMSPower * (2.05/60/60/1000));// Добавляем текущую мощность к общему значение delay (10); lcd.clear(); lcd.setCursor(0,0); // Вывод в порт значений lcd.print(cur); lcd.print("A"); lcd.setCursor(10,0); lcd.print(RMSPower); lcd.print("W"); lcd.setCursor(0,1); lcd.print(kilo); lcd.print("kWh"); lcd.setCursor(10,1); lcd.print(peakPower); lcd.print("W"); Serial.println(RMSCurrent); Serial.println(kilo); Serial.println(peakPower); Serial.println(RMSPower); Serial.println(" "); }