|
|
  |
Цифровой вольтметр-амперметр-ваттметр на AVR для бытовой сети, некоторые вопросы |
|
|
|
Mar 21 2011, 06:27
|
Участник

Группа: Участник
Сообщений: 56
Регистрация: 20-01-11
Из: Махачкала
Пользователь №: 62 364

|
Добрый день всем. Хочу сделать подобное. На мк ATMEGA128 построить вольтметр/ваттметр. Выводить на 3 семисегментных элемента. Подскажите где посмотреть. Если кто делал, напишите, пожалуйста, на azizcheg@gmail.com.
|
|
|
|
|
Mar 21 2011, 08:25
|

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

|
Я пока в процессе... Долбаное напряжение померить не могу ... Постоянку миллион раз мерил - с датчиков давления/влажности, БП делал со встроенным вольтметром - с первого раза оживало. А тут - уже неделю парюсь... Вроде все понятно, а ни фига не получается  . 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 - Mar 21 2011, 08:45
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Mar 21 2011, 09:15
|
Местный
  
Группа: Свой
Сообщений: 302
Регистрация: 24-07-06
Из: Донецк, Украина
Пользователь №: 19 042

|
Цитата(hd44780 @ Mar 21 2011, 12:25)  Я пока в процессе... Долбаное напряжение померить не могу ... Постоянку миллион раз мерил - с датчиков давления/влажности, БП делал со встроенным вольтметром - с первого раза оживало. А тут - уже неделю парюсь... Вроде все понятно, а ни фига не получается ...skipped... Мне непонятно, зачем вообще диоды ставить и иметь головную боль из-за их нелинейности? Погасить на делителе до приемлемой величины и сместить положительным напряжением до нуля посередине. И АЦПируйтесь наздоровье. Кстаати, у германиевых диодов ВАХ от температуры сильно зависит.
|
|
|
|
|
Mar 21 2011, 10:11
|
Местный
  
Группа: Свой
Сообщений: 302
Регистрация: 24-07-06
Из: Донецк, Украина
Пользователь №: 19 042

|
Цитата(hd44780 @ Mar 21 2011, 13:48)  Пока только для комнатной температуры. Пока алгоритмы не обкатаю. Потом сделаю активный делитель на ОУ со смещением. Диод по напряжению - кремниевый, из диодного моста (схема в первом посте). Или такая схема плоха? Посмотрите прямую ветвь ВАХ Ваших диодов. Диод открывается при напряжении >0,8В (? - склероз) и имеет очень большую нелинейность. Таким образом, при малых напряжениях Вы получите сверхпогрешность. А зачем вообще ставить ОУ? С трансформатора и так достаточно большое напряжение
|
|
|
|
|
Mar 21 2011, 10:48
|

Частый гость
 
Группа: Участник
Сообщений: 78
Регистрация: 8-12-09
Пользователь №: 54 138

|
Цитата(ASZ @ Mar 21 2011, 12:11)  А зачем вообще ставить ОУ? С трансформатора и так достаточно большое напряжение  На ОУ собирается "прецизионный выпрямитель". Все уже давно придумано до (для) нас Можно, в принципе, засемплировать синусоиду, проинтегрировать и посчитать среднеквадратичное значение, но аналоговая техника справится с этим быстрее и точнее. Гораздо проще мерять постоянное напряжение. С ВЧ помехами, опять-же программно бороться будет не просто. Ну, это все конечно, если мы хотим иметь прибор, а не коробочку с лампочками, которая будет показывать значения в попугайчиках PS:Ну, уж если есть желание решить задачу исключительно программно, то это очень интересная и объемная тема для обсуждения.
Сообщение отредактировал nk@ - Mar 21 2011, 10:51
|
|
|
|
|
Mar 21 2011, 12:13
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 14-03-09
Пользователь №: 46 084

|
Занимался подобной задачей. Для развязки от сети использовал схему из книги Полупроводниковая схемотехника У. Тице и К. Шенк, страница 469. измерение делал 1 раз в миллисекунду. Синхронизировал начало измерений с переходом синуса через ноль. Измерял 1 полный период. по прерыванию от таймера запускал преобразование АЦП, потом USUM=(ADCW>>2)*(ADCW>>2)+USUM; и по следующем переходе через 0 подсчитывал RESULT=sqrt(USUM/N); Задача точности остро не стояла. реально пришлось увеличить количество периодов измерения до 10. Погрешность измерений примерно +-1В. Тестировал эту схему в диапазоне температур от 20 до 55 градусов и напряжений 150-230В. заметил, что оба оптрона должны иметь одну температуру - находится рядом, иначе точность теряется.
Но это было давно, сейчас вопрос возник и чтоб не создавать новую тему решил написать здесь.
Кто знает, какой минимальный уровень напряжение может быть на входе опорного напряжения АЦП меги16. В даташите молчат, может кто-то подскажет ответ?
|
|
|
|
|
Mar 21 2011, 14:44
|

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

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

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

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

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

|
С буфером получается вот что:
// Для сумм //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[i]; } // 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 - Mar 21 2011, 17:00
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|