реклама на сайте
подробности

 
 
11 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Цифровой вольтметр-амперметр-ваттметр на AVR для бытовой сети, некоторые вопросы
hd44780
сообщение Mar 16 2011, 09:17
Сообщение #1


Профессионал
*****

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



Вот делаю такую штуку - сабж.
Делается для себя, но хочется не только некий показометр (а-ля китайские барометры, которые показывают хрен знает что, мало зависящее от атмосферного давления), а прибор, на показания которого можно ориентироваться biggrin.gif .

Схему измерительной части прилагаю. Резистор 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
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Vasily_
сообщение Mar 16 2011, 12:10
Сообщение #2


Знающий
****

Группа: Модераторы
Сообщений: 925
Регистрация: 25-01-09
Из: Рига
Пользователь №: 43 909



А зачем это делать http://www.conrad.com/VOLTCRAFT-ENERGY-LOG...f75c01%2Fmd5%7D и это работает точно!
Go to the top of the page
 
+Quote Post
RabidRabbit
сообщение Mar 16 2011, 12:13
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 3-12-09
Из: Россия, Москва
Пользователь №: 54 040



2. Результаты для тока и напряжения складывать в кольцевой буфер, выводить среднее арифметическое для значений в буфере. Чем длиннее буфер, тем (по-моему) меньше будет прыгать sm.gif
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 16 2011, 12:32
Сообщение #4


Профессионал
*****

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



Vasily_, ага. и платить 50 еврозеленых баксов rolleyes.gif . Плюс накладные расходы....
Моя конструкция в разы дешевле получится, даже если я туда граф. дисплей прилеплю и нарисую на нем большие цифры.
Да и интересно просто. Я ж разработчик, а не юзер с замашками тупых бухгалтеров с единственной мыслью в голове - "нажал кнопку и оно само все посчитает" blink.gif .
Я резко разбогатею, если начну паять эти ваттметры и продавать их по 50 евро biggrin.gif .

RabidRabbit, попробую, спасибо за идею.

И еще - как можно определить тот косинус угла между током и напряжением?
Для определения не только полной мощности (S=UI), но и активной (P=UI*cos(phi)).

Я знаю, что там как-то анализируется время выхода синусоид "из нуля",
Время я могу посчитать, а что потом делать - мне непонятно crying.gif .

Сообщение отредактировал hd44780 - Mar 16 2011, 14:04


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
dimka76
сообщение Mar 16 2011, 13:26
Сообщение #5


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(hd44780 @ Mar 16 2011, 15:32) *
И еще - как можно определить тот косинус угла между током и напряжением?
Для определения не только полной мощности (S=UI), но и активной (P=UI*cos(phi)).


А его и не надо определять. Надо просто взять сумму произведений мгновенных значений тока на напряжение за период. Результатом и будет значение активной мощности.


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 16 2011, 13:47
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(hd44780 @ Mar 16 2011, 14:32) *
И еще - как можно определить тот косинус угла между током и напряжением?
Для определения не только полной мощности (S=UI), но и активной (P=UI*cos(phi)).

Я определял с помощью детектора фазы.
Ловите переход напряжения через 0 запоминаете номер семпла, потом тока - тоже запоминаете номер семпла,
Потом нехитрыми формулами вычисляете дельту между семлами, конвертируете дельту в угол, и считаете cos.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 16 2011, 14:03
Сообщение #7


Профессионал
*****

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



Цитата(dimka76 @ Mar 16 2011, 15:26) *
Надо просто взять сумму произведений мгновенных значений тока на напряжение за период. Результатом и будет значение активной мощности.


Спасибо. Где-то видел такое. Наверное, в AVR465. Только не понял, на фига оно ...
Попробую.

Цитата(defunct @ Mar 16 2011, 15:47) *
Ловите переход напряжения через 0 запоминаете номер семпла, потом тока - тоже запоминаете номер семпла,
Потом нехитрыми формулами вычисляете дельту между семлами, конвертируете дельту в угол, и считаете cos.


Дельта - разность? И как дельту в угол перевести?
Что такое "детектор фазы"?

Сообщение отредактировал hd44780 - Mar 16 2011, 15:04


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 16 2011, 16:12
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(hd44780 @ Mar 16 2011, 18:03) *
Спасибо. Где-то видел такое. Наверное, в AVR465. Только не понял, на фига оно ...


Это, кажись, прямо из учебника Бессонова по ТОЭ. Там про мощности в цепи переменного тока хорошо написано ...
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 16 2011, 17:44
Сообщение #9


Профессионал
*****

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



Цитата(kovigor @ Mar 16 2011, 18:12) *
Это, кажись, прямо из учебника Бессонова по ТОЭ. Там про мощности в цепи переменного тока хорошо написано ...


Книжку нашел (учебник 1996 г), почитаю.

Сообщение отредактировал hd44780 - Mar 17 2011, 08:58


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 18 2011, 13:30
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(hd44780 @ Mar 16 2011, 16:03) *
Дельта - разность? И как дельту в угол перевести?

Ф = delta * 2 Pi * F / Fd,
где Ф - искомый угол, F - частота входного сигнала, Fd - частота дискретизации, delta - разность между номером семла перехода напряжения через 0 и номером семпла перехода тока через 0.

На практике у вас, например, есть частота дискретизации Fd = 4kHz с которой оцифровывается входной сигнал и частота входного сигнала - 50Гц.
За период входного сигнала, будет 4K / 50 = 80 семлов, 80 семплов это 2Pi, формула преобразования соотв:
Ф = delta * 2 Pi / 80.

Детектор фазы это есть - способ определения где был переход через 0. Можно программно, можно компаратором. Удобнее всего просто срезать диодом отрицательную полуволну входного сигнала, тогда условием перехода через 0 будет переход от семпла равного 0 к ненулевому.
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 18 2011, 14:20
Сообщение #11


Профессионал
*****

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



Цитата(defunct @ Mar 18 2011, 15:30) *
Ф = delta * 2 Pi * F / Fd,

....
Детектор фазы это есть - способ определения где был переход через 0. Можно программно, можно компаратором. Удобнее всего просто срезать диодом отрицательную полуволну входного сигнала, тогда условием перехода через 0 будет переход от семпла равного 0 к ненулевому.


Спасибо.
Диоды там уже есть biggrin.gif .

Надеюсь, на выходных проверю все это...


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
KaMa3eR
сообщение Mar 19 2011, 14:50
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 13-11-09
Из: Украина Шостка
Пользователь №: 53 609



Цитата(hd44780 @ Mar 18 2011, 17:20) *
Спасибо.
Диоды там уже есть biggrin.gif .

Надеюсь, на выходных проверю все это...

как мне кажеться у диода есть маленькая неприятность обычные кремниевые диоды имеют прямое падение напряжения около 0,6—0,7 вольт, применение диодов Шоттки позволяет снизить это значение до 0,2—0,4 вольт, а если сделать активный выпрямитель и того не останется laughing.gif
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 20 2011, 12:34
Сообщение #13


Профессионал
*****

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



На ТТ у меня диод германиевый (старый советский Д220), в выпрямителе - кремниевые - 1N4007.

Насчет активного выпрямителя - была мысль, но схемы не нашел sad.gif . Одни абстрактные размышления на тему попадались. Из которых схему трудно сделать. Мне, по крайней мере.
Не подкинете ли схемку?

Хотя я решил мерить амплитуду и делить ее на корень из 2 - как в букваре.
Среднее арифметическое сильно "бегает" (писал выше), кольцевой буфер на 200 значений не спас, больше делать не могу - килобайта памяти в меге 8 не хватает sad.gif. Не вешать же туда SRAM на 64 КБ wacko.gif ...
Среднеквадратичное бегает меньше, но дает завышенные результаты - почти в 2 раза (при 230 на входе показывает 380-400 sm.gif ). Я, конечно, могу подогнать коэффициентом, но мне интересно - почему идет завышение? Может потому, что диод на входе пол-периода режет и надо сперва делить, потом поднимать уровень ОУ, а в микрокоде смещать обратно?

А вчера проектик нарыл - берет 1000 отсчетов, меряет по ним максимум и делит на коэффициент. Правда не знаю, как такой подход с т.з. теории.

К мощности пока не приступал. Дай Бог с напряжением и током управиться rolleyes.gif .

Сообщение отредактировал hd44780 - Mar 20 2011, 12:48


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
kovigor
сообщение Mar 20 2011, 13:07
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(hd44780 @ Mar 20 2011, 16:34) *
Насчет активного выпрямителя - была мысль, но схемы не нашел sad.gif


Странно. Например, см. у М.Джонса в "Практической электронике". Да и у Хоровица и Хилла должно быть. Это же классическая схема - активный выпрямитель на ОУ ...
Go to the top of the page
 
+Quote Post
hd44780
сообщение Mar 20 2011, 15:46
Сообщение #15


Профессионал
*****

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



Я неточно выразился. Я не пойму, куда мне его ставить?
Если б была 2-я вторичка на понижащем трансе, там понятно, а тут ....


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post

11 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01452 секунд с 7
ELECTRONIX ©2004-2016