Как преобразовать шим в постоянное напряжение
Текущее время: Ср янв 24, 2024 17:23:46 |
Часовой пояс: UTC + 3 часа
Запрошенной темы не существует.
Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y
Работоспособность сайта проверена в браузерах:
IE8.0, Opera 9.0, Netscape Navigator 7.0, Mozilla Firefox 5.0
Адаптирован для работы при разрешениях экрана от 1280х1024 и выше.
При меньших разрешениях возможно появление горизонтальной прокрутки.
По всем вопросам обращайтесь к Коту: kot@radiokot.ru
©2005-2024
Аналоговый вывод
Несмотря на большую универсальность, возможности аналогового вывода у микроконтроллеров семейства tiny/mega ограничены. В их составе отсутствует цифро-аналоговый преобразователь (ЦАП), который, однако, имеется в ряде моделей специализированного для этих целей семейства 90PWM. Преобразовать цифровой код в аналоговую величину в общем случае можно с помощью простой схемы приведенной на рис.1.
Рис.1 Простой 8-разрядный ЦАП Делитель напряжения, состоящий из набора резисторов R1…R8, подключен к порту D микроконтроллера. Номиналов каждого последующего сопротивления должен быть в 2 раза больше предыдущего
RN = 2 N-1 *R,
где N – индекс, R – опорный номинал. Если, например, в качестве R выбрать значение 200Ом, то потребуется последовательность сопротивлений R1=200Ом, R2=400Ом, R3=400Ом,…, R6=6.4кОм, R6=12.8кОм, R6=25.6кОм. Выходное напряжение
UO = NPORTD*VCC/256,
где NPORTD – логическое значение регистра PORTD. Теоретически получим 2 8 шагов регулировки, что будет соответствовать 8-разрядному ЦАП. Но на практике перекрыть весь диапазон 0…VСС никогда не удастся, и всегда будут иметься зоны “замирания” напряжения из-за сложности подбора номиналов R1…R8. Шаг установки VCC/256 по этой же причине также не будет постоянной величиной. Для большей точности работы ЦАП на рис.1 требуется высокоимпедансная нагрузка.
Рис.2 Формирование ШИМ-сигнала на линии ОС2 при работе таймера-счетчика 2 в режиме Fast PWM Другим более естественным для AVR способом формирования аналоговых сигналов является использование широтно-импульсной модуляции (ШИМ). Способность аппаратно генерировать импульсы переменной длительности и частоты имеется у большинства моделей tiny и у всех без исключения моделей старшего семейства. Преобразование ШИМ–сигнала в постоянное напряжение может быть легко произведено с помощью ФНЧ. На рис.2, например, показано, как в этих целях можно использовать вывод OC2 микроконтроллера ATmega8. В подобных случаях 8-разрядный таймер-счетчик 2, как правило, работает в режиме Fast PWM(Fast Pulse Wide Modulation). Счетный регистр TCNT2 при этом инкрементируется с каждым приходящим импульсом до тех пор, пока не достигнет значения 0xFF, после чего счет продолжается с нуля. Если функции вывода OC2 настроены должным образом, то каждый раз, когда содержимое TCNT2 сравнивается со значением, записанным в регистре OCR2, на выводе OC2 устанавливается высокий уровень напряжения, а при переполнении TCNT2 линия OC2 сбрасывается на нуль. Таким образом, на выводе получаем ШИМ-сигнал с частотой
FOC2 = Fclk/(256*N),
где Fclk – частота тактового генератора, N-коэффициент деления предделителя частоты таймера-счетчика 2. Коэффициент заполнения импульсов
αOC2 = τ/T = OCR2/256,
где τ – длительность импульса , T – период импульса. Постоянная составляющая напряжения после ФНЧ будет пропорциональна коэффициенту заполнения αOC2
UO = αOC2*VCC = OCR2*VCC/256,
где VCC – напряжение питания микроконтроллера. Изменяя значение OCR2, можно программным способом регулировать UO с 8-разрядной точностью. Еще больше возможностей можно получить, если в подобных целях использовать ШИМ–выводы OC1A, OC1B. Разрешающая способность в этом случае может быть доведена до 16 битов за счет использования 2-байтовых регистров совпадения OCR1AH:OCR1AL и OCR1BH:OCR1BL. Частота среза ФНЧ должна быть во много раз ниже FOC2. Поэтому саму частоту FOC2, если это возможно, желательно выбирать повыше для того, чтобы можно было уменьшить постоянную времени фильтра (увеличить скорость установления напряжения после фильтра).
Рис.3 Управление с помощью ШИМ
а — при регулировке напряжения
б — при регулировке тока На рис.3 приведено два примера, в которых управляющий ШИМ–сигнал используется для регулировки напряжения (рис.3а) и тока (рис.3б) с помощью мощных полевых транзисторов с изолированным затвором.
В первом случае напряжение на сопротивлении нагрузки UL будет:
UL = [R2/(R1+R2)] * [(R3+R4)/R4] * VCC. Если выбрать R1/R2 = R3/R4, то UL будет в точности следовать за средним значением напряжения сформированного на выводе OC2. Для надежного запирания p-канального транзистора VT1 усилитель DA1 должен обеспечивать размах напряжения на выходе такой же, как и у источника питания (rail-to-rail). При управлении током напряжение ошибки снимается с шунта R3 и подается на инвертирующий вход –IN усилителя. Влияние ООС приводит к равенству напряжений
U+IN = U–IN = IL*R3,
где U+IN, U-IN – напряжение на не инвертирующем и инвертирующем входе DA1 соответственно, IL — ток в нагрузке. Для схемы на рис.3б ток в нагрузке будет равен:
IL = U–IN/R3 = [R2/((R1+R2)*R3)] * VCC. C обозначенными на рис.3б номиналами R1…R3 и VCC=5 В, получим 2-амперный регулятор тока. Пример настройки ШИМ-вывода OC2:
.def temp = R16 ;регистр для промежуточных операций ldi temp,high(RAMEND) ;инициализация стека out SPH,temp ldi temp,low(RAMEND) out SPL,temp . ; Для использования альтернативной функции линии PB3, как ; источника формирующего ШИМ-сигнал OC2, прежде всего ее ; необходимо настроить на вывод. cbi PORTB,PB3 sbi DDRB,DDB3 ; Частота следования импульсов в режиме Fast PWM : FOC2= ; Fclk/(256*N). Режим работы таймера-счетчика задается битами ; WGM22:WGM20(при WGM13:WGM10 = 011 – режем Fast PWM), значение ; N - битами CS22:CS20 в регистре TCCR2. При Fclk=1 МГц и N=8 ; (CS22:CS20 = 010–коэффициент деления предделителя частоты ; N=8): FOC2= 125 кГц. В момент совпадения TCNT2 и OCR2 ; происходит установка флага OC2F, а при переполнении TCNT2 ; установка флага TOV2 в регистре флагов TIFR. Биты COM21:COM20 ; в регистре TCCR2 определяют поведение вывода OC2 в моменты ; установки флагов OCF2 и TOV2. При COM21:COM20 = 01 – состояние ; OC2 меняется на противоположное. ldi temp,0xF0 out TCNT2,temp ldi temp,0x20 out OCR2,temp ldi temp,(1Перейти к следующей части: Отладка приложений - Пошаговый режим отладки
Теги:
Котов Игорь Юрьевич
Опубликована: 2012 г.
0
1
![]()
Вознаградить Я собрал 0 0
Как из шима получить постоянное напряжение.
Как получить из шима постоянное напряжение, знает каждый начинающий электронщик. Всё просто, надо пропустить шим через фильтр низких частот(в простейшем случае RC цепочка) и на выходе фильтра получим постоянное напряжение, не так ли?
На самом деле, как мне кажется всё гораздо интереснее, при попытке получить из шима постоянное напряжение появляются следующие вопросы:
Как подобрать номиналы элементов фильтра?
Сгладиться ли шим полностью или останутся пульсации?
И как вообще это работает, ведь конденсатор заряжается и разряжается через один и тот же резистор и по идее если коэффециент заполнения будет меньше половины, напряжение на конденсаторе вообще будет равно нулю. Например, у нас коэффециент заполнения равен 30%, тогда 30% периода конденсатор будет заряжаться, а 70% разряжаться, через тот же резистор и в итоге на нём ничего не останется, по крайне мере можно так подумать.
Давайте проверим это на практике, для этого соберём схему, изображённую ниже и подключимся щупами осциллографа в точки 1 и 2, надо отметить что период шима на порядок больше постоянной времени данной цепочки.
На осциллограмме видно, что действительно так и происходит, как быстро конденсатор зарядился также быстро и разрядился. Как же вообще получают постоянное напряжение из шима?
Единственная идея, которая напрашивается — это изменить номиналы RC фильтра, давайте на порядок увеличим значение резистора, тем самым увеличив постоянную RC цепи(теперь она будет равна периоду шима) или уменьшив частоту среза фильтра.
Ух ты, что-то начинает проясняться, у нас появилась постоянная составляющая. То есть в наши рассуждения закралась ошибка и заключается она в том, что конденсатор заряжается от 0 до 63% за время равное R*C(T), а разряжается он от 63% до 5% за время больше чем 2T , ниже графики, поясняющие это.
На графиках видно, что скорость зарядки и разрядки конденсатора не постоянна и зависит от заряда конденсатора, это свойство и позволяет получать из шима постоянное напряжение.
Теперь, когда мы нашли ошибку в наших размышлениях давайте, проанализируем что происходило, в первом эксперименте. Известно, что полная зарядка или разрядка конденсатора происходит за время равное 5T, а зарядка до 95% и разрядка до 5% примерно за 3T. Так как постоянная времени RC цепочки(которую мы использовали как ФНЧ) была мала, то за один период шима конденсатор успевал, почти полностью зарядиться и разрядиться.
После того как мы увеличили постоянную времени цепочки, скорость его зарядки и разрядки стала разной. Например, конденсатор успел разрядиться до 63% за время х, чтобы полностью разрядиться ему надо время превышающее 2х. Чтобы понять это можно посмотреть на графики выше.
Итак вывод, постоянная времени RC цепочки должна быть равна или больше периода шима, тогда за один период не будет происходить полный заряд-разряд конденсатора. Если же ещё на порядок увеличить постоянную времени RC цепочки, то увеличится время переходного процесса и уменьшаться пульсации. Время переходного процесса — это промежуток времени, за которое напряжение на конденсаторе изменится от 0 до некоторой постоянной величины. Данный вывод приведен для общего понимания.
Теперь примерно, понимая как вообще получают из шима постоянное напряжение, давайте перейдём к реальной задаче.
Необходимо на одном из входов ОУ формировать опорное напряжение с помощью шима и ФНЧ, логическая единица у шима составляет 3 вольта, частота шима 10KHz, допустимый уровень пульсаций 30 милливольт. Считаем, что входы ОУ ток не потребляют, в качестве ФНЧ возьмём фильтр первого порядка, реализованный на RC цепочке.Самый простой путь — это взять RC цепочку, у которой Т на два порядка больше величины шима и посмотреть какие будут пульсаций и дальше подбирать номиналы фильтра, но это есть не что иное, как метод научного тыка, а хотелось бы всё по-честному рассчитать.
Итак для расчёта по-честному, давайте посчитаем во сколько раз надо ослабить сигнал, 3000/30 = 100 и переведём в децибелы, получается -40дб.
Известно, что крутизна спада у фильтра первого порядка составляет 20дб/декаду и ослабление сигнала на 40дб, соответствует увеличению частоты на две декады. (20дб/декаду - уменьшение амплитуды в 10 раз(20дб), при увеличении частоты в 10 раз(декада).
Зная, что частота среза фильтра должна быть на две декады(в 100 раз) меньше частоты шимы, можно её рассчитать 10KHz/100 = 100Hz.
Номиналы фильтра можно подобрать пользуясь известной формулой.
Сопротивление возьмем равным 16K, а конденсатор 100nF.
Давайте проверим, что получится на практике, соберём схему, изображённую ниже и подключимся к точкам один и два.
И нарисуем ЛAЧХ нашей схемы.
У данного генератора импульсная система питания, которая сильно шумит, это можно видеть во втором канале, но если присмотреться, то видно, что амплитуда пульсаций на осциллограмме примерно 40 милливольт, то есть немного отличается от расчётной, но это нормально так, как шим содержит высшие гармоники, которые вносят свой вклад и спад не везде равен 20дб/декаду, это видно на ЛАЧХ. Несмотря на
некоторые допущения, мне этот расчёт показался очень простым и понятным, ведь мы с помощью простых логических размышлений и школьных формул, решили такую интересную задачу. При решении данной задачи важно понять именно физический смысл, что мы по сути на АЧХ абстрактного фильтра находим точку, которая соответствует нужному подавлению сигнала, вторая координата точки - это частота, она должна быть равна частоте шима. Таким образом мы находим одну из точек АЧХ фильтра, пользуясь этой точкой находим частоту среза, а зная её мы находим номиналы фильтра, вот и всё.Простая схема превращает сигнал ШИМ в точное опорное напряжение с цифровым управлением
Во многих схемах требуется преобразование сигнала широтно-импульсной модуляции (ШИМ) микропроцессора в аналоговое напряжение. Часто пассивный однополюсный RC-фильтр вполне удовлетворяет проектным требованиям, но этому подходу обычно присущи некоторые недостатки, включая большое время отклика, зашумленные результаты и отсутствие буферизации.
Рисунок 1. | Шунтовой регулятор выполняет функцию элемента обратной связи в фильтре нижних частот Саллена-Ки, преобразуя ШИМ сигнал размахом 5 В в постоянное напряжение между –2.5 В и +2.5 В, пропорциональное коэффициенту заполнения импульсов ШИМ. |
В описанной здесь схеме для реализации фильтра нижних частот второго порядка Саллена-Ки и одновременного сдвига уровня используется вездесущий шунтовой регулятор LM431 (Рисунок 1). По сравнению с традиционным подходом, она обеспечивает гораздо более крутой спад, а также биполярный выход с низким импедансом. Схема будет вырабатывать выходное напряжение от –2.5 до + 2.5 В в соответствии с входным сигналом ШИМ, изменяющимся между уровнями 0 и 5 В. Значение выходного напряжения равно
где D – коэффициент заполнения импульсов ШИМ, изменяющийся от 0.0 до 1.0 (от 0% до 100%).
Показанные на схемы номиналы компонентов обеспечивают плоский отклик с частотой среза около 2300 Гц, спад –12 дБ/октава и нагрузочную способность порядка 3 мА. Частоту среза можно легко изменять, меняя номиналы R1 и R2 или C1 и C2, однако при этом важно сохранять равенство сопротивлений R1 и R2, а емкость C2 должна оставаться равной примерно половине емкости C1.
Удвоение номинала резистора или конденсатора снижает частоту среза наполовину. Уменьшение любых номиналов вдвое удваивает частоту среза. Варьируя сопротивление резистора R3, можно увеличить выходной ток или снизить потребляемую мощность. Напряжение шины 5 В не должно быть точным и может иметь более высокое значение. Необходимо только, чтобы размах входного сигнала ШИМ составлял точно 5 В.
Поскольку в схеме используется лишь шесть компонентов, она может быть очень недорогой. LM431 в единичных количествах можно купить всего за 10 центов, что значительно ниже цены любого операционного усилителя.
Материалы по теме
Перевод: AlexAAN по заказу РадиоЛоцман