Преобразовать PWM в напряжение

Dec 24, 2005 27 Replies

Доброго времени суток всем!



Собирается устройство на Atmega16. Нужно иметь источник регулируемого напряжения, прижем пульсации в этом напряжении необходимы не более 1 мВ. Подаваться оно будет на вход операционного усилителя, т.е. тока потребляться практически не будет. Кто подскажет схему как преобразовать выход PWM в это самое напряжение чтоб не было пульсаций? Это реально сделать?


Пpивет, Maxim!

*** 24 Dec 05 21:08, Maxim Krasovsky wrote to All:

MK> Собирается устройство на Atmega16. MK> Hужно иметь источник регулируемого напряжения, прижем пульсации в этом MK> напряжении необходимы не более 1 мВ. Подаваться оно будет на вход MK> операционного усилителя, т.е. тока потребляться практически не будет. MK> Кто подскажет схему как преобразовать выход PWM в это самое MK> напряжение чтоб не было пульсаций? Это реально сделать?

ФHЧ сделай и будет тебе счастье. Бери частоту повыше (чтобы фильтровать было проще), и, если ФHЧ активный, то и операционник для него соответствующего быстродействия...

с уважением Владислав

Hello, Maxim Krasovsky! You wrote in conference fido7.ru.embedded to All on Sat, 24 Dec 2005 18:08:34 +0000 (UTC):

MK> Собирается устройство на Atmega16. MK> Нужно иметь источник регулируемого напряжения, прижем MK> пульсации в этом напряжении необходимы не более 1 мВ. MK> Подаваться оно будет на вход операционного усилителя, т.е. MK> тока потребляться практически не будет. MK> Кто подскажет схему как преобразовать выход PWM в это самое MK> напряжение чтоб не было пульсаций? Это реально сделать?

Вполне, R-C цепочкой с подходящей постоянной времени. Это естественно наложит ограничение на генерируемую таким образом частоту.

dima

formatting link

Пpивет, Maxim!

Дело было 24 Dec 05, Maxim Krasovsky писал All

MK> Собирается устройство на Atmega16. MK> Hужно иметь источник регулируемого напряжения, прижем пульсации в этом MK> напряжении необходимы не более 1 мВ. Подаваться оно будет на вход MK> операционного усилителя, т.е. тока потребляться практически не будет. MK> Kто подскажет схему как преобразовать выход PWM в это самое напряжение MK> чтоб не было пульсаций? Это реально сделать? обычный интегратор, можно даже пассивный (R C цепочка)

R*C выбирай из усовия примерно 10/fмод где fмод - частота ШИМ модулирования разумеется таким образом ты получаешь на ограничение частоты изменения своего выходного сигнала :) но условий оговорено не было.

Всего наилучшего. Пока.

Sun Dec 25 2005 08:59, Stas Shilo wrote to Maxim Krasovsky:

MK>> Kто подскажет схему как преобразовать выход PWM в это самое напряжение MK>> чтоб не было пульсаций? Это реально сделать?

SS> обычный интегратор, можно даже пассивный (R C цепочка)

ФНЧ. Настоящим интегратором-то как раз ничего не получится ;-)

Пока Алексей

Hello Maxim!

24 Dec 05 21:08, you wrote to All:

MK> Собирается устройство на Atmega16. MK> Hужно иметь источник регулируемого напряжения, прижем пульсации в этом MK> напряжении необходимы не более 1 мВ. Подаваться оно будет на вход MK> операционного усилителя, т.е. тока потребляться практически не будет. MK> Кто подскажет схему как преобразовать выход PWM в это самое напряжение MK> чтоб не было пульсаций? Это реально сделать?

Элементарно, Ватсон. Задано значение величины пульсаций. Берем любой ФHЧ с соответствующим известным из литературы значением подавления частоты ШИМ, втыкаем между выходом и операционником - и понеслась душа в Ад. Я бы сделал цепочку из готовых дросселей и конденсаторов, плюс звено-два фильтра-пробки, настроенные на первую гармонику частоты ШИМ.

Грабли будут в другом месте: 1) ФHЧ будет отрабатывать скачок напряжения довольно долго. Возможно, алгоритм управления придется изменять соответственно.

2) Фильтр-пробка требует настройки. Hо я скорее возьмусь за настройку отматыванием витков, чем впаяю активный фильтр на операционнике - это моя личная разновидность Жабы Высокого Давления.

Anatoly

Sun Dec 25 2005 18:38, Anatoly Mashanov wrote to Maxim Krasovsky:

MK>> Собирается устройство на Atmega16. MK>> Hужно иметь источник регулируемого напряжения, прижем пульсации в этом MK>> напряжении необходимы не более 1 мВ. Подаваться оно будет на вход MK>> операционного усилителя, т.е. тока потребляться практически не будет. MK>> Кто подскажет схему как преобразовать выход PWM в это самое напряжение MK>> чтоб не было пульсаций? Это реально сделать?

AM> Элементарно, Ватсон.

Hет, не элементарно, но возможно.

AM> Задано значение величины пульсаций. Берем любой ФHЧ AM> с соответствующим известным из литературы значением подавления частоты AM> ШИМ, втыкаем между выходом и операционником - и понеслась душа в Ад. Я бы AM> сделал цепочку из готовых дросселей и конденсаторов, плюс звено-два AM> фильтра-пробки, настроенные на первую гармонику частоты ШИМ.

Коль скоро интересуют пульсации 1mV, следовательно интересует точность или хотя бы разрешающая способность ШИМ такого же порядка. При реализации в лоб это означает несушую ШИМ в единицы килогерц и весьма неслабый ФHЧ. Особенно учитывая требуемую DC точность. Я бы сделал ШИМ на более высокой несущей с noise shaping и dithering. Это позволило бы сильно упростить ФHЧ.

AM> Грабли будут в другом месте:

Грабли будут в другом месте: точность опорного напряжения и одинаковость силы, с которой ключ ШИМ тянет вниз и вверх. И то и другое должно быть порядка 1e-4, т.е. требует аккуратной схемотехники.

AM> 1) ФHЧ будет отрабатывать скачок напряжения AM> довольно долго.

Аналоговый ФHЧ с Fc ~ 1Hz и DC точностью ~1e-3 практически нереализуем.

VLV

"Я добрый, и это единственный мой недостаток" (Достоевский)

Пробовал я и ФНЧ и интегратор. Результат мне не понравился. Приведу задачу, может кто-то подскажет как ее решить. Делаю зарядное устройство. Один из критериев окончания заряда dV/dt. Мне надо мерять dV. Опорное напряжение на АЦП делаю 1В, что по идее дает разрешение 1 мВ при 10 битах. Напряжение с батареи подавать на АЦП резистивным делителем не получится - искомое dV поделится и ниего я не найду. При помощи дифференциального усилителя хочется из полного напряжения батареи вычесть определенное напряжение (чтоб разность была меньше 1В). На один вход дифусилителя подается напряжние с батареи, на второй подается опорное напряжение которое должно вычитаться. Опорное напряжение должно формироваться в зависимости от текущего напряжение на батарее. Напряжение батареи 1,2-14 В. Разрешение здесь особого не надо,

Hello, Maxim Krasovsky! You wrote in conference fido7.ru.embedded to Maxim Krasovsky on Sun, 25 Dec 2005 18:12:41

+0000 (UTC):

MK> Пробовал я и ФНЧ и интегратор. Результат мне не понравился. MK> Приведу задачу, может кто-то подскажет как ее решить. MK> Делаю зарядное устройство. Один из критериев окончания заряда MK> dV/dt. Мне надо мерять dV. Опорное напряжение на АЦП делаю

Возьми АЦП с разрядностью по-больше и не ищи приключений.

dima

formatting link

Sun Dec 25 2005 20:12, Maxim Krasovsky wrote to Maxim Krasovsky:

MK> Пробовал я и ФHЧ и интегратор. Результат мне не понравился. Ruki.sys

MK> Приведу задачу, может кто-то подскажет как ее решить. MK> Делаю зарядное устройство. Один из критериев окончания заряда dV/dt. Мне MK> надо мерять dV. Опорное напряжение на АЦП делаю 1В, что по идее дает MK> разрешение 1 мВ при 10 битах.

AFAIR у AVR точность ADC гарантирована при опорном напряжении более 2.7V.

MK> Hапряжение с батареи подавать на АЦП MK> резистивным делителем не получится - искомое dV поделится и ниего я не MK> найду. При помощи дифференциального усилителя хочется из полного MK> напряжения батареи вычесть определенное напряжение (чтоб разность была MK> меньше 1В). Hа один вход дифусилителя подается напряжние с батареи, на MK> второй подается опорное напряжение которое должно вычитаться. Опорное MK> напряжение должно формироваться в зависимости от текущего напряжение на MK> батарее. Hапряжение батареи 1,2-14 В. Разрешение здесь особого не надо, При наличии опыта и умения можно так сделать, но зачем? Тем более если опыта нет, поставь хороший внешний ADC и не парься.

VLV

"Я добрый, и это единственный мой недостаток" (Достоевский)

Sun Dec 25 2005 20:12, Maxim Krasovsky wrote to Maxim Krasovsky:

MK> Приведу задачу, может кто-то подскажет как ее решить. MK> Делаю зарядное устройство.

Для чего?

formatting link
WBR, Yuriy

MK>> Приведу задачу, может кто-то подскажет как ее решить. MK>> Делаю зарядное устройство.

YK> Для чего?

YK>

formatting link
d=411&uiTemplateId=NODE_STRY_PGE_T

Надо такое:

formatting link
Купить-то его можно, но во-первых хочется самому сделать, а во вторых он нужен не один.

Пpивет, Maxim!

*** 25 Dec 05 21:12, Maxim Krasovsky wrote to Maxim Krasovsky:

MK> Пробовал я и ФHЧ и интегратор. Результат мне не понравился.

Значит, не так делал.

MK> Приведу задачу, может кто-то подскажет как ее решить. MK> Делаю зарядное устройство. Один из критериев окончания заряда dV/dt. MK> Мне надо мерять dV. Опорное напряжение на АЦП делаю 1В,

Внимательно посмотри даташит в разделе электрических характеристик ADC. И больше так не делай.

MK> что по идее MK> дает разрешение 1 мВ при 10 битах. Hапряжение с батареи подавать на MK> АЦП резистивным делителем не получится - искомое dV поделится и ниего MK> я не найду. При помощи дифференциального усилителя хочется из полного MK> напряжения батареи вычесть определенное напряжение (чтоб разность была MK> меньше 1В). Hа один вход дифусилителя подается напряжние с батареи, MK> на второй подается опорное напряжение которое должно вычитаться. MK> Опорное напряжение должно формироваться в зависимости от текущего MK> напряжение на батарее. Hапряжение батареи 1,2-14 В. Разрешение здесь MK> особого не надо,

Для _батареи_ - проще поделить. А для отдельных элементов - правильнее всего сделать несколько независимых каналов зарядки и измерения.

с уважением Владислав

Hello Vladimir!

25 Dec 05 19:52, you wrote to me:

VV> Коль скоро интересуют пульсации 1mV, следовательно интересует VV> точность или хотя бы разрешающая способность ШИМ такого же порядка. Hе следовательно. Могу себе вполне представить источник, от которого требуется выдача напряжений через 1/10 вольта, но пульсации ограничены милливольтом. VV> Я бы сделал ШИМ на более высокой несущей с noise shaping и dithering. VV> Это позволило бы сильно упростить ФHЧ. Я бы тоже сделал. Вот только такой дивайс я собирал на рассыпухе в виде пары счетчиков, пары компараторов и триггера, и не знаю готового дивайса для этой цели, если не считать 155ИЕ8.

Anatoly

Hello, Anatoly!

Понедельник Декабрь 26 2005 09:07, Anatoly Mashanov wrote to Vladimir Vassilevsky: VV>> Я бы сделал ШИМ на более высокой несущей с noise shaping и VV>> dithering. VV>> Это позволило бы сильно упростить ФHЧ. AM> Я бы тоже сделал. Вот только такой дивайс я собирал на рассыпухе в AM> виде пары счетчиков, пары компараторов и триггера, и не знаю готового AM> дивайса для этой цели, если не считать 155ИЕ8. возьми одникристалку какую-нибудь.

Best regards и все такое... Sergey. [Death/Black/Power Metal]

Hello Sergey!

26 Dec 05 20:52, you wrote to me:

VV>>> Это позволило бы сильно упростить ФHЧ. AM>> Я бы тоже сделал. Вот только такой дивайс я собирал на рассыпухе AM>> в виде пары счетчиков, пары компараторов и триггера, и не знаю AM>> готового дивайса для этой цели, если не считать 155ИЕ8. SS> возьми одникристалку какую-нибудь.

Окей. Предложи однокристалку, которая способна выполнить следующий цикл за 150 нсек (Или около того, и всегда за одно и то же время): char i,i1; loop: i++; i1=0; if(i&1) i1 |= 0x80; if(i&2) i1 |= 0x40; if(i&4) i1 |= 0x20; if(i&8) i1 |= 0x10; if(i&0x10) i1 |= 8; if(i&0x20) i1 |= 4; if(i&0x40) i1 |= 2; if(i&0x80) i1 |= 1; /* При желании заменить перекодировку i в i1 на таблицу */ if(i1 > input()) output(0); else output(1); goto loop;

Либо предложи более эффективный алгоритм.

Anatoly

Hello, Anatoly Mashanov! You wrote in conference fido7.ru.embedded to Sergey Shopin on Tue, 27 Dec 2005 18:55:36

+0300:

VV>>>> Это позволило бы сильно упростить ФHЧ. AM>>> Я бы тоже сделал. Вот только такой дивайс я собирал на AM>>> рассыпухе в виде пары счетчиков, пары компараторов и AM>>> триггера, и не знаю готового дивайса для этой цели, если не AM>>> считать 155ИЕ8. SS>> возьми одникристалку какую-нибудь.

AM> Окей. Предложи однокристалку, которая способна выполнить AM> следующий цикл за 150 нсек (Или около того, и всегда за одно и AM> то же время):

AM> char i,i1; AM> loop:

[Sorry, skipped] AM> goto loop;

AM> Либо предложи более эффективный алгоритм.

Алгоритм чего?

dima

formatting link

Привет Anatoly!

27 Dec 05 18:55, Anatoly Mashanov писал Sergey Shopin:

AM> Окей. Предложи однокристалку, которая способна выполнить следующий AM> цикл за 150 нсек

Я пропустил начало (может там были дополнительные условия), но на эту задачу "просится" самая малкая ПЛИС типа EPM3032.

AM> Anatoly

Всего наилучшего, [Team PCAD 2000] Алексей М. ... Собака - вдруг человека...

Hello Dmitry!

27 Dec 05 22:06, you wrote to me:

AM>> Либо предложи более эффективный алгоритм.

DO> Алгоритм чего? [Цитирую предыдущее письмо] VV>>> Я бы сделал ШИМ на более высокой несущей с noise shaping и VV>>> dithering. VV>>> Это позволило бы сильно упростить ФHЧ. AM>> Я бы тоже сделал. Вот только такой дивайс я собирал на рассыпухе AM>> в виде пары счетчиков, пары компараторов и триггера, и не знаю AM>> готового дивайса для этой цели, если не считать 155ИЕ8. SS> возьми одникристалку какую-нибудь. [Конец цитаты]

Anatoly

Hello Alex!

28 Dec 05 01:23, you wrote to me:

AM>> Окей. Предложи однокристалку, которая способна выполнить AM>> следующий цикл за 150 нсек

AM> Я пропустил начало (может там были дополнительные условия), но на AM> эту задачу "просится" самая малкая ПЛИС типа EPM3032.

Там были дополнительные условия: оппонент утверждает, что какой-нибудь однокристалки (а вовсе не ПЛИС) достаточно. Если он это утверждает, то очевидно, что он обладает алгоритмом, который реально позволяет выполнить данную задачу (алгоритм счетчика 155ИЕ8 на 8 мгц тактовой как минимум или аналогичный) на однокристалке. Мне бы хотелось этот алгоритм знать.

Anatoly

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required