Введение
Всем привет! После прохождения цикла по датчикам возникли различные вопросы по измерению параметров потребления бытовых и не очень электроприборов.Кто сколько потребляет, как подключить, что мерить, какие есть тонкости и тд. Пришло время раскрыть все карты в этой области.
В этом цикле статей мы рассмотрим тему измерения параметров электроэнергии.
Таких параметров на самом деле очень большое количество, о которых я постараюсь постепенно рассказывать небольшими сериями.
На данный момент запланировано три серии:
Измерение электроэнергии.Качество электроэнергии.
Приборы для измерения параметров электроэнергии.
В процессе анализа мы будем решать определенные практические задачи на микроконтроллерах до достижения результата.
Конечно, большая часть этой серии будет посвящена измерению переменного напряжения и может быть полезна всем любителям управлять электроприборами своего умного дома.
По итогам всего цикла мы выпустим некий умный счетчик электроэнергии с доступом в Интернет. Совсем заядлые любители управления электроприборами своего умного дома могут оказать посильную помощь в реализации коммуникационной части на базе, например, MajorDomo. Давайте сделаем OpenSource лучшим умным домом, так сказать.
В этой серии из двух частей мы рассмотрим следующие вопросы:
Подключение датчиков тока и напряжения в устройствах постоянного тока, а также однофазных и трехфазных цепях переменного тока; Измерение действующих значений тока и напряжения; Измерение коэффициента мощности; Суммарная, активная и реактивная мощность; Потребление электроэнергии; Нажав ниже, вы найдете ответы на первые два вопроса этого списка.Я сознательно не касаюсь вопросов точности измерения показателей и из этой серии радуюсь только результатам, полученным с точностью плюс-минус лапоть.
Этому вопросу я обязательно посвящу отдельную статью в третьей серии.
1. Подключение датчиков
В прошлой серии о датчиках напряжения и тока я рассказал о типах датчиков, но не рассказал о том, как их использовать и где их размещать.Пришло время это исправить
Подключение датчиков постоянного тока
Понятно, что вся серия будет посвящена системам переменного тока, но давайте быстро пройдемся по схемам постоянного тока, так как это может нам пригодиться при разработке источников питания постоянного тока.Возьмем, к примеру, классику.
ШИМ-понижающий преобразователь :
Рисунок 1. Понижающий преобразователь ШИМ Наша задача — обеспечить стабилизированное выходное напряжение.
Кроме того, на основе информации датчика тока можно управлять режимом работы дросселя L1, предотвращая его насыщение, а также осуществлять токовую защиту преобразователя.
Да и если честно, вариантов установки датчиков особо нет. На выходе преобразователя установлен датчик напряжения в виде резистивного делителя R1-R2, единственный способный работать на постоянном токе.
Как правило, специализированная микросхема преобразователя имеет вход обратной связи, и прилагает все усилия для того, чтобы на этом входе (3) был определенный уровень напряжения, указанный в документации на микросхему.
Например 1,25В.
Если наше выходное напряжение соответствует этому уровню, все в порядке — мы напрямую подаем выходное напряжение на этот вход. Если нет, то установите разделитель.
Если нам нужно обеспечить выходное напряжение 5В, то делитель должен обеспечивать коэффициент деления 4, т.е.
например, R1=30к, R2=10к.
Датчик тока обычно устанавливается между источником питания и преобразователем и на микросхеме.
По разности потенциалов между точками 1 и 2 и при известном сопротивлении резисторов Rs можно определить действующее значение тока нашего дросселя.
Установка датчика тока между источниками и нагрузкой не является хорошей идеей, так как конденсатор фильтра будет отсекаться резистором от потребителей импульсного тока.
Установка резистора в разрыв общего провода тоже не сулит ничего хорошего – будет два уровня земли, с которыми будет одно удовольствие повозиться.
Проблем с падением напряжения можно избежать, используя бесконтактные датчики тока, например датчики Холла:
Рисунок 2. Бесконтактный датчик тока
Однако есть более умный способ измерения тока.
Ведь напряжение на транзисторе падает точно так же и через него течет тот же ток, что и через индуктивность.
Следовательно, текущее значение тока можно определить и по падению напряжения на нем.
Честно говоря, если посмотреть на внутреннее устройство микросхем преобразователей, например, от Texas Instruments, то этот метод такой же распространенный, как и предыдущие.
Точность этого метода конечно не самая высокая, но этого вполне достаточно, чтобы токовая отсечка сработала.
Рис 3. Транзистор как датчик тока
То же самое делаем и в других схемах подобных преобразователей, будь то повышающих или инвертирующих.
Однако необходимо отдельно упомянуть трансформаторные прямоходовые и обратноходовые преобразователи.
Рисунок 4. Подключение датчиков тока в обратноходовых преобразователях
В их роли также можно использовать либо внешнее сопротивление, либо транзистор.
На этом мы закончили подключение датчиков к преобразователям постоянного тока.
Если у вас есть предложения по другим вариантам, буду рад дополнить ими статью.
1.2 Подключение датчиков к однофазным цепям переменного тока
В цепях переменного тока мы имеем гораздо больший выбор возможных датчиков.Рассмотрим несколько вариантов.
Самый простой вариант — использовать резистивный делитель напряжения и токовый шунт.
Рисунок 5. Подключение резисторных датчиков
Однако у него есть пара существенных недостатков:
Во-первых, мы либо обеспечим значительную амплитуду сигнала с токового шунта, выделив на него большую мощность, либо довольствуемся малой амплитудой сигнала и в дальнейшем усилим его.
А во-вторых, резистор создает разность потенциалов между нейтралью сети и нейтралью устройства.
Если устройство изолировано, то это не имеет значения, но если устройство имеет заземляющую клемму, то мы рискуем остаться без сигнала от датчика тока, так как закоротим его.
Возможно, стоит попробовать датчики, работающие на других принципах.
Например, мы будем использовать трансформаторы тока и напряжения или датчик тока на эффекте Холла и трансформатор напряжения.
Здесь гораздо больше возможностей для работы с оборудованием, так как нулевой провод не имеет потерь, а главное, в обоих случаях имеется гальваническая развязка измерительного оборудования, что зачастую может оказаться полезным.
Однако необходимо учитывать, что датчики тока и напряжения трансформатора имеют ограниченную частотную характеристику и если мы хотим измерить гармонический состав искажений, то не факт, что это сработает.
Рисунок 6. Подключение трансформатора и бесконтактных датчиков тока и напряжения
1.3 Подключение датчиков к многофазным цепям переменного тока
В многофазных сетях наши возможности подключения датчиков тока немного меньше.Это связано с тем, что использовать токовый шунт вообще не получится, так как разность потенциалов между фазными шунтами будет колебаться в пределах сотен вольт и я не знаю ни одного контроллера общего назначения, аналоговые входы которого выдерживают такое злоупотребление.
Конечно, есть один способ использования токовых шунтов – для каждого канала нужно сделать гальванически развязанный аналоговый вход. Но гораздо проще и надежнее использовать другие датчики.
В моем анализаторе качества я использую резистивные делители напряжения и дистанционные датчики тока на эффекте Холла.
Рисунок 7. Датчики тока в трехфазной сети
Как видно из рисунка, мы используем четырехпроводное соединение.
Конечно, вместо датчиков тока Холла можно использовать трансформаторы тока или петли Роговского.
Вместо резистивных делителей можно использовать трансформаторы напряжения, как для четырехпроводной, так и для трехпроводной системы.
В последнем случае первичные обмотки трансформаторов напряжения соединяются треугольником, а вторичные обмотки звездой, общая точка которых является общей точкой измерительной цепи.
Рисунок 8. Использование трансформаторов напряжения в трехфазной сети
2 Действующее значение тока и напряжения
Пришло время решить проблему измерения наших сигналов.Практическое значение для нас имеет, прежде всего, действующее значение тока и напряжения.
Напомню об оборудовании из серии по датчикам.
С помощью АЦП нашего микроконтроллера будем через определенные промежутки времени записывать мгновенное значение напряжения.
Таким образом, за период измерения мы будем иметь массив данных об уровне мгновенного значения напряжения (по току все аналогично).
Рисунок 9. Ряд мгновенных значений напряжения
Наша задача — рассчитать эффективное значение.
Сначала воспользуемся интегральной формулой:
(1)
В цифровой системе нам приходится ограничиваться определенным квантом времени, поэтому переходим к сумме:
(2)
Где
- период дискретизации нашего сигнала, и
— количество выборок за период измерения.
Где-то здесь в видео я начинаю нести чушь про равенство площадей.
В тот день мне следовало немного поспать.
"=" В микроконтроллерах MSP430FE4252, которые используются в однофазных счетчиках электроэнергии Mercury, производится 4096 отсчетов за период измерения 1, 2 или 4 секунды.
В дальнейшем мы будем опираться на T=1c и N=4096. Более того, 4096 точек в секунду позволят нам использовать алгоритмы быстрого преобразования Фурье для определения спектра гармоник до 40-й гармоники, как того требует ГОСТ.
Но об этом в следующем выпуске.
Набросаем алгоритм нашей программы.
Нам необходимо обеспечить стабильный запуск АЦП каждые 1/8192 секунды, так как каналов у нас два и эти данные мы будем измерять поочередно.
Для этого установите таймер и сигнал прерывания автоматически перезапустит АЦП.
Все АЦП могут это сделать.
Будущую программу будем писать на ардуино, благо она есть у многих под рукой.
На данный момент наш интерес чисто академический.
Имея частоту системного кварца 16 МГц и 8-битный таймер (чтобы жизнь мёдом не казалась), нам необходимо добиться того, чтобы любое прерывание по таймеру работало на частоте 8192 Гц.
Нам грустно, что 16 МГц делятся не так сильно, как нам нужно и конечная рабочая частота таймера составляет 8198 Гц.
Мы закрываем глаза на ошибку в 0,04% и всё равно читаем 4096 отсчётов на канал.
Нам грустно, что прерывание переполнения в arduino занято вычислением времени (отвечает за миллис и задержку, поэтому оно перестанет нормально работать), поэтому используем прерывание сравнения.
И мы вдруг понимаем, что сигнал, поступающий к нам, является биполярным, и что msp430fe4252 прекрасно с ним справляется.
Мы довольствуемся униполярным АЦП, поэтому собираем простой преобразователь биполярного сигнала в униполярный с использованием операционного усилителя:
Рис.
10. Преобразователь биполярного сигнала в униполярный.
Причем наша задача добиться того, чтобы наша синусоида колебалась относительно половины опорного напряжения — тогда мы либо вычтем половину диапазона, либо активируем опцию в настройках АЦП и получим знаковые значения.
В Arduino имеется 10-битный АЦП, поэтому из беззнакового результата в диапазоне 0-1023 вычтем половину и получим -512-511. Проверяем собранную в LTSpiceIV модель и убеждаемся, что всё работает как надо.
В видеоматериале мы дополнительно проверим это экспериментально.
Рисунок 11. Результат моделирования.
Зеленый — исходный сигнал, синий — выходной сигнал.
Скетч для Arduino на один канал
Программа написана в Arduino IDE для микроконтроллера ATmega1280. На моей отладочной плате первые 8 каналов разведены на внутренние нужды платы, поэтому используется канал АЦП8. Этот эскиз можно использовать для платы с ATmega168, но необходимо выбрать правильный канал.void setup() { autoadcsetup(); DDRD |=(1<<PD2)|(1<<PD3); Serial.begin(38400); } double urms = 0; double utemp = 0; int umoment = 0; int N = 0; int flag = 0; void loop() { if (flag){ flag = 0; Serial.println(urms); } } int i = 255; void autoadcsetup(){ //set up TIMER0 to 4096Hz //TIMER0_OVF will be the trigger for ADC /*normal mode, prescaler 16 16MHz / 64 / 61 = 4098 Hz 0.04% to 4096Hz*/ TCCR0B = (1 << CS01)|(1 << CS00);//timer frequency = clk/64 OCR0A = 60;//61-1 TIMSK0 = (1<<OCIE0A); //set ADC. ADMUX = (1 << REFS0);//8-bit mode, ADC0 channel, AVVCC as ref ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2);//TUrn ADC On, trigger enable, Interrupt enable, sysclk/16=1MHz_ADC_clk=76kHz conv freq(13ticks per conversion) ADCSRB = (1<< ADTS1) | (1<<ADTS0) | (1<<MUX5);//Auto trigger source } ISR(TIMER0_COMPA_vect){ if (PIND & (1<<PD2)){ PORTD &= ~(1<<PD2); } else{ PORTD |=(1<<PD2); } TCNT0 = 0; } ISR(ADC_vect){ if( ( UCSR0A & (1<<UDRE0)) ){ umoment = ADCL;//copy result. umoment += (ADCH<<8); umoment = umoment - 512; utemp = utemp + pow((double)(umoment),2)/4096; N++; if (N == 4095){ urms = sqrt(utemp)/102; N = 0; utemp = 0; flag = 1; if (PIND & (1<<PD3)){ PORTD &= ~(1<<PD3); } else{ PORTD |=(1<<PD3); } } } }
Внутри прерываний искажаем пару сервисных пинов, чтобы наглядно видеть рабочую частоту оцифровки.
Несколько слов о том, откуда взялся коэффициент 102. При первом запуске с генератора подавался сигнал различной амплитуды, с осциллографа считывалось действующее значение напряжения, а с пульта снималось расчетное значение в абсолютных единицах АЦП.
Uмакс, В | Урмс, Б | Подсчитано |
3 | 2,08 | 212 |
2,5 | 1,73 | 176 |
2 | 1,38 | 141 |
1,5 | 1,03 | 106 |
1 | 0,684 | 71 |
0,5 | 0,358 | 36 |
0,25 | 0,179 | 19 |
На самом деле 10 разрядов для точных расчетов катастрофически мало, и если измерить таким способом напряжение в розетке вполне возможно, то использование 10-битного АЦП для измерения тока, потребляемого нагрузкой, будет преступлением против метрологии.
.
На этом этапе мы сделаем перерыв.
В следующей части мы рассмотрим остальные три вопроса из этой серии и плавно перейдем к созданию самого устройства.
Представленную прошивку, а также другие прошивки из этой серии (поскольку видеоматериалы я снимаю быстрее, чем готовлю статьи) вы найдете в репозитории на GitHub: github.com/radiolok/arduino_rms_count Что касается разработки электросчетчика, то ссылка от TI SimpleLink WiFi CC3200 SmartPlug , новость о которой буквально на днях пришла мне на почту.
Микроконтроллер CC3200 мне очень нравится, поэтому мы разработаем бустер-пак для существующего лаунчера и реализуем все интересующие нас возможности.
Не забудем убедиться, что он хорошо работает и на других микроконтроллерах.
Комментарии приветствуются прогчип666 , за комментарии и дополнения к материалу, а также smart_alex так как ранее интересовался вопросом измерения тока и напряжения с помощью Arduino. Теги: #Компьютерное железо #Электроника для начинающих #arduino #напряжение #измерение электроэнергии
-
Xsitepro: С Технической Точки Зрения
19 Oct, 24 -
Как Тайм-Бокс Помогает Увеличить Доход
19 Oct, 24 -
Коврик Для Игровой Мыши Steelseries Sx Pro
19 Oct, 24 -
Youtube Снова Экспериментирует С Дизайном
19 Oct, 24 -
Как Я Собрал Бесшумный Компьютер
19 Oct, 24