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

 
 
> Цифровой вольтметр-амперметр-ваттметр на 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
 
Start new topic
Ответов
hd44780
сообщение Mar 31 2011, 16:53
Сообщение #2


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

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



Доделал вольтметр полностью .
Показал 188-190в при реальных 220-221в. Это без калибровки. Коэффициенты взяты на глаз.

Сообщение отредактировал hd44780 - Mar 31 2011, 18:10


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


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(hd44780 @ Mar 31 2011, 18:53) *
Доделал вольтметр полностью .
Показал 188-190в при реальных 220-221в. Это без калибровки. Коэффициенты взяты на глаз.

У меня вход идет через подстроечный резистор 10К на АЦП, и точность измерений я настраивал им, чтобы не использовать коэффициенты. Потому как при использовании операций умножения/деления прошивка "кабанеет" на глазах. (При использовании только одной операции умножения у меня hex вырос с 3 до 11 кБ). Поэтому умножать/делить лучше только на числа, которые являются степенями двойки.
Go to the top of the page
 
+Quote Post
777777
сообщение Apr 1 2011, 05:25
Сообщение #4


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(SHUR1K @ Apr 1 2011, 09:00) *
У меня вход идет через подстроечный резистор 10К на АЦП, и точность измерений я настраивал им, чтобы не использовать коэффициенты. Потому как при использовании операций умножения/деления прошивка "кабанеет" на глазах. (При использовании только одной операции умножения у меня hex вырос с 3 до 11 кБ). Поэтому умножать/делить лучше только на числа, которые являются степенями двойки.

Ну ни фига себе доводы! Ну так для того он и процессор, пусть работает, он железный! Тебе какое дело 3 кб там или 11? А подстроечник стоит денег и понижает надежность. Лучше выкинуть его, а коэффициент держать в EEPROM
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 1 2011, 08:32
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(777777 @ Apr 1 2011, 07:25) *
Ну ни фига себе доводы! Ну так для того он и процессор, пусть работает, он железный! Тебе какое дело 3 кб там или 11? А подстроечник стоит денег и понижает надежность. Лучше выкинуть его, а коэффициент держать в EEPROM

Да никакого дела, собсно, если бы не одно но:
Цитата(Datasheet)
8 bit AVR Microcontroller with 8K Bytes of In-System Self-Programmable Flash
Go to the top of the page
 
+Quote Post
777777
сообщение Apr 1 2011, 08:56
Сообщение #6


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

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(SHUR1K @ Apr 1 2011, 12:32) *
Да никакого дела, собсно, если бы не одно но:

А, кстати, почему умножение занимает так много? Может ты в плавающей точке вычисления делаешь?
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 1 2011, 11:08
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(777777 @ Apr 1 2011, 10:56) *
А, кстати, почему умножение занимает так много? Может ты в плавающей точке вычисления делаешь?

Нет, умножение было целочисленным. А много потому, что нет аппаратного умножителя, а програмно получается так много.

Сообщение отредактировал SHUR1K - Apr 1 2011, 11:14
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Apr 1 2011, 12:33
Сообщение #8


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(SHUR1K @ Apr 1 2011, 15:08) *
Нет, умножение было целочисленным. А много потому, что нет аппаратного умножителя, а програмно получается так много.

Страхи какие-то у вас sm.gif Повсеместно использую целочисленное умножение типа 16 х 16 или 32 * 32, и никаких таких мегаразмеров программы не получается, как же так?


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 1 2011, 12:46
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 6-04-10
Из: Киев
Пользователь №: 56 447



Цитата(Stanislav_S @ Apr 1 2011, 14:33) *
Страхи какие-то у вас sm.gif Повсеместно использую целочисленное умножение типа 16 х 16 или 32 * 32, и никаких таких мегаразмеров программы не получается, как же так?

16x16 и 32х32 - это совсем другое. Умножение на число, которое является степенью двойки - это просто сдвиг влево на соответствующие число позиций (степень двойки). А Вы попробуйте умножить на 11 или 13 и посмотрите как вырастет hex
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Apr 1 2011, 13:03
Сообщение #10


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(SHUR1K @ Apr 1 2011, 16:46) *
16x16 и 32х32 - это совсем другое. Умножение на число, которое является степенью двойки - это просто сдвиг влево на соответствующие число позиций (степень двойки). А Вы попробуйте умножить на 11 или 13 и посмотрите как вырастет hex


Ну и на сколько?

Код
;*************************************************
;*      ;;/умножение Беззнаковых 16х16;;*       *
;*************************************************
Mul16x16:
        mul        temp,rab
        mov        R13,LoMul    ;| здесь AH*BH
        mov        R14,MeMul
        mul        temp1,rab1
        mov        R11,LoMul    ;| здесь AL*BL
        mov        R12,MeMul
        mul        temp,rab1    ;| здесь AH*BL
        add        R12,LoMul
        adc        R13,MeMul
        adc        R14,HiMUL
        mul        temp1,rab    ;| здесь BH*AL
        add        R12,LoMul
        adc        R13,MeMul
        adc        R14,HiMUL
        ret


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- hd44780   Цифровой вольтметр-амперметр-ваттметр на AVR для бытовой сети   Mar 16 2011, 09:17
- - Vasily_   А зачем это делать http://www.conrad.com/VOLTCRAF...   Mar 16 2011, 12:10
- - RabidRabbit   2. Результаты для тока и напряжения складывать в к...   Mar 16 2011, 12:13
- - hd44780   Vasily_, ага. и платить 50 еврозеленых баксов . П...   Mar 16 2011, 12:32
|- - dimka76   Цитата(hd44780 @ Mar 16 2011, 15:32) И ещ...   Mar 16 2011, 13:26
||- - hd44780   Цитата(dimka76 @ Mar 16 2011, 15:26) Надо...   Mar 16 2011, 14:03
||- - kovigor   Цитата(hd44780 @ Mar 16 2011, 18:03) Спас...   Mar 16 2011, 16:12
|||- - hd44780   Цитата(kovigor @ Mar 16 2011, 18:12) Это,...   Mar 16 2011, 17:44
||- - defunct   Цитата(hd44780 @ Mar 16 2011, 16:03) Дель...   Mar 18 2011, 13:30
||- - hd44780   Цитата(defunct @ Mar 18 2011, 15:30) Ф = ...   Mar 18 2011, 14:20
||- - KaMa3eR   Цитата(hd44780 @ Mar 18 2011, 17:20) Спас...   Mar 19 2011, 14:50
|- - defunct   Цитата(hd44780 @ Mar 16 2011, 14:32) И ещ...   Mar 16 2011, 13:47
- - hd44780   На ТТ у меня диод германиевый (старый советский Д2...   Mar 20 2011, 12:34
|- - kovigor   Цитата(hd44780 @ Mar 20 2011, 16:34) Насч...   Mar 20 2011, 13:07
|- - RabidRabbit   Цитата(hd44780 @ Mar 20 2011, 15:34) Сред...   Mar 21 2011, 14:44
- - hd44780   Я неточно выразился. Я не пойму, куда мне его став...   Mar 20 2011, 15:46
- - nk@   Google рулит Вот почитайте, насчет выпрямителей. ...   Mar 20 2011, 19:43
|- - azizcheg   Добрый день всем. Хочу сделать подобное. На мк ATM...   Mar 21 2011, 06:27
- - hd44780   Я пока в процессе... Долбаное напряжение померить ...   Mar 21 2011, 08:25
|- - ASZ   Цитата(hd44780 @ Mar 21 2011, 12:25) Я по...   Mar 21 2011, 09:15
||- - hd44780   Цитата(ASZ @ Mar 21 2011, 11:15) Мне непо...   Mar 21 2011, 09:48
||- - ASZ   Цитата(hd44780 @ Mar 21 2011, 13:48) Пока...   Mar 21 2011, 10:11
||- - nk@   Цитата(ASZ @ Mar 21 2011, 12:11) А зачем ...   Mar 21 2011, 10:48
|- - azizcheg   Цитата(hd44780 @ Mar 21 2011, 11:25) 3-х ...   Mar 22 2011, 07:38
|- - hd44780   Цитата(azizcheg @ Mar 22 2011, 09:38) 128...   Mar 22 2011, 08:02
|- - azizcheg   Цитата(hd44780 @ Mar 22 2011, 11:02) Личн...   Mar 22 2011, 08:13
|- - hd44780   Цитата(azizcheg @ Mar 22 2011, 10:13) Что...   Mar 22 2011, 08:34
|- - RabidRabbit   Цитата(hd44780 @ Mar 22 2011, 11:34) АЦП ...   Mar 22 2011, 09:28
- - hd44780   Не понял ... Я ж получаю полож. полуволну с верхн...   Mar 21 2011, 10:34
|- - ASZ   Цитата(hd44780 @ Mar 21 2011, 13:34) Не п...   Mar 22 2011, 09:12
- - e_one   Занимался подобной задачей. Для развязки от сети и...   Mar 21 2011, 12:13
- - hd44780   Я на С в CvAvr пишу. float у него 4 байта вроде -...   Mar 21 2011, 15:35
|- - RabidRabbit   Цитата(hd44780 @ Mar 21 2011, 18:35) В бу...   Mar 21 2011, 16:32
- - hd44780   С буфером получается вот что: // Для сумм //volat...   Mar 21 2011, 16:59
- - nk@   А AD делает отличные RMS to DC конвертеры: http:/...   Mar 21 2011, 18:55
- - hd44780   Еще и достать их не очень.... Правда из доки можно...   Mar 21 2011, 19:21
- - hd44780   К вопросу о тех кольцевых буферах. С какой частот...   Mar 22 2011, 07:11
|- - RabidRabbit   Цитата(hd44780 @ Mar 22 2011, 10:11) К во...   Mar 22 2011, 08:52
- - hd44780   RabidRabbit, спасибо. я так не пытался . Попробую...   Mar 22 2011, 09:45
|- - RabidRabbit   Цитата(hd44780 @ Mar 22 2011, 12:45) Попр...   Mar 22 2011, 10:03
||- - hd44780   Цитата(RabidRabbit @ Mar 22 2011, 12:03) ...   Mar 22 2011, 10:24
|- - ASZ   Цитата(hd44780 @ Mar 22 2011, 12:45) ...s...   Mar 22 2011, 12:53
|- - hd44780   Цитата(ASZ @ Mar 22 2011, 14:53) Можно, е...   Mar 22 2011, 14:04
|- - MaslovVG   Позволю себе заметиь. Первое для определения средн...   Mar 22 2011, 20:20
|- - hd44780   Цитата(MaslovVG @ Mar 22 2011, 22:20) Изм...   Mar 23 2011, 07:30
- - hd44780   RabidRabbit, с буферами вроде получилось. Показыва...   Mar 22 2011, 17:39
- - hd44780   Без выпрямителя я вот такое вижу - схема. Вместо 2...   Mar 23 2011, 09:39
|- - dimka76   Цитата(hd44780 @ Mar 23 2011, 12:39) Как ...   Mar 23 2011, 11:13
- - hd44780   dimka76, спасибо. Попробую.   Mar 23 2011, 11:54
|- - Tanya   Цитата(hd44780 @ Mar 23 2011, 14:54) dimk...   Mar 23 2011, 12:17
|- - hd44780   Цитата(Tanya @ Mar 23 2011, 14:17) Попроб...   Mar 23 2011, 14:11
|- - Tanya   Цитата(hd44780 @ Mar 23 2011, 17:11) Вы и...   Mar 23 2011, 14:22
|- - hd44780   Цитата(Tanya @ Mar 23 2011, 16:22) Я имел...   Mar 23 2011, 15:05
|- - Tanya   Цитата(hd44780 @ Mar 23 2011, 18:05) Схем...   Mar 23 2011, 16:59
||- - hd44780   Цитата(Tanya @ Mar 23 2011, 18:59) Схема ...   Mar 23 2011, 19:18
||- - Stanislav_S   Цитата(hd44780 @ Mar 23 2011, 23:18) Схем...   Mar 23 2011, 19:34
||- - Tanya   Цитата(hd44780 @ Mar 23 2011, 22:18) Посл...   Mar 24 2011, 09:25
||- - hd44780   Цитата(Tanya @ Mar 24 2011, 11:25) Это бу...   Mar 24 2011, 10:19
||- - Stanislav_S   Вот так это выглядет, измерение напряжения с обмот...   Mar 24 2011, 10:28
||- - Tanya   Цитата(hd44780 @ Mar 24 2011, 13:19) А че...   Mar 24 2011, 10:38
||- - Stanislav_S   Цитата(Tanya @ Mar 24 2011, 14:38) А заче...   Mar 24 2011, 10:50
||- - Tanya   Цитата(Stanislav_S @ Mar 24 2011, 13:50) ...   Mar 24 2011, 10:59
||- - Stanislav_S   Цитата(Tanya @ Mar 24 2011, 14:59) А я пр...   Mar 24 2011, 11:09
||- - Tanya   Цитата(Stanislav_S @ Mar 24 2011, 14:09) ...   Mar 24 2011, 11:26
||- - Stanislav_S   Цитата(Tanya @ Mar 24 2011, 15:26) А с на...   Mar 24 2011, 12:21
||- - Tanya   Цитата(Stanislav_S @ Mar 24 2011, 15:21) ...   Mar 24 2011, 12:25
||- - Stanislav_S   Цитата(Tanya @ Mar 24 2011, 16:25) Кто эт...   Mar 24 2011, 13:09
||- - Tanya   Цитата(Stanislav_S @ Mar 24 2011, 16:09) ...   Mar 24 2011, 13:25
|- - Stanislav_S   Что то схемы измерения у вас больно альтернативные...   Mar 23 2011, 17:04
- - hd44780   Stanislav_S, а зачем виртуальная земля? Для точнос...   Mar 24 2011, 09:05
|- - Stanislav_S   Цитата(hd44780 @ Mar 24 2011, 13:05) Stan...   Mar 24 2011, 10:17
- - hd44780   Stanislav_S, Tanya, спасибо. Вроде понятно. Буду п...   Mar 24 2011, 10:53
- - hd44780   Мне так видится - схема. Со второй вторичкой/транс...   Mar 24 2011, 11:38
|- - Tanya   Цитата(hd44780 @ Mar 24 2011, 14:38) Мне ...   Mar 24 2011, 12:07
- - Sirko   Извините. А почему нельзя проще? Если судить по п...   Mar 25 2011, 15:12
|- - SHUR1K   Цитата(Sirko @ Mar 25 2011, 17:12) Извини...   Mar 30 2011, 13:53
|- - nk@   Цитата(SHUR1K @ Mar 30 2011, 16:53) ловит...   Mar 30 2011, 18:34
||- - SHUR1K   Цитата(nk@ @ Mar 30 2011, 20:34) А не про...   Mar 31 2011, 04:49
|- - hd44780   Цитата(SHUR1K @ Mar 30 2011, 15:53) ловит...   Mar 31 2011, 07:15
- - НЕХ   А не проще ли поставить ADE7755 ценою меньше долла...   Mar 31 2011, 05:23
- - 777777   Наличие диодов сразу говорит о том, что достаточну...   Mar 31 2011, 08:03
|- - hd44780   Цитата(777777 @ Mar 31 2011, 10:03) Налич...   Mar 31 2011, 10:53
|- - 777777   Цитата(hd44780 @ Mar 31 2011, 14:53) У ме...   Mar 31 2011, 11:54
|- - hd44780   Цитата(777777 @ Mar 31 2011, 13:54) Да ла...   Mar 31 2011, 12:30
|- - Stanislav_S   Цитата(SHUR1K @ Apr 1 2011, 16:46) 16x16 ...   Apr 1 2011, 13:29
|- - rx3apf   Цитата(SHUR1K @ Apr 1 2011, 16:46) 16x16 ...   Apr 1 2011, 16:10
|- - SHUR1K   Цитата(rx3apf @ Apr 1 2011, 18:10) Это чт...   Apr 1 2011, 18:04
|- - Stanislav_S   Цитата(SHUR1K @ Apr 1 2011, 22:04) Прошу ...   Apr 2 2011, 12:08
|- - SHUR1K   Цитата(Stanislav_S @ Apr 2 2011, 14:08) Х...   Apr 3 2011, 14:35
|- - Stanislav_S   Цитата(SHUR1K @ Apr 3 2011, 18:35) Нет, н...   Apr 3 2011, 15:30
- - hd44780   У меня и подстроечник и коэффициенты в EEPROM . ...   Apr 1 2011, 06:24
2 страниц V   1 2 >


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:09
Рейтинг@Mail.ru


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