|
Цифровой вольтметр-амперметр-ваттметр на AVR для бытовой сети, некоторые вопросы |
|
|
|
Mar 16 2011, 09:17
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Вот делаю такую штуку - сабж. Делается для себя, но хочется не только некий показометр (а-ля китайские барометры, которые показывают хрен знает что, мало зависящее от атмосферного давления), а прибор, на показания которого можно ориентироваться  . Схему измерительной части прилагаю. Резистор R2 - многооборотный. На выходе ТТ предполагается еще поставить ОУ с переключаемым Ку как в AVR465 (для низкоточных нагрузок), но пока его там нету - сразу в ATMega8. БП на LM7805, мегу и LCD рисовать не стал - все стандартно. Генератор внутренний, 8МГц. Я принципиально не стал ставить шунт и делитель. С гальванической развязкой надежнее. Измерительные узлы отдельно от МК и цифровой части проверены обычным мультиметром на различных нагрузках (от 25Вт паяльника до 10КВт кухонной печки) - они полностью адекватны и работают нормально. Обработка данных такая: 1. АЦП на частоте 125 кГц цифрует сигнал. Обработчик прерывания Считает суммы отсчетов и их кол-во: // ADC interrupt service routine interrupt [ADC_INT] void adc_isr(void) { dword adc_data, temp; // Read the AD conversion result adc_data=ADCW&0xFFFE; if(isU) { // U temp=adc_data; //*adc_data; sqr_summU+=temp; countU++; } // if else { // I temp=adc_data; //*adc_data; sqr_summI+=temp; countI++; } // else } // adc_isr 2. Главная программа меряет по очереди ток и напряжение: ............. // Измерение напряжения isU=1; sqr_summU=0; countU=0; ADMUX&=0xFE; // ADC0 - канал напряжения // Запуск АЦП ADCSRA|=0x40; // ADCSC - Start ADC startMs=ms; // ожидание 21 мс (20мс - период 50 Гц) while (abs (ms-startMs)<21); // стоп АЦП ADCSRA&=0xBF; // 10111111 = BF ............. для тока также, только переменные другие. Переменная ms глобальная - TC1 по прерыванию считает миллисекунды. 3. Когда оба померяли, вычисляем // Расчет напряжения // Среднеквадратическое // Urms=sqrt(sum(u(i)^2)/N); u(i) - мгновенные отсчеты (с АЦП), i=1..N f_sqr_summU = ((float)sqr_summU)/countU; // ср. арифм. // f_sqr_summ=sqrt(f_sqr_summ); // Urms (отсчеты АЦП) // Uацп=ADC*Vref/1024=ADC*0.005 U = f_sqr_summU*0.005; // Uвх=Urms*109.52 U*=109.52; // Расчет тока // Среднеквадратическое // Urms=sqrt(sum(u(i)^2)/N); u(i) - мгновенные отсчеты (с АЦП), i=1..N f_sqr_summI = ((float)sqr_summI)/countI; // ср. арифм. // f_sqr_summ=sqrt(f_sqr_summ); // Urms (отсчеты АЦП) // Uацп=ADC*Vref/1024=ADC*0.005 I = f_sqr_summI*0.005; // Iн=500*Uацп/148,86 =Uацп*3.359 I*=3.359; // S - Полная мощность S_temp=((dword)I*U); S=S_temp; 4. после этого вывод на дисплей. Калибровки пока нету, но будет. Заметил странности: 1. При среднеквадратических было завышение показаний почти в 2 раза - вместо 220-230в показывал 380-400. По току аналогично. Поставил среднеарифметическое - нормально стало.... Почему? Или я чего-то прозевал? 2. Показания "бегают" - часто меняются в небольших пределах. Я могу поставить в цикл задержку - типа мерять раз в секунду, но меня такой способ чего-то смущает.. Может кто что посоветует? Спасибо.
Сообщение отредактировал hd44780 - Mar 16 2011, 09:19
Эскизы прикрепленных изображений
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
 |
Ответов
(150 - 161)
|
Apr 15 2011, 16:08
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(rx3apf @ Apr 15 2011, 12:49)  А 20 измерений за период - это вообще смешно, посмотрите, как это делается в микросхемах электросчетчиков Переделал замеры - теперь каналы АЦП опрашиваются по 500 раз за период - дельта все равно прыгает. Изменились только абсолютные значения этой дельты. А про AD-шные микрухи я уже писал - одна такая микросхема стоит практически столько же, сколько и моя схема целиком. К тому же я хочу изучить и понять эти вещи, а не поставить одну микруху, которая все посчитает, а как - непонятно. Поэтому я принципиально не хочу их использовать. Пусть даже у меня и будет какая-то погрешность из-за каких-то моих ошибок или заблуждений..
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Apr 15 2011, 16:44
|
Гуру
     
Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047

|
Цитата(hd44780 @ Apr 15 2011, 20:08)  К тому же я хочу изучить и понять эти вещи, а не поставить одну микруху, которая все посчитает, а как - непонятно. Если почитать даташиты, будет понятно. Цитата Поэтому я принципиально не хочу их использовать. Пусть даже у меня и будет какая-то погрешность из-за каких-то моих ошибок или заблуждений.. Так цель сделать _прибор_ или чисто по...ться ? Из идейного мазохизма ? Задачка ведь не из простых, на самом деле. Вот, китайский ваттметр на ADE7755 все ж, как выяснилось, подвирает при плохом коэффициенте мощности (если что с импульсным питателем без PFC), процентов на пять. При том, что чип специализированный. Бытовой электросчетчик на том же чипе - считает точно. Разница - ТТ в первом случае и шунт во втором.7755, кстати, копеечный, меньше двух баксов в розницу. Правда да, коэффициент мощности не покажет и напряжение тоже. Те, что по-сложнее - да, по-дороже. Но и результат лучше, можно уже говорить о точности лучше 1% даже при плохом коэффициенте мощности. И готовое изделие можно купить рублей за 800. Где будет все. На ширпотребе без специализированного фронтэнда ничего подобного не получится, это пустая трата времени.
|
|
|
|
|
Apr 16 2011, 15:31
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(Stanislav_S @ Apr 16 2011, 16:15)  не увидел на вашей схеме ФНЧ на входе АЦП, это то же принципиальная позиция?  Нет  , это мое упущение. Принципиальных позиций 2 - полная гальваническая развязка от сети и не использовать редкие, труднодобываемые микрухи, каковыми для меня являются эти ADxxxx  . Фильтр просто из виду упустил как-то. Сперва делал по-простому, чтобы ожило. Потом забыл  . Теперь можно добавить. Спасибо, напомнили. Только наверное не перед АЦП, а перед повторителями. Т.к. буду еще усилитель с упр. Ку делать по токовому каналу. Потому что в нынешней схеме при большой нагрузке с ТТ идет большое напряжение, которое повторитель просто срежет. Если сам не сгорит  . На 10А духовке с ТТ идет где-то 3.5в действующих. Амплитуда при поднятии на 2в выйдет за 5в. Или есть лучшее решение, чем усилитель с управляемым Ку (аналоговый мультиплексор на входе)? Просто я такой способ видел в цифровых осциллографах. Кстати, сделал расчет активной мощности без угла и косинуса, как ср. арифм. мгновенных мощностей за период (здесь кто-то мне так советовал) - вроде нормально. На паяльнике отрицательная и немного меньше полной. Угол уж сильно бегает. Наверное из-за помех и наводок в сети синусоида неидеальная  .
Сообщение отредактировал hd44780 - Apr 16 2011, 15:56
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Apr 17 2011, 06:11
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(Stanislav_S @ Apr 16 2011, 18:34)  Никто не мешает вам уменьшить резистор в цепи измерения тока до разумных пределов, рассчитав его таким образом что-бы напряжение на нем при максимальном токе, гарантировано входило во входной диапазон АЦП и применить при этом Rail to Rail операционник, я для этих целей применяю AD8601, очень рекомендую очень хорошее отношение цена - качество. Спасибо. Попробую. Хотя резистор на ТТ менять не хотелось бы - есть вероятность, что малые нагрузки захватывать перестанет  . Новые результаты испытаний: Паяльник 25 Вт практически так и показывает (отличия - на какие-то десятые). Настольная лампа (на БП написано 11 Вт), показывает 15 Вт. Утюг 1КВт показывает почему-то 10Вт  . Почему - не знаю. Полную мощность показывает S=960-970 ВА - вроде нормально. Другой утюг, чуть поменьше - такой же глюк. Не нравятся утюги моему девайсу  . Лампа накаливания 100W - S=92, P=-90 Лампа накаливания 75W - S=72-73, P=-69 Лампа накаливания 150W - S=132-133, P=-130 Духовку на 10А подключать боюсь - вылет амплитуды за 5в гарантирован. И еще хотел спросить - имеет ли смысл вообще выводить на индикацию знак активной мощности? Аналогичный вопрос про Q (реактивная мощность)? Или же в условиях "грязных" бытовых сетей эти величины далеки от реальности? Я читал статью про аналогичный девайс на "Радиокоте" ( http://radiokot.ru/circuit/digital/measure/23/ ), там автор выводит P по модулю, без знака, ссылаясь на то, что "не хватает места на ЖКИ и обычно преобладают индуктивные нагрузки". PS. Что там за глюк был с ТТ - не знаю, сейчас нормально показывает - отключаешь нагрузку - чистый ноль.
Сообщение отредактировал hd44780 - Apr 17 2011, 09:15
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Apr 17 2011, 14:51
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Осциллограммы - интересная мысль, надо подумать. Когда-то делал такое ради баловства Сделал фильтры - схема. Только резисторы не 1кил, а 1.5к. Частота среза вроде типа 80Гц. Началась какая-то фигня - напряжение подскочило до 280в, ток даже без нагрузки - 5 с чем-то ампер показывает .... В чем я обсчитался?
Сообщение отредактировал hd44780 - Apr 17 2011, 14:56
Эскизы прикрепленных изображений
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Apr 18 2011, 04:24
|

Профессионал
    
Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980

|
Цитата(Stanislav_S @ Apr 17 2011, 19:14)  Ну дак коэфициенты для калибровки надо пересчитать Была такая мысль. По напряжению можно, а ток там даже без нагрузки вообще дико "бегать" начал. Как его откалибруешь? Цитата(Stanislav_S @ Apr 17 2011, 19:14)  частота среза уж ни как не будет 80 Гц  для напряжения так точно, подумайте почему  Я догадываюсь - наверное, из-за потенциометра по напряжению и нагрузочного резистора ТТ. Но последний маленький, 100 ом всего, а как по-нормальному учесть тот делитель - не знаю. Ставить в фильтр еще оди подстроечник и его крутить что-ли?
Сообщение отредактировал hd44780 - Apr 18 2011, 04:25
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|