Перейти к содержанию
    

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

Google рулит:)

Вот почитайте, насчет выпрямителей. Коротко и понятно.

http://de.ifmo.ru/bk_netra/page.php?tutindex=36&index=13

Последняя схемка, кстати, используется в болгарских приводах постоянного тока. Классика :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день всем.

Хочу сделать подобное. На мк ATMEGA128 построить вольтметр/ваттметр. Выводить на 3 семисегментных элемента. Подскажите где посмотреть. Если кто делал, напишите, пожалуйста, на [email protected].

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пока в процессе... Долбаное напряжение померить не могу ...

Постоянку миллион раз мерил - с датчиков давления/влажности, БП делал со встроенным вольтметром - с первого раза оживало.

А тут - уже неделю парюсь... Вроде все понятно, а ни фига не получается :wacko: .

 

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

 

Только ток шунтами мерить я очень не люблю. Конечно, дешевле ТТ во много раз, но и проблем полно сопутствующих.

Изменено пользователем hd44780

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пока в процессе... Долбаное напряжение померить не могу ...

Постоянку миллион раз мерил - с датчиков давления/влажности, БП делал со встроенным вольтметром - с первого раза оживало.

А тут - уже неделю парюсь... Вроде все понятно, а ни фига не получается :wacko:

...skipped...

Мне непонятно, зачем вообще диоды ставить и иметь головную боль из-за их нелинейности?

Погасить на делителе до приемлемой величины и сместить положительным напряжением до нуля посередине. И АЦПируйтесь наздоровье.

Кстаати, у германиевых диодов ВАХ от температуры сильно зависит.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне непонятно, зачем вообще диоды ставить и иметь головную боль из-за их нелинейности?

Погасить на делителе до приемлемой величины и сместить положительным напряжением до нуля посередине. И АЦПируйтесь наздоровье.

Кстаати, у германиевых диодов ВАХ от температуры сильно зависит.

 

Пока только для комнатной температуры. Пока алгоритмы не обкатаю. Потом сделаю активный делитель на ОУ со смещением.

Диод по напряжению - кремниевый, из диодного моста (схема в первом посте). Или такая схема плоха?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока только для комнатной температуры. Пока алгоритмы не обкатаю. Потом сделаю активный делитель на ОУ со смещением.

Диод по напряжению - кремниевый, из диодного моста (схема в первом посте). Или такая схема плоха?

Посмотрите прямую ветвь ВАХ Ваших диодов. Диод открывается при напряжении >0,8В (? - склероз) и имеет очень большую нелинейность.

Таким образом, при малых напряжениях Вы получите сверхпогрешность.

 

А зачем вообще ставить ОУ? С трансформатора и так достаточно большое напряжение :)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не понял :( ...

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем вообще ставить ОУ? С трансформатора и так достаточно большое напряжение :)

 

На ОУ собирается "прецизионный выпрямитель". Все уже давно придумано до (для) нас :)

Можно, в принципе, засемплировать синусоиду, проинтегрировать и посчитать среднеквадратичное значение, но аналоговая техника справится с этим быстрее и точнее. Гораздо проще мерять постоянное напряжение. С ВЧ помехами, опять-же программно бороться будет не просто. Ну, это все конечно, если мы хотим иметь прибор, а не коробочку с лампочками, которая будет показывать значения в попугайчиках :)

 

PS:Ну, уж если есть желание решить задачу исключительно программно, то это очень интересная и объемная тема для обсуждения.

Изменено пользователем nk@

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Занимался подобной задачей. Для развязки от сети использовал схему из книги Полупроводниковая схемотехника У. Тице и К. Шенк, страница 469.

измерение делал 1 раз в миллисекунду. Синхронизировал начало измерений с переходом синуса через ноль. Измерял 1 полный период. по прерыванию от таймера запускал преобразование АЦП, потом USUM=(ADCW>>2)*(ADCW>>2)+USUM; и по следующем переходе через 0 подсчитывал RESULT=sqrt(USUM/N);

Задача точности остро не стояла. реально пришлось увеличить количество периодов измерения до 10. Погрешность измерений примерно +-1В.

Тестировал эту схему в диапазоне температур от 20 до 55 градусов и напряжений 150-230В. заметил, что оба оптрона должны иметь одну температуру - находится рядом, иначе точность теряется.

 

Но это было давно, сейчас вопрос возник и чтоб не создавать новую тему решил написать здесь.

 

Кто знает, какой минимальный уровень напряжение может быть на входе опорного напряжения АЦП меги16. В даташите молчат, может кто-то подскажет ответ?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Среднее арифметическое сильно "бегает" (писал выше), кольцевой буфер на 200 значений не спас, больше делать не могу - килобайта памяти в меге 8 не хватает :(. Не вешать же туда SRAM на 64 КБ :wacko: ...
Мнэээ, а float у Вас сколько битов? Не то если по 32 - то как два буфера (напряжение и ток) 200 * 2 * 4 влезло в 1 килобайт? С сишным компилятором и один, я думаю, не влезет... А если всё-таки влезло 200 значений, то какой же должен быть разброс, болтанка в 10 вольт при таком раскладе даст изменение в результате только на 5 сотых...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я на С в CvAvr пишу.

 

float у него 4 байта вроде - никакой памяти не хватит складывать их в буфер. 1 буфер = 4*200 = 800 байт - почти весь SRAM Mega8.

Не цеплять же мне ATMega32 ...

 

В буфер я клал 8-битовые значения с АЦП. 2 буфера - по 200 значений на напряжение и ток.

Мож где ошибся в дальнейших обсчетах... Хз...

 

Сейчас сделал среднее арифметическое отсчетов АЦП без буфера за 1000 замеров без таймера - тьфу-тьфу вроде получше стало...

С началом полуволны пока не синхронизируюсь. Но в будущем может и понадобится. Для определения угла сдвига фаз между напряжением и током. Ну это потом.

Сделал пока только для напряжения.

Токовый транс пока отключил. Все равно, алгоритмы замеров идентичные, отличия только в коэффициентах..

Изменено пользователем hd44780

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В буфер я клал 8-битовые значения с АЦП. 2 буфера - по 200 значений на напряжение и ток. Мож где ошибся в дальнейших обсчетах... Хз...
Я, конечно, не спец, но если задаться интервалом в 400 вольт, да поделить этот интервал на 256 (8-битовые отсчёты), то на один бит придётся около 1.5 вольта, как-то так... И чего вы таки хотите? Для более-менее приличных результатов, по-моему, можно что-то типа оверсэмплинга применить, например 64 восьмибитных замера сложить, результат поделить на 8 (получив "одиннадцатибитный" результат), далее всё же организовать кольцевой буфер на 16 "одиннадцатибитных" значений, и, добавив очередное, считать сумму значений из буфера и поделить на 16.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С буфером получается вот что:

 

// Для сумм

//volatile dword summU;

volatile byte arrayU[200];

 

// Кол-во преобразований напряжения и тока

volatile word count_U=0;

 

................

 

 

// ADC interrupt service routine

interrupt [ADC_INT] void adc_isr(void)

{

word adc_data=ADCW;

 

adc_data>>=2;

arrayU[count_U]=adc_data&0xFF;

count_U++;

if (count_U>=200)

count_U=0;

} // adc_isr

 

..........

// Обрабока

f_sqr_summU=0.0;

for (i=0;i<200;i++)

{

f_sqr_summU+=(float)arrayU;

} // for

sprintf (buffer, "A=%.2f ", f_sqr_summU);

hd44780_puts_xy ( 0, 0, buffer );

 

f_sqr_summU/=200;

 

// Uацп=ср*5/1024

f_sqr_summU=f_sqr_summU*5.0/1024;

sprintf (buffer, "B=%.2f ", f_sqr_summU);

hd44780_puts_xy ( 8, 0, buffer );

 

На дисплее:

A=19360 B=0.47

 

Т.е. сумма значений в буфере - 19360 (примерно, оно меняется все время)

U на входе АЦП = 0.47в, хотя на самом деле там 2.00-2.50в

Изменено пользователем hd44780

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А AD делает отличные RMS to DC конвертеры:

http://www.analog.com/static/imported-file...heets/AD636.pdf

http://www.analog.com/static/imported-file...heets/AD637.pdf

А дальше меряем постоянное напряжение - и всех делов :)

 

PS: Прошу прощения, цена почти 20 бакинских. Дороговато :(

Изменено пользователем nk@

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще и достать их не очень....

Правда из доки можно кой-чего интересного нарыть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...