Главная Обратная связь

Дисциплины:






Короткі теоретичні відомості. Модуль аналого-цифрового перетворення (АЦП)



Модуль аналого-цифрового перетворення (АЦП)

Модуль аналого-цифрового перетворення має до восьми вхідних каналів.

Вхідний аналоговий сигнал через комутатор каналів заряджає внутрішній конденсатор АЦП Chold. Модуль АЦП перетворить напругу, утримувану на конденсаторі Chold у відповідний 10-розрядний цифровий код методом послідовного наближення. Джерело опорної напруги може бути програмно обране з ліній Vdd, Vss, Vref+ або Vref-. Допускається робота модуля АЦП у SLEEP режимі мікроконтролера, при цьому як джерело тактових імпульсів для АЦП повинен бути вибраний RC генератор.

Для керування АЦП у мікроконтролері використовується 4 регістри:

- старший регістр результату ADRESH;

- молодший регістр результату ADRESL;

- регістр керування ADCON0;

- регістр керування ADCON1.

Регістр ADCON0 використовується для настроювання роботи модуля АЦП, а за допомогою регістра ADCON1 установлюється, які входи мікроконтролера будуть використовуватися модулем АЦП і у якому режимі (аналоговий вхід або цифровий порт введення/виведення).

Службові регістри АЦП

Регістр конфігурації АЦП ADCON0:

біти 6-7: ADCS1: ADCS0: Вибір джерела тактового сигналу

00 = Fosc/2;

01 = Fosc/8;

10 = Fosc/32;

11 = FRC (Внутрішній RC генератор модуля АЦП)

біти 5-3: CHS2: CHS0 Вибір аналогового каналу

000 = канал 0, (RA0/AN0);

001= канал 1, (RA1/AN1);

010 = канал 2, (RA2/AN2);

011 = канал 3, (RA3/AN3);

100 = канал 4, (RA5/AN4);

101 = канал 5, (RE0/AN5);

110 = канал 6, (RE1/AN6);

111 = канал 7, (RE2/AN7);

біт 2 : GO/-DONE: Біт статусу модуля АЦП

Якщо ADON = 1:

1 = модуль АЦП виконує перетворення (установка біта викликає початок перетворення);

0 = стан очікування;

біт 1 : Не використовується: Читається як '0'

біт 0 : ADON: Біт включення модуля АЦП

1 = модуль АЦП увімкнений;

0 = модуль АЦП вимкнений і він не потребляє струму.

Регістр конфігурації АЦП ADCON1:

біт 7: ADFM: Формат збереження 10-розрядного результату

0 = праве вирівнювання, шість старших біт ADRESH читаються як '0'

1 = ліве вирівнювання, шість молодших біт ADRESL читаються як '0'

біти 6-4: Не використовуються: читаються як '0'

біти 3-0: PCFG3: PCFG0: Керуючі біти конфігурації каналів АЦП

Таблиця 3.1 – Можливі конфігурації підключення каналів АЦП

PCFG3: PCFG0 AN7 RE2 AN6 RE1 AN5 RE0 AN4 RA5 AN3 RA3 AN2 RA2 AN1 RA1 AN0 RA0 VREF+ VREF- Кан./ VREF
A A A A A A A A VDD VSS 8/0
A A A A VREF+ A A A RA3 VSS 7/1
D D D A A A A A VDD VSS 5/0
D D D A VREF+ A A A RA3 VSS 4/1
D D D D A D A A VDD VSS 3/0
D D D D VREF+ D A A RA3 VSS 2/1
011x D D D D D D D D VDD VSS 0/0
A A A A VREF+ VREF- A A RA3 RA2 6/2
D D A A A A A A VDD VSS 6/0
D D A A VREF+ A A A RA3 VSS 5/1
D D A A VREF+ VREF- A A RA3 RA2 4/2
D D D A VREF+ VREF- A A RA3 RA2 3/2
D D D D VREF+ VREF- A A RA3 RA2 2/2
D D D D D D D A VDD VSS 1/0
D D D D VREF+ VREF- D A RA3 RA2 1/2

Робота модуля АЦП



У регістрах ADRESх зберігається 10-розрядний результат аналого-цифрового перетворення. Коли перетворення завершене, результат перетворення записується до регістра ADRESх, після чого скидається біт GO/-DONE (ADCON0<2>) і встановлюється прапорець переривання ADІF.

Після включення й настроювання АЦП необхідно вибрати робочий аналоговий канал. Відповідні біти TRІ аналогових каналів повинні набудовувати канал порту введення/виведення на вхід. Перед початком перетворення необхідно витримати тимчасову паузу, розрахунок якої наведено у розділі.

Рекомендована послідовність дій для роботи з АЦП:

1. Настроїти модуль АЦП:

− настроїти лінії як аналогові входи, входи Vref+/- або цифрові канали введення/виведення (ADC0N1);

− вибрати вхідний канал АЦП (ADCON0);

− вибрати джерело тактових імпульсів для АЦП (ADCON0);

− увімкнути модуль АЦП (ADCON0).

Рисунок 3.1 – Структурна схема модуля АЦП

2. Настроїти переривання від модуля АЦП (якщо необхідно):

− скинути біт ADІ в '0';

− установити біт ADІE в '1';

− установити біт PEІE в '1';

− установити біт GІE в '1'.

3. Витримати паузу, необхідну для зарядки конденсатора Chold.

4. Почати аналого-цифрове перетворення:

− установити GO/-DONE біт в '1' (ADCON0).

5. Очікувати закінчення перетворення:

− чекати, поки біт GO/-DONE не буде скинутий у '0'; АБО

− очікувати переривання по закінченні перетворення.

6. Прочитати результат перетворення з регістрів ADRESх, скинути біт ADІF в '0', якщо це необхідно.

7. Для наступного перетворення необхідно виконати кроки починаючи з пункту 1 або 2. Час перетворення одного біта визначається як час Tad. Мінімальний час очікування перед наступним перетворенням повинен становити не менше 2Tad.

Рисунок 3.2 – Послідовність перетворення аналогового сигналу

Час заряду Chold – інтервал часу протягом якого на внутрішній конденсатор АЦП подається зовнішній сигнал. Час перетворення дорівнює
10 Tad, відлік починається з моменту установки в '1' біта GO. Сума цих двох часових інтервалів є тривалістю повного циклу перетворення АЦП. Існує мінімальний інтервал часу, протягом якого зовнішній сигнал подається на внутрішній конденсатор Chold, щоб гарантувати необхідну точність АЦП.

Часові вимоги до підключення каналу АЦП

Для забезпечення необхідної точності перетворення конденсатор Chold повинен повністю заряджатися до рівня вхідної напруги. Опори Rs і Rss безпосередньо впливають на час зарядки конденсатора Chold. Величина опору ключа вибірки (Rss) залежить від напруги живлення Vdd. Максимальне рекомендоване значення внутрішнього опору джерела аналогового сигналу 10 кОм. При менших значеннях опору джерела сигналу менше сумарний час перетворення.

Рисунок 3.3 – Схема аналогового входу АЦП

Після того, як буде вибраний один з декількох аналогових вхідних каналів, але перш ніж буде проводитися перетворення, повинен сплинути певний час. Для знаходження даного часу використовується рівняння:

,

де – час затримки підсилювача, – час зарядки конденсатору, – температурний коефіцієнт.

Мінімальний час заряду конденсатора Chold:

,

.

Примітка 1. Напруга джерела опорної напруги Vref не впливає на рівняння.

Примітка 2. Конденсатор Chold після перетворення не розряджається.

Примітка 3. Максимальне рекомендувати значення, внутрішнього джерела аналогового сигналу 10 кОм. Це необхідно для компенсації внутрішнього струму витоку.

Примітка 4. Після того, як перетворення завершене, необхідно програмно забезпечити затримку не менше 2.0 Tad, перш ніж почнете наступне перетворення. Протягом цього часу конденсатор Chold не підключений до вибраного вхідного каналу АЦП.

Вибір джерела тактових імпульсів для АЦП

Час одержання одного біта результату дорівнює TAD. Для 10-розрядного результату потрібно як мінімум 11.5 TAD. Параметри тактового сигналу для АЦП визначаються програмно, TAD може набути наступних значеннь:

− 2 Tosc;

− 8 Tosc;

− 32 Tosc;

− внутрішній RC генератор модуля АЦП (2 – 6мкс).

Для одержання коректного результату перетворення необхідно вибрати джерело тактового сигналу АЦП, що забезпечує час TAD не менше 1,6 мкс.

Таблиця 3.2 – Максимальне значення Fosc що задовольняє умову до TAD (для мікроконтролерів з нормальним діапазоном напруги живлення LC)

Джерело імпульсів АЦП Робоча частота Fosc, МГц
Джерело ADCS1:ADCS0 20 МГц 5 МГц 1,25 МГц 333,33 кГц
2 Fosc 100нс 400нс 1,6мкс 6мкс
8 Fosc 400нс 1,6мкс 6,4мкс 24мкс
32 Fosc 1,6мкс 6,4мкс 25,6мкс 96мкс
RC - генератор 2-6мкс 2-6мкс 2-6мкс 2-6мкс

Позначення: затінені осередки – нерекомендоване значення.

Примітка1. Типове значення часу Tad RC генератора АЦП дорівнює
4 мкс, може варіюватися від 2 мкс до 6 мкс.

Примітка2. Це значення виходить за межі мінімально допустимого часу Tad.

Примітка3. Для більш точного перетворення рекомендується вибрати інше джерело тактових імпульсів.

Примітка4. Коли тактова частота мікроконтролера більше 1МГц, рекомендується використати RC генератор АЦП тільки для роботи в SLEEP режимі.

Настроювання аналогових входів

Регістри ADC0N1 і TRІ відповідають за настроювання ліній АЦП. Якщо лінії мікросхеми настроюються як аналогові входи, то при цьому повинні бути встановлені відповідні біти в регістрі TRІS. Якщо відповідний біт скинутий у '0', вивод мікросхеми настроєний як цифровий вихід, зі значеннями вихідних напруг Voh або Vol.

Модуль АЦП функціонує незалежно від стану біт CHS2:CHS0 і біт TRІ.

Примітка 1. При читанні вмісту регістра порта нулі будуть установлені в тих розрядах, які були настроєні як аналогові входи. Настроєні на цифровий вхід канали будуть перетворювати вхідні аналогові рівні в цифрові, що однак не зробить впливу на точність перетворення.

Аналого-цифрове перетворення

У розділі “Робота модуля АЦП”показана послідовність дій для роботи з АЦП. Лінії настроєні як аналогові входи. Джерело опорної напруги – Vdd. Дозволено переривання від модуля АЦП. Джерелом імпульсів перетворення є RC генератор АЦП. Аналогове цифрове перетворення виконується з лінії AN0.

Скидання біта GO/-DONE в '0' під час перетворення призведе до його припинення. При цьому регістр результату (ADRES) не змінить свого вмісту. Після дострокового завершення перетворення необхідно забезпечити тимчасову затримку 2Tad. Витримавши необхідну паузу, можна почати нове перетворення установкою біта GO/-DONE в '1'.

Рисунок 3.4 – Послідовність одержання результату після установки

біта GO/-DONE в “1”

Примітка. Біт GO/-DONE і біт увімкнення АЦП повинні встановлюватися різними командами.

Виконання перетворення АЦП

BSF STATUS, RP0 ; Вибрати банк1
CLRF ADCON1 ; Настроїти входи АЦП
BSF PIE1, ADIE ; Дозволити переривання від АЦП
BSF STATUS, RP0 ; Вибрати банк 0
MOVLW 0xC1 ; Тактові імпульси від RC генератора ; АЦП
MOVWF ADCON0 ; Увімкнути АЦП, вибрати канал 0
BСF PIR1, ADIF ; Скинути прапор переривання від АЦП
BSF INTCON, PEIE1 ; Дозволити периферійне переривання
BSF INTCON, GIE ; Дозволити переривання в системі

; Витримати паузу, необхідну для заряду внутрішнього конденсатора Chold.

; Потім починати перетворення АЦП.

BSF ADCON, GО ; Старт перетворення. Чекати установку ; прапорця ADIF або скидання біта GO/- ; DONE при закінченні перетворення

Робота модуля АЦП у SLEEP режимі мікроконтролера

Модуль АЦП може працювати в SLEEP режимі мікроконтролера за умови, що джерелом імпульсів перетворення АЦП буде внутрішній RC генератор (ADCS1:ADCS0=11). При виборі RC генератора імпульсів модуль АЦП зробить затримку в один машинний цикл перед початком перетворення. Це дозволяє програмі користувача виконати команду SLEEP, тим самим зменшити "цифровий шум" під час перетворення. Після завершення перетворення апаратно скидається біт GO/-DONE в '0', результат перетворення зберігається в регістрах ADRESх. Якщо дозволено переривання від АЦП, то мікроконтролер вийде з режиму SLEEP. Якщо ж переривання було заборонено, то після перетворення модуль АЦП буде виключений, хоча біт ADON залишиться встановленим.

Якщо було вибране інше джерело тактових імпульсів АЦП (не внутрішній RC генератор), то виконання програмою інструкції SLEEP перерве процес перетворення й виключить модуль АЦП, залишивши встановленим біт ADON. Вимикання модуля АЦП зменшить струм споживання мікроконтролера.

Примітка. Для роботи модуля АЦП у SLEEP режимі необхідно вибрати внутрішній RC генератор (ADCS1:ADCS0=11), інструкція SLEEP повинна бути виконана відразу після команди, що встановлює біт GO/-DONE після перетворення АЦП

Абсолютна точність АЦП визначається сумарною помилкою, виходячи з помилки дискретизації, інтегральної помилки, помилки шкали, помилки зсуву й монотонності. Сумарна помилка визначається як максимальний розкид між поточним та ідеальним результатом для будь-якого значення. Абсолютна помилка АЦП менше ± 1 значущого біта при Vdd=VREF+, але вона зростає при відхиленні VREF+ від Vdd.

У деякому діапазоні напруг на аналоговому вході цифровий результат буде той самий. Це виникає через дискретизацію, що неминуча при перетворенні аналогової величини в цифровий формат. Помилка дискретизації становить ± 1/2 значущого біта, і єдиний спосіб зменшити її - збільшити розрядність АЦП.

Помилку зсуву становить різниця між результатом першого перетворення й ідеальним значенням. Ця помилка зрушує всю передатну функцію, і може бути врахована за допомогою калібрування. Помилка вноситься в результаті накладення струмів витоку й вихідного опору джерела сигналу.

Помилка підсилення виміряється як максимальне відхилення результату, скоректованого з урахуванням помилки зсуву. Ця помилка проявляється у вигляді зміни нахилу передатної функції. Помилка посилення може бути відкалібрована й урахована.

Помилка лінійності визначається як різниця в збільшенні вхідної напруги для одержання однакового збільшення вихідного коду й не піддається калібруванню. Інтегральна помилка обчислюється як відхилення результату, скоректованого з урахуванням помилки посилення.

Диференціальна помилка обчислюється як відхилення максимальної довжини коду результат від ідеальної довжини коду без обліку інших помилок.

У системах з низькою тактовою частотою краще використовувати вбудований RC генератор. У системах з високою робочою частотою – тактовий сигнал від основного генератора. Переважно використовується АЦП із TAD не більше 8 мкс, але не менше рекомендованої нижньої межі. Використання тактового сигналу від основного генератора дозволяє знизити вплив шумів від перемикання внутрішніх вентилів, тому що перемикання логіки АЦП відбувається синхронно з іншими пристроями, що неможливо при використанні убудованого RC генератора. Якщо канали цифрового введення/виведення постійно активні, втрата точності через шуми при перемиканні може бути значною.

У випадку використання АЦП у SLEEP режимі, джерелом тактового сигналу повинен бути вбудований RC генератор. У цьому режимі відсутні цифрові шуми, тому що інші блоки мікроконтролера зупинені, тому точність перетворення виходить висока.

Ефект скидання

При скиданні мікроконтролера значення всіх його регістрів установлюються за замовчанням. Скидання виключає модуль АЦП, а також процес перетворення, якщо він був початий. Усі лінії, використовувані модулем АЦП, як аналогові входи.

Використання ССР тригера

Аналого-цифрове перетворення може бути запущене за допомогою "тригера спеціальної події" – модуля ССР. Для цього необхідно, щоб біти CCPx3:CCPx0 (CCPxCON<3:0>) були запрограмовані як 1011 і був увімкнений модуль АЦП (біт ADON повинен бути встановлений в '1'). При спрацьовуванні тригера біт GO/-DONE буде встановлений в '1', тим самим, запускаючи перетворення, а вміст таймера TMR1 буде очищено. Таймер скидається й автоматично повторює запуск перетворення через певні проміжки часу. Користувачеві необхідно буде тільки вчасно зчитувати вміст регістрів ADRESх. До початку перетворення необхідно вибрати відповідний аналоговий канал, перш ніж "тригер спеціальної події" викличе установку біта GO/-DONE.

При вимкненому модулі АЦП (біт ADON скинутий в '0') сигнал "тригера спеціальної події" ігнорується, але таймер TMR1 продовжує працювати й скидатися.

Підключення до модуля АЦП

Якщо значення вхідної напруги перевищує на 0,2 V величину порогу живильних напруг (Vss і Vdd), то точність перетворення вийде за межі значень, обговорених у специфікації.

Іноді, для згладжування пульсацій вхідного сигналу, на вхід АЦП додається зовнішній RC ланцюжок. Значення опору R повинне вибиратися так, щоб загальний опір джерела сигналу був у межах рекомендованої величини
10 кОм. Будь-які зовнішні електронні компоненти, підключені до аналогового входу (конденсатор, стабілітрон та ін.), повинні мати низький струм витоку.

Передатна функція модуля АЦП

Ідеальна функція модуля АЦП працює за наступним правилом: перший біт значення вимірюваної аналогової величини буде встановлений, якщо вхідна напруга (VAІ) на аналоговому вході буде дорівнює 1 Lsb (Vref+/1024).

Завдання до теми

Розрахувати частоту дискретизації даних по кожному каналу АЦП. Варіанти вихідних даних наведено в табл. 3.3.

Таблиця 3.3 – Дані для розрахунку частоти дискретизації даних по кожному каналу АЦП

№ пор. R джерела сигналу, КОм Сhold, пФ Fosc, МГц Кількість біт дискретизації Кількість опитуваних каналів
3,57
3,57
3,57
3,57
3,57
3,57
3,57
5,32
5,32
5,32
5,32
5,32
5,32
5,32
5,32
7,85
7,85
7,85
7,85

 

Продовження таблиці 3.3

 

7,85
7,85
7,85
7,85
9,50
9,50
9,50
9,50
9,50
9,50
9,50

 

Контрольні питання

1. Що таке лічильник команд, які його призначення та принцип роботи?

2. Пояснити принцип роботи обчислюваного переходу.

3. Пояснити структуру апаратного стекуа.

4. Пояснити механізм роботи зі стеком та лічильником команд інструкцій call, return та retlw.

Література: [4, с. 107–113].


СПИСОК ЛІТЕРАТУРИ

1. MPASMTM руководство пользователя, – М. : ООО «Микро-Чип», 2001. – 62 с.

2. Справочник по среднему семейству микроконтроллеров PICmicroTM. – М. : ООО «Микро-Чип», 2002. – 601 с.

3. PIC16F62X. Однокристальные 8-разрядные FLASH CMOS микроконтроллеры компании Microchip Technology Incorporated. – М. : ООО «Микро-Чип», 2001– 148 с.

4. PIC16F68X. Однокристальные 8-разрядные FLASH CMOS микроконтроллеры компании Microchip Technology Incorporated – М.: ООО «Микро-Чип», 2002. – 184 с.

5. Офіційний сайт представництва компанії Microchip Technology Incorporated в Росії : [Електронний ресурс]. – Режим доступу: http://www.microchip.ru

 


ДОДАТОК А

Система команд Місrосhір РІС16Fxxx

 

Мнемоніка операнди Дія Командні цикли Вплив на прапорці Прим.
БАЙТ-ОРІЄНТОВАНІ ОПЕРАЦІЇ
ADDWF f,d d = f + d С, DC, Z 1,2
ANDWF f,d d = f AND w (логічне I) Z 1,2
CLRF f f = 0 Z
CLRW w = 0 Z  
COMF f,d d = ~f (інверсія) Z 1,2
DECF f,d d = f – 1 Z 1,2
DECFSZ f,d d = f – 1, якщо результат 0, то РС=РС + 2 1(2)   1,2,3
INCF f,d d = f + 1 Z 1,2
INCFSZ f,d d = f + 1, якщо результат 0, то РС=РС + 2 1(2)   1,2,3
IORWF f,d d = f OR w (логічне АБО) Z 1,2
MOVF f,d d = f Z 1,2
MOVWF f f = w    
NOP Немає операцій    
RLF f,d Зсув уліво з урахуванням переносу C 1,2
RRF f,d Зсув управо з урахуванням переносу C 1,2
SUBWF f,d d = f – w (віднімання) C, DC, Z 1,2
SWAPF f,d (d3 – d0) <-> (f7 – f4), (d7 – d4) <-> (f3 – f0)   1,2
XORWF f,d d = f XOR w (виключаючи АБО) Z 1,2
БІТ-ОРІЄНТОВАНІ ОПЕРАЦІЇ
BCF f,d Очищення біта b регістрі f   1,2
BSF f,d Установлення біта b регістрі f   1,2
BTFSC f,d Якщо біт b = 0, РС=РС + 2 1(2)  
BTFSS f,d Якщо біт b = 1, РС=РС + 2 1(2)  
ОПЕРАЦІЇ З КОНСТАНТАМИ І КЕРУЮЧІ ОПЕРАЦІЇ
ADDLW k w = w + k C, DC, Z  
ANDLW k w = w AND k (логічне АБО) Z  
CALL k Виклик підпрограми за адресою k    
CLRWDT Очищення сторожового (watchdog) таймера TO, PD  
GOTO k Перехід на позначку k    
IOLRW k w = w OR k (логічне АБО) Z  
MOVLW k w = k    
RETFIE Повернення з обробки переривання    
RETLW k Повернення підпрограми з w = k    
RETURN Повернення з підпрограми    
SLEEP Перехід до режиму енергозбереження TO, PD  
SUBLW k w = k – w C, DC, Z  
XORLW k w = w XOR k (виключаюче АБО) Z  

 

Опис полів команд:

Поле Опис
f Адреса регістра (від 0х00 до 0х7f)
w Робочий регістр (аккумулятор)
b Номер біта в 8-розрядному регістрі
k Константа (дані або мітка)
d Вказівник адреси результату операції: d = w – результат зберігається в регістрі w d = f – результат зберігається в регістрі f За замовчуванням d = f
label Назва мітки
PC Лічильник команд

ДОДАТОК Б

Схема пам'яті даних контролерів РІС16Fххх



Методичні вказівки щодо виконання практичних занять з навчальної дисципліни “Програмні засоби систем керування” для студентів денної та заочної форм навчання за напрямом 6.050201 – “Системна інженерія” (у тому числі скорочений термін навчання). Частина ІІ

Укладачі: асист. В. В. Заквасов,

асист. Є. В. Носач

 

Відповідальний за випуск зав. кафедри САУЕ Д. Й. Родькін

 

 

Підп. до др._______ . Формат 60x84 1/16. Папір тип. Друк ризографія.

Ум. друк. арк.____ . Наклад_ прим. Зам. №_____ . Безкоштовно.

 

 

Видавничий відділ

Кременчуцького національного університету

імені Михайла Остроградського

вул. Першотравнева, 20, м. Кременчук, 39600





sdamzavas.net - 2019 год. Все права принадлежат их авторам! В случае нарушение авторского права, обращайтесь по форме обратной связи...