Jump to content

    
Sign in to follow this  
hd44780

Цифровой вольтметр-амперметр-ваттметр на AVR для бытовой сети

Recommended Posts

К вопросу о тех кольцевых буферах.

 

С какой частотой должны идти выборки в эти буфера?

Сейчас у меня АЦП тактируется 125 кГц. Сколько там получится сэмплов в секунду я посчитать пока не удосужился (в доке как-то мутно про это написано :( ), но, думается 100KSPS наберется. 1 сэмпл за 10 мкс.

Т.е. 200 байт буфера полностью обновятся за 2 мс. Т.е. весь буфер не вмещает даже полпериода 50 герцового сигнала.

 

Это нормально? Или надо понижать частоту выборки?

 

e_one, не знаю. Посмотрел я схему, не понял ее.

 

Edited by hd44780

Share this post


Link to post
Share on other sites
3-х фазный вольтметр переменного тока - http://www.embed.com.ua/raznoe/tryohfaznyi...remennogo-toka/

Как раз с 7 сегм индикатором. Правда Mega48. А зачем тебе 128 мега?

Ваттметр на Mega8 -

http://radiokot.ru/circuit/digital/measure/23/

http://www.radiokot.ru/forum/viewtopic.php?f=25&t=25937

 

128 мега потому, что они есть на фирме, а остальных нет вроде.

И вообще я думал и ваттметр и вольтметр объединить в одном устройстве. А вольты выводить или ватты - переключается каким-нибудь тумблером.

Возможна ли такая реализация?

Edited by azizcheg

Share this post


Link to post
Share on other sites
128 мега потому, что они есть на фирме, а остальных нет вроде.

И вообще я думал и ваттметр и вольтметр объединить в одном устройстве. А вольты выводить или ватты - переключается каким-нибудь тумблером.

Возможна ли такая реализация?

 

Возможна. В принципе, все равно, какая там мега. Главное, чтобы АЦП был. Но он у любой меги есть.

Идея простая - меряете всегда и все. А выводите на дисплей что-то одно.

 

Лично у меня пока проблемы с измерениями :crying: . Напряжение вроде нормально показывает, но все время "бегает"...

Edited by hd44780

Share this post


Link to post
Share on other sites
Лично у меня пока проблемы с измерениями :crying: . Напряжение вроде нормально показывает, но все время "бегает"...

 

Что значит бегает?

Как вообще, в принципе осуществляется измерение этого напряжения(тока)? Чуть дайте теории пожалуйста :-)

Share this post


Link to post
Share on other sites
Что значит бегает?

Как вообще, в принципе осуществляется измерение этого напряжения(тока)? Чуть дайте теории пожалуйста :-)

 

Схема в первом посте темы. Мега там не нарисована, только моя измерительная часть.

Программная часть у меня такая (наиболее удачный вариант на текущий момент).

АЦП работает на 125кГц.

Обработчик АЦП суммирует все получаемые отсчеты и считает их кол-во. Как насчитает 1000 штук - останов АЦП (по флагу, в главной программе).

Далее считает среднее арифметическое этих отсчетов. По нему вычисляется напряжение на входе АЦП (формула из ДШ на проц). И умножается на коэффициент делителя (в моем случае это коэф транса*коэф деления потенциометра). Это есть напряжение в сети.

 

"Бегает" - меняется в небольших пределах.

Я "на глаз" наблюдал диапазон примерно 210..230в. Мультиметр показывает где-то 230. Наверное, можно втупую брать максимум, но я не уверен.

 

Для тока алгоритм такой же, только последний коэффициент другой, он зависит от того, как вы ток меряете.

Если шунтом - просто закон ома. Если ТТ, то иначе...

 

Для мощности посложнее. Поэтому и хочется не коэффициентами подгонять, а понять, что там происходит.

Edited by hd44780

Share this post


Link to post
Share on other sites
К вопросу о тех кольцевых буферах. С какой частотой должны идти выборки в эти буфера?

Сейчас у меня АЦП тактируется 125 кГц. Сколько там получится сэмплов в секунду я посчитать пока не удосужился (в доке как-то мутно про это написано :( ), но, думается 100KSPS наберется. 1 сэмпл за 10 мкс.

Т.е. 200 байт буфера полностью обновятся за 2 мс. Т.е. весь буфер не вмещает даже полпериода 50 герцового сигнала.

Это нормально? Или надо понижать частоту выборки?

Семён Семёныч! В кольцевые буферы я предлагал складывать уже вычисленные значения напряжения и тока ;) Я думаю, вполне хватит по 16 значений тока и напряжения. Чтобы не было неоднозначностей, набросаю код.

#define MY_BUFFER_SIZE	16

float get_voltage( const float mesuredVoltage )
{
static float voltage[MY_BUFFER_SIZE] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static int pos = 0;
int i;
float result = 0;

//
voltage[pos++] = mesuredVoltage;
//
if ( pos >= MY_BUFFER_SIZE )
	pos = 0;
//
for	( i = 0; i < MY_BUFFER_SIZE; i++ )
{
	//
	result += voltage[i];
}
//
return result / MY_BUFFER_SIZE;
}

И такую же фигню для тока :)

Edited by RabidRabbit

Share this post


Link to post
Share on other sites
Не понял :( ...

Я ж получаю полож. полуволну с верхнего входа моста .... Зачем ее смещать?

Если б была 2-я вторичка, там были бы обе полуволны.

А зачем вообще выпрямлять? Делителем уменьшаете ПЕРЕМЕННОЕ напряжение трансформатора напряжения до 2/3 максимального входного АЦП и смещаете его до середины шкалы.

Разность Umax-Umin=Ua дает Вам амплитудное значение измеренного напряжения. Действующее значение для синусоиды U=0,707Ua.

Этим избавляетесь от всяких нелинейностей от диодов и значительно упрощаете схему (3 резистора!).

Это же касается и цепи тока.

 

Лично считаю, что усложнять схему ради упрощения программы - дурной тон.

Share this post


Link to post
Share on other sites
АЦП работает на 125кГц.

Обработчик АЦП суммирует все получаемые отсчеты и считает их кол-во. Как насчитает 1000 штук - останов АЦП (по флагу, в главной программе).

Далее считает среднее арифметическое этих отсчетов. По нему вычисляется напряжение на входе АЦП (формула из ДШ на проц). И умножается на коэффициент делителя (в моем случае это коэф транса*коэф деления потенциометра). Это есть напряжение в сети.

Как-то это по-моему не очень правильно. На мой взгляд, лучше зарядить таймер на частоту 1000 Гц, в обработчике прерывания запускать одиночное преобразование, дожидаться его завершения и результат приплюсовывать к накопителю. 100 отсчётов АЦП в таком случае перекроют 5 периодов частоты 50 Гц, что снимает необходимость ловить переход через 0 (я надеюсь, у Вас мега от кварца тактируется). По сумме этих 100 отсчётов (ну или 200, лишь бы на 20 делилось) можно вычислить напряжение. Скакать не должно :)

 

Share this post


Link to post
Share on other sites

RabidRabbit, спасибо. я так не пытался ;) .

Попробую. Если, конечно потянет считать float значения прямо в прерывании. Но можно и целочисленно сделать, в умноженных на 1000, например.

 

лучше зарядить таймер на частоту 1000 Гц, в обработчике прерывания запускать одиночное преобразование, дожидаться его завершения и результат приплюсовывать к накопителю. 100 отсчётов АЦП в таком случае перекроют 5 периодов частоты 50 Гц, что снимает необходимость ловить переход через 0 (я надеюсь, у Вас мега от кварца тактируется). По сумме этих 100 отсчётов (ну или 200, лишь бы на 20 делилось) можно вычислить напряжение. Скакать не должно :)

 

Есть у меня такая мысль. Наверное сделаю.

Сейчас мега тактируется от внутренних 8MHz, просто ног не хватает :( . На PB (там, где кварц) у меня ШД LCD сидит.

Можно поставить и 16-ю мегу ...

 

А зачем вообще выпрямлять? Делителем уменьшаете ПЕРЕМЕННОЕ напряжение трансформатора напряжения до 2/3 максимального входного АЦП и смещаете его до середины шкалы.

Разность Umax-Umin=Ua дает Вам амплитудное значение измеренного напряжения. Действующее значение для синусоиды U=0,707Ua.

 

А можно потенциометр включить ко вторичке параллельно мосту, а напряжение на движке смещать?

post-7980-1300787672_thumb.png

Edited by hd44780

Share this post


Link to post
Share on other sites
Попробую. Если, конечно потянет считать float значения прямо в прерывании. Но можно и целочисленно сделать, в умноженных на 1000, например.
Вы правильно понимаете - не нужны float'ы в прерывании. В прерывании, например, можно суммировать целочисленные значения от АЦП (как есть, не надо их ни на что умножать, только в случае 8-битных значений для 100 замеров хватит 16-битной переменной, а для 10-битных значений уже надо 24-битную или 32-битную). Просуммировали 100 значений - скопировать в какую-нибудь глобальную переменную, увеличить другую глобальную переменную на 1, чтобы просигналить основной задаче о доступности нового результата, и снова суммировать сотню значений :) Если я недоступно излагаю - спрашивайте в личке, например :)

 

Share this post


Link to post
Share on other sites
Если я недоступно излагаю - спрашивайте в личке, например :)

 

Да нет, все понятно. Спасибо. Напишу, проверю вечером. Я на работе, железо дома :biggrin: .

 

У меня отсчеты 10-битные, суммирую в беззнаковый 32 бит.

Edited by hd44780

Share this post


Link to post
Share on other sites
...skipped...

А можно потенциометр включить ко вторичке параллельно мосту, а напряжение на движке смещать?

Можно, если постоянное напряжение после моста НИКАК не связано с измерительной схемой.

Share this post


Link to post
Share on other sites
Можно, если постоянное напряжение после моста НИКАК не связано с измерительной схемой.

 

Мост питает мегу и LCD. Обычный БП на LM7805.

Share this post


Link to post
Share on other sites

RabidRabbit, с буферами вроде получилось. Показывает 213-214 при где-то 230 в. Но это без калибровки, коэффициенты "на глаз".

 

Теперь, наверное, займусь смещением и среднеквадратическим.

Share this post


Link to post
Share on other sites

Позволю себе заметиь.

Первое для определения среднего не нужен буфер.

вычисляем по формуле

Аy= ((к-1)Ac+M)/k где Ac предидущее среднее, Ау новое среднее, М последнее измерение, к глубина усреднения(эквивалентна длине буфера)

при к равном степени двойки вычисления сводатся к двум сложениям идвум сдвигам.

Измерять лучше средне квадратичное значение и тока и напряжения и мощности без всяких выпрямителей. При этом можно измерять несинусоидальные величины.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this