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

 
 
> Цифровой вольтметр-амперметр-ваттметр на 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
rx3apf
сообщение Apr 1 2011, 16:10
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



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

Это что, первоапрельский прикол такой ? 16x16 это, простите, не умножение числа 16 на число 16, а перемножение двух произвольных 16-битных чисел. В один килобайт влезают четыре действия в плавучке и еще место останется, а уж целочисленное умножение при отсутствии команды mul - три-четыре десятка команд (меньше сотни байтов).
Go to the top of the page
 
+Quote Post
SHUR1K
сообщение Apr 1 2011, 18:04
Сообщение #11


Участник
*

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



Цитата(rx3apf @ Apr 1 2011, 18:10) *
Это что, первоапрельский прикол такой ? 16x16 это, простите, не умножение числа 16 на число 16, а перемножение двух произвольных 16-битных чисел. В один килобайт влезают четыре действия в плавучке и еще место останется, а уж целочисленное умножение при отсутствии команды mul - три-четыре десятка команд (меньше сотни байтов).

Прошу прощения, тупанул. Перепроверил у себя, при использовании в одном выражении деления и умножения код вырастает значительно. Если делать это не в одном выражении, то прирост действительно не так велик.
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Apr 2 2011, 12:08
Сообщение #12


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

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



Цитата(SHUR1K @ Apr 1 2011, 22:04) *
Прошу прощения, тупанул. Перепроверил у себя, при использовании в одном выражении деления и умножения код вырастает значительно. Если делать это не в одном выражении, то прирост действительно не так велик.

Хм, что то у вас с компилятором, добавил деление в формуле, прирост чуть больше чем при умножении, что то у вас не так sm.gif Проверьте настройки компилятора.


--------------------
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 3 2011, 14:35
Сообщение #13


Участник
*

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



Цитата(Stanislav_S @ Apr 2 2011, 14:08) *
Хм, что то у вас с компилятором, добавил деление в формуле, прирост чуть больше чем при умножении, что то у вас не так sm.gif Проверьте настройки компилятора.

Нет, не с компилятором :-). Просто если использовать в одном выражении умножении и деление, ну например *3/2, то получается *1.5, а это уже дробное число, вот и растет код безбожно.
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
|- - ILYAUL   Цитата(SHUR1K @ Apr 1 2011, 16:46) 16x16 ...   Apr 1 2011, 13:03
|- - Stanislav_S   Цитата(SHUR1K @ Apr 1 2011, 16:46) 16x16 ...   Apr 1 2011, 13:29
|- - 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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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