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

Аналоговый вывод

Аналоговый вывод

Несмотря на большую универсальность, возможности аналогового вывода у микроконтроллеров семейства tiny/mega ограничены. В их составе отсутствует цифро-аналоговый преобразователь (ЦАП), который, однако, имеется в ряде моделей специализированного для этих целей семейства 90PWM. Преобразовать цифровой код в аналоговую величину в общем случае можно с помощью простой схемы приведенной на рис.1.

Рис.1 Простой 8-разрядный ЦАП

Делитель напряжения, состоящий из набора резисторов R1…R8, подключен к порту D микроконтроллера. Номиналов каждого последующего сопротивления должен быть в 2 раза больше предыдущего

RN = 2N-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.

Теоретически получим 28 шагов регулировки, что будет соответствовать 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 << CS21)|(1 << WGM21)|(1 << WGM20)|(1 << COM20) out TCCR2,temp . ldi temp,128 ;установить UO = VCC/2 out TCCR2,temp


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 5 + 4

Добавить изображение

Последние статьи