Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Цифровой вольтметр-амперметр-ваттметр на AVR для бытовой сети
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2, 3, 4
hd44780
Цитата(Tanya @ Mar 23 2011, 14:17) *
Попробуйте лучше операционный усилитель.


Вы имеете в виду БП с активным выпрямителем?
Tanya
Цитата(hd44780 @ Mar 23 2011, 17:11) *
Вы имеете в виду БП с активным выпрямителем?

Я имела в виду схему сдвига уровня для попадания в диапазон АЦП.
Вместо фантазий на тему двух потенциометров.
hd44780
Цитата(Tanya @ Mar 23 2011, 16:22) *
Я имела в виду схему сдвига уровня для попадания в диапазон АЦП.


Понял. Мож и сделаю biggrin.gif ..

Схема нормальная? Для тока рисовать не стал.
Кстати - БП (мост) переделал. Работает.
До ОУ пока руки не дошли..
Tanya
Цитата(hd44780 @ Mar 23 2011, 18:05) *
Схема нормальная?

Схема нормальная. Только после выпрямителя не ставьте конденсатор с большой емкостью.
А если есть еще обмотка, то лучше оттуда сигнал брать.
Stanislav_S
Что то схемы измерения у вас больно альтернативные sm.gif Для начала выкинте все ваши подстроечники и сформируйте для начала нормальную "виртуальную" землю, затем правильно постройте с каскады усиления на ОУ, если конечно вы не хотите показометр сделать sm.gif
hd44780
Цитата(Tanya @ Mar 23 2011, 18:59) *
Схема нормальная. Только после выпрямителя не ставьте конденсатор с большой емкостью.
А если есть еще обмотка, то лучше оттуда сигнал брать.


После моста электролит 1000mF.
Второй обмотки нету. Могу 2-й транс поставить, как я нарисовал. Мне кстати с ним понятнее biggrin.gif

Цитата(Stanislav_S @ Mar 23 2011, 19:04) *
Что то схемы измерения у вас больно альтернативные sm.gif Для начала выкинте все ваши подстроечники и сформируйте для начала нормальную "виртуальную" землю, затем правильно постройте с каскады усиления на ОУ, если конечно вы не хотите показометр сделать sm.gif


Схема из поста 46 - взято из AVR465. Ее же вариант на ОУ - оттуда же. Только слегка упрощенный. Без переключаемого Ку. По напряжению он не нужен.
Stanislav_S
Цитата(hd44780 @ Mar 23 2011, 23:18) *
Схема из поста 46 - взято из AVR465. Ее же вариант на ОУ - оттуда же. Только слегка упрощенный. Без переключаемого Ку. По напряжению он не нужен.

Апонт это конечно хорошо, но обычно там идея дается, направление для мысли так-сказать, а если хочется сделать хороший девайс, то все равно думать самому надо sm.gif

hd44780
Stanislav_S, а зачем виртуальная земля? Для точности измерений?
Просто не сталкивался как-то sad.gif .
Tanya
Цитата(hd44780 @ Mar 23 2011, 22:18) *
После моста электролит 1000mF.
Второй обмотки нету. Могу 2-й транс поставить, как я нарисовал. Мне кстати с ним понятнее biggrin.gif

Нужно считать. Вот посчитайте форму тока во вторичной обмотке. Будут импульсы на вершине синусоиды. Если умножить на сопротивление обмотки, получится ошибка напряжения, которое измеряется. При этом не нужно забывать, что эти самые вершинки вносят основной вклад в сумму квадратов.

Цитата(hd44780 @ Mar 24 2011, 12:05) *
Stanislav_S, а зачем виртуальная земля? Для точности измерений?
Просто не сталкивался как-то sad.gif .

Это буфер на ОУ, который держит половину питания. К нему можно обмотки подключать.
Stanislav_S
Цитата(hd44780 @ Mar 24 2011, 13:05) *
Stanislav_S, а зачем виртуальная земля? Для точности измерений?
Просто не сталкивался как-то sad.gif .

Да именно так, тем более что ее можно завести на АЦП (хотя можно и не заводить), таким образом вы сможете ловить переходы через ноль програмно, ну и точность повысится.
hd44780
Цитата(Tanya @ Mar 24 2011, 11:25) *
Это буфер на ОУ, который держит половину питания. К нему можно обмотки подключать.


Кажется, начинаю что-то понимать.... Это чтобы сместить синусоиду на 2.5в (у меня питание 5в)?
А чем это отличается от того ОУ с потенциометром?
Подскажите, где об этом почитать? Гуглом искал по фразе "виртуальная земля", нашел только про потенциал минусового входа ОУ в инв. усилителе ...

Есть Хоровиц-Хилл, Пейтон А.Дж., Волш В "Аналоговая техника на ОУ".
Бегло проглядел, не заметил sad.gif

Спасибо.
Stanislav_S
Вот так это выглядет, измерение напряжения с обмотки питания схемы, опорное напряжение в данном случае 5 вольт, но для повышения точности (если надо) используйте внешний референс, например МСР1541.
Tanya
Цитата(hd44780 @ Mar 24 2011, 13:19) *
А чем это отличается от того ОУ с потенциометром?

Только тем, что только один ОУ, если масштабировать не нужно. А еще тем, что эта искусственная средняя точка одна на несколько каналов.

Цитата(Stanislav_S @ Mar 24 2011, 13:28) *
Вот так это выглядет,

А зачем такие сложности - C8...
Можно же один резистор с обмотки на инвертирующий вход... Второй конец и искусственную среднюю точку - на неинвертирующий. Или я чего-то недопонимаю?
Stanislav_S
Цитата(Tanya @ Mar 24 2011, 14:38) *
А зачем такие сложности - C8...
Можно же один резистор с обмотки на инвертирующий вход... Второй конец и искусственную среднюю точку - на неинвертирующий. Или я чего-то недопонимаю?

В данном, конкретном случае, подвешивать второй конец обмотки на среднюю точку не представляется возможным.
hd44780
Stanislav_S, Tanya, спасибо.
Вроде понятно. Буду пробовать.
Tanya
Цитата(Stanislav_S @ Mar 24 2011, 13:50) *
В данном, конкретном случае, подвешивать второй конец обмотки на среднюю точку не представляется возможным.

А я про трансформатор тока... И не факт, что у автора обмотки соединены внутри... Может он сам - снаружи?
Stanislav_S
Цитата(Tanya @ Mar 24 2011, 14:59) *
А я про трансформатор тока... И не факт, что у автора обмотки соединены внутри... Может он сам - снаружи?

А понятно, ну с трансформатором тока согласен, я про измерение напряжения sm.gif
Tanya
Цитата(Stanislav_S @ Mar 24 2011, 14:09) *
А понятно, ну с трансформатором тока согласен, я про измерение напряжения sm.gif

А с напряжением... брать с нагруженной на выпрямитель с конденсатором обмотки... не стоит, наверное.
Кроме всего прочего... Ваша схема не годится для полноразмахного выхода, так как входы будут слишком сильно раскачиваться. Уж лучше и в этом случае инвертирующую схему... даже с искусственной средней точкой. Сигнал будет несимметричный, но не сильно уж. На неинвертирующий вход можно подать немного меньше половины...
Или уж ИУ с базой на средней точке... Кто на первой базе....?
hd44780
Мне так видится - схема.
Со второй вторичкой/трансом мне все-таки больше нравится.

Вместо R5 можно поставить тот буферный ОУ.
Оба ОУ д.б. либо оба инвертирующие, либо оба неинвертирующие. Мне там еще сдвиг фаз напряжение-ток анализировать. Для измерения мощности.
Tanya
Цитата(hd44780 @ Mar 24 2011, 14:38) *
Мне так видится - схема.

Оба ОУ д.б. либо оба инвертирующие, либо оба неинвертирующие. Мне там еще сдвиг фаз напряжение-ток анализировать. Для измерения мощности.

Конденсаторы лишние. R2 не нужен. Концы обмоток - на среднюю (искусственную) точку. Резисторы на входы добавить.
Номиналы увеличить.
Stanislav_S
Цитата(Tanya @ Mar 24 2011, 15:26) *
А с напряжением... брать с нагруженной на выпрямитель с конденсатором обмотки... не стоит, наверное.
Кроме всего прочего... Ваша схема не годится для полноразмахного выхода, так как входы будут слишком сильно раскачиваться. Уж лучше и в этом случае инвертирующую схему... даже с искусственной средней точкой. Сигнал будет несимметричный, но не сильно уж. На неинвертирующий вход можно подать немного меньше половины...
Или уж ИУ с базой на средней точке... Кто на первой базе....?

То что не стоит брать с обмотки питания это понятно, но в данном случае изделие серийное (тираж очень большой), поэтому заказчик на дополнительный измерительный трансформатор не пошел, днег экономит sm.gif. Для полного размаха не годится конечно, но! никто не мешает пойти двумя путями, поставить rail to rail, по входу и по выходу, либо увеличить коэфициент деления входного аттенюатора, а для каскада на ОУ ввести небольшое усиление. Хотя конечно инвертирующую схему никто не отменял.
Tanya
Цитата(Stanislav_S @ Mar 24 2011, 15:21) *
То что не стоит брать с обмотки питания это понятно, но в данном случае изделие серийное

Кто это сказал?
Автор в самом начале произнес - "Вот делаю такую штуку - сабж.
Делается для себя,...."
Лучше всего... - поставить инструментальный усилитель и прекратить думать о пустяках...
Stanislav_S
Цитата(Tanya @ Mar 24 2011, 16:25) *
Кто это сказал?
Автор в самом начале произнес - "Вот делаю такую штуку - сабж.
Делается для себя,...."
Лучше всего... - поставить инструментальный усилитель и прекратить думать о пустяках...

А зачем инструментальный усилитель? Разве что для тока (и то непонятно зачем), а для напряжения инструментальный усилитель не пригодится, во диф усилитель, да sm.gif
Tanya
Цитата(Stanislav_S @ Mar 24 2011, 16:09) *
А зачем инструментальный усилитель? Разве что для тока (и то непонятно зачем), а для напряжения инструментальный усилитель не пригодится, во диф усилитель, да sm.gif

А мне кажется, что никакой разницы между дифференциальным и инструментальным нет. Только слова разные.
Sirko
Извините.
А почему нельзя проще?
Нажмите для просмотра прикрепленного файла
Если судить по последней преведенной схеме, то у автора есть дополнительные обмотки.
Напряжение "Напряжения" при необходимости можно поделить, прицепив еще резистор, паралельно конденсатору.
Далее пусть думает проц. Это его головная боль.
И совсем неясно, для чего выпрямлять сигнал физически?
SHUR1K
Цитата(Sirko @ Mar 25 2011, 17:12) *
Извините.
А почему нельзя проще?

+1. Я сейчас делаю стабилизатор и для меня важно ловить момент перехода синусоиды через 0. Поэтому я взял просто измерительный транс, сместил его выход вверх на 2,5В и пустил на вход АЦП. Семплирую 255 раз за полпериода синусоиды, что в итоге приводит к точности в 1В, чего мне вполне достаточно. АЦП запускаю единичное по прерываю таймера. В выходном потоке данных из АЦП ищу min и max потом получаю амплитуду (max-min), суммирую значения, ищу среднее и получаю напряжение. Если результат АПЦ равен (max-min)/2 - то это переход через ноль.
nk@
Цитата(SHUR1K @ Mar 30 2011, 16:53) *
ловить момент перехода синусоиды через 0.

А не проще использовать аналоговый компаратор? Про него как-то все забыли crying.gif Можно получить прерывание при переходе через 0.
SHUR1K
Цитата(nk@ @ Mar 30 2011, 20:34) *
А не проще использовать аналоговый компаратор? Про него как-то все забыли crying.gif Можно получить прерывание при переходе через 0.

Но ведь один if поставить проще, чем даташит открыть :-) Но абсолютно с Вами согласен, более правильно использовать компаратор.
НЕХ
А не проще ли поставить ADE7755 ценою меньше доллара и использовать вывод "pulse output CF" в режиме калибровки с выходом высокой частоты и просто замерять её ?
И коммутировать входа либо на делитель напряжения, либо трансформатор тока, либо на то и другое для оценки активной мощности.
и измерять честное действующее значение...
hd44780
Цитата(SHUR1K @ Mar 30 2011, 15:53) *
ловить момент перехода синусоиды через 0. Поэтому я взял просто измерительный транс, сместил его выход вверх на 2,5В и пустил на вход АЦП. Семплирую 255 раз за полпериода синусоиды, что в итоге приводит к точности в 1В, чего мне вполне достаточно. АЦП запускаю единичное по прерываю таймера. В выходном потоке данных из АЦП ищу min и max потом получаю амплитуду (max-min), суммирую значения, ищу среднее и получаю напряжение. Если результат АПЦ равен (max-min)/2 - то это переход через ноль.


У меня похожий алгоритм. Но пока до отлова перехода синусоиды через ноль (2.5 в при смещенном сигнале) пока не добрался - работы навалили, не успел реализовать crying.gif ...
Но усредненную и поднятую переменку нормально меряет - показывает 3.2 в (при смещении 2 в). Вольтметр DC из мультиметра показывает 3.12в и это без всяких калибровок и коррекций. И опорой в лоб от VCC.
Программное убирание смещения пока не сделал.

Цитата(nk@ @ Mar 30 2011, 20:34) *
А не проще использовать аналоговый компаратор?


А это идея rolleyes.gif . Только сравнивать с Uсмещ.
Надо будет попробовать. Хоть ради интереса.

Цитата(НЕХ @ Mar 31 2011, 07:23) *
А не проще ли поставить ADE7755


Проще. Еще проще поставить ADE7753, AD636, AD637 или что-то типа того.
Но лично у меня принцип - как можно реже использовать разные спец. микросхемы.
Тем более, что здесь алгоритмы не бог весть какие сложные.

Цитата(НЕХ @ Mar 31 2011, 07:23) *
.... для оценки активной мощности.
и измерять честное действующее значение...


Я собираюсь измерять все 3 мощности S, P, Q. При анализе сдвига фаз это вполне реализуемо. По-моему.
Действующее - у меня меряется среднеквадратическое (True RMS, если не ошибаюсь) - те самые 3.2в. Что меряет мой мультиметр - не знаю rolleyes.gif .
777777
Наличие диодов сразу говорит о том, что достаточную точность вы не получите.

Меня, вообще, всегда удивляло, почему народ так не любит отрицательные напряжения. Кто мешает непрерывно оцифровывать мгновенные значения тока и напряжения, перемножать их и суммировать?
hd44780
Цитата(777777 @ Mar 31 2011, 10:03) *
Наличие диодов сразу говорит о том, что достаточную точность вы не получите.


У меня собрана схема из поста 69 - http://electronix.ru/forum/index.php?showt...st&p=904668

Там нету никаких диодов. Только в БП biggrin.gif .

Цитата(777777 @ Mar 31 2011, 10:03) *
Меня, вообще, всегда удивляло, почему народ так не любит отрицательные напряжения.

Их не народ не любит, а АЦП. Ну не меряет АЦП микроконтроллера отрицательные напряжения.
А мне проще сместить, чем искать двуполярный АЦП.

Цитата(777777 @ Mar 31 2011, 10:03) *
Кто мешает непрерывно оцифровывать мгновенные значения тока и напряжения, перемножать их и суммировать?

Я так и делаю. Мгновенные замеры раз в 1 мс - 20 раз на период.
777777
Цитата(hd44780 @ Mar 31 2011, 14:53) *
У меня собрана схема из поста 69 - http://electronix.ru/forum/index.php?showt...st&p=904668

Ну это совсем другое дело!
Цитата(hd44780 @ Mar 31 2011, 14:53) *
Их не народ не любит, а АЦП. Ну не меряет АЦП микроконтроллера отрицательные напряжения.

Да ладно, в некоторых АВРках есть псевдодифференциальные входы. Тогда тебе даже операционники не понадобятся.
Цитата(hd44780 @ Mar 31 2011, 14:53) *
Я так и делаю. Мгновенные замеры раз в 1 мс - 20 раз на период.

Ну и как? Похоже на правду?
hd44780
Цитата(777777 @ Mar 31 2011, 13:54) *
Да ладно, в некоторых АВРках есть псевдодифференциальные входы. Тогда тебе даже операционники не понадобятся.


Дифф входы работоспособны только в SMD корпусах. Я их терпеть не могу biggrin.gif и стараюсь не применять.

Цитата(777777 @ Mar 31 2011, 13:54) *
Ну и как? Похоже на правду?


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

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

Ну ни фига себе доводы! Ну так для того он и процессор, пусть работает, он железный! Тебе какое дело 3 кб там или 11? А подстроечник стоит денег и понижает надежность. Лучше выкинуть его, а коэффициент держать в EEPROM
hd44780
У меня и подстроечник и коэффициенты в EEPROM biggrin.gif .
Можно и подстроечник убрать, но тогда нужна вторичка вольт на 1-2 переменки. У меня пока такой нету sad.gif .
Когда алгоритмы отлажу, может намотаю ее. Она вроде небольшая.

А сейчас у меня с обмотки измерительного транса прет 13в действующих. Транс обычный, от БП какого-то советского микрокалькулятора. Калькулятор давно помер, а транс остался rolleyes.gif .
Пихать их в ОУ, работающий от 5в мне как-то боязно. Лучше я подстроечником перестрахуюсь ...
SHUR1K
Цитата(777777 @ Apr 1 2011, 07:25) *
Ну ни фига себе доводы! Ну так для того он и процессор, пусть работает, он железный! Тебе какое дело 3 кб там или 11? А подстроечник стоит денег и понижает надежность. Лучше выкинуть его, а коэффициент держать в EEPROM

Да никакого дела, собсно, если бы не одно но:
Цитата(Datasheet)
8 bit AVR Microcontroller with 8K Bytes of In-System Self-Programmable Flash
777777
Цитата(SHUR1K @ Apr 1 2011, 12:32) *
Да никакого дела, собсно, если бы не одно но:

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

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

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

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

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

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

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

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

Нет, не с компилятором :-). Просто если использовать в одном выражении умножении и деление, ну например *3/2, то получается *1.5, а это уже дробное число, вот и растет код безбожно.
Stanislav_S
Цитата(SHUR1K @ Apr 3 2011, 18:35) *
Нет, не с компилятором :-). Просто если использовать в одном выражении умножении и деление, ну например *3/2, то получается *1.5, а это уже дробное число, вот и растет код безбожно.

?? мы говорили о целочисленном делении, разве нет? Если вы говорите о плавучке, тогда да, код раздувается на байт 800 примерно, но! Мы ведь говорили о целых числах sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.