Обробка частотних і часових сигналів 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Обробка частотних і часових сигналів



Мета роботи

Вивчити методи частотного перетворення. Навчитися здійснювати вимірювання частоти, періоду, тривалості дискретних сигналів за допомогою програмованих таймерів/лічильників ОМК AT89C51, а також з використанням зовнішнього еталонного генератора.

Теоретичні відомості

Блок таймерів лічильників призначений для підрахунку зовнішніх імпульсів (функція лічильника), реалізація програмно-керованих затримок та виконання функції задання часу (функція таймера).

У системах автоматичного керування часто приходиться вимірювати такі величини як: частота f, період T, тривалість τ, зсув фаз φ. Для цього застосовується перетворення частота-код. В залежності від того, який саме параметр потрібно виміряти застосовують різні підходи.

 

Рис.8.1. Діаграма вимірювання частоти.

 

При вимірюванні частоти fx проводиться підрахунок імпульсів вхідного сигналу протягом фіксованого відрізку часу Т0 (рис.8.1). Тоді частоту знаходять як

.

Такий метод прийнятний для вимірювання частот більше 100Гц. Верхня межа обмежується швидкодією елементів схеми і розрядністю лічильників.

 

Рис.8.2. Вимірювання періоду слідування методом підрахунку кількості імпульсів відомої частоти.

Вимірювання частот нижче 100Гц заміняється вимірюванням періоду Тх. При цьому виробляється підрахунок імпульсів фіксованої частоти f0 за інтервал рівний або кратний вимірюваному періодові мал.8.3.

У такий же спосіб виміряється тривалість імпульсу, відмінність полягає лише в тому, що при вимірі тривалості імпульсу не треба поділяти частоту на два.

Рис.8.3. Вимірювання зсуву фаз.

У мікроконтролері AT89C51 реалізовано два 16-бітних таймери/лічильники: T/С0 і T/С1. Обидва можуть бути налаштовані як таймер, або як лічильник. Коли Timer/Counter налаштований як таймер, то його регістр (ТНх – старші 8 бітів та TLx – молодші) інкрементується з кожним машинним циклом. Таким чином, таймер рахує машинні цикли. Оскільки машинний цикл складається з 12 коливань генератора тактових імпульсів, то швидкість підрахунку складає 1/12 цієї частоти. Якщо Timer/Counter налаштований як лічильник, то його регістр інкрементується коли відбувається зміна „1→0” на функціональній лінії Т0, Т1. Коли високий рівень на вході в одному машинному циклі змінюється низьким рівнем в наступному, значення лічильника збільшується. Нове значення лічильника заноситься в регістр на кроці S3P1, наступного машинного циклу, що слідує за циклом, в якому був визначений перехід від 1 до 0. Таким чином, необхідно два машинних цикли для встановлення переходу від 1 до 0, тому максимальна частота підрахунку складає 1/24 частоти генератора. Таймер/лічильники можуть працювати в чотирьох режимах: 13-бітний таймер, 16-бітний таймер, 8-бітний з авто-перезавантаженням, розділений таймер.

Функція таймера чи лічильника вибирається бітом в регістрі TMOD. Обидва таймери мають чотири режими роботи, які вибираються бітовими парами (М1, М0) в TMOD (див рис.7). Режими 0, 1, 2 однакові для обох таймерів/лічильників, а режим 3 відрізняється (див. Табл.8.1).

 

Gate M1 M0 Gate M1 M0
Timer 1 Timer 0

Рис.8.4. Регістр конфігурації таймерів TMOD.

 

Gate – дозволяє керувати таймером від зовнішнього виводу. Коли біт встановлений, то Timer/Counter працює при умові, що на INTx високий рівень та біт TRx (біт ввімкнення таймера)встановлений в 1. У випадку, коли Gate=0, то таймер вмикається лише бітом TRx.

– 0 відповідає за режим таймера, а 1 – лічильника.

М1 – біт вибору режиму.

М0 – біт вибору режиму.

 

Таблиця 8.1. Опис режимів роботи таймерів.

М1 М0 Режим Опис
      Режим 13-бітного таймера. 8-бітний таймер ТНх з 5-бітним TLx подільником.
      Режим 16-бітного таймера. Подільник частоти відсутній.
      Режим 8-бітного з авто завантаженням. В ТНх знаходиться (записується програмно) значення, яке завантажується в TLx після кожного переповнення. Наприклад, якщо TH=200, то при переповнені регістра TL (наступний машинний цикл після значення TL=255)підрахунок буде розпочинатися не з нуля а з 200.
      Режим роздільного таймера. (Timer 0). TL0 є 8-бітним таймером/лічильником, робота якого керується бітами Timer 0. ТН0 8-бітний таймер, контролюється бітами Timer 1. Робота Timer1 заблокована.  

 

Для керування роботою таймерів використовується регістр управління TCON (рис.8.5).

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Рис.8.5. Регістр управління таймерами TCON.

 

TF1(TF0) – прапор переповнення Т/С1(0). Якщо TF = 0, то переповнення не відбулося. Якщо TF = 1, то відбулося переповнився Т/С.

TR1(TR0) – керування роботою таймерів/лічильників. Якщо TR = 1, то Т/С увімкнений. Якщо TR = 0, то Т/С вимкнений.

IE1(IE0) – біти запиту зовнішніх переривань по входу .

IT1(IT0) – біти, що визначають тип переривання по входу .

Таймери в мікроконтролерах також використовуються для введення/виведення сигналів із широтно-імпульсною модуляцією PWM (Pulse Width Modulated). PWM сигнал часто використовується для передачі значення аналогового сигналу в цифрову систему чи з неї. Сигнал має періодичну повторювану форму, де тривалість імпульсу пропорційна значенню переданої аналогової величини (рис. 8.6).

 

Рисунок 8.6. Сигнал із широтно-імпульсною модуляцією PWM

 

PWM-сигнали часто використовується для керування електродвигунами, задаючи швидкість обертання чи положення валу в електроприводі.

 

Приклад програми. Сформувати прямокутні імпульси з періодом 2 сек. та скважністю 50%, при напрузі високого рівня засвічувати світлодіоди.

 

IE data 0A8h;адреса регістра дозволу перериваньIP data 0B8h;адреса регістра пріоритетів перериваньTCON data 088h;адреса регістра контролю перериваньTMOD data 089h;настроювання таймерівTR1 bit TCON.6;адресація біта TR1 регістра TCONTF1 bit TCON.7;адресація біта TF1 регістра TCONTL1 data 8Bh;адреса регістра Т/С1 (молодші біти) TH1 data 8Dh;адреса регістра Т/С1 (старші біти) ORG 0;стартовий вектор jmp start start: mov IE,#000000000b;заборона усіх видів переривань mov IP,#000001000b;встановлення найвищого пріоритету для;переривань від ТС1 mov TMOD,#000010000b;налаштування Т/С1 в режим 16-бітного таймера mov R1,#0 mov R0,#0;R0 використовується для підрахунку переповнень loop: setb TR1;запуск таймера loop1: іnc A mov DPTR,#0A001h movx @DPTR,A jb TF1,mit1;перехід на mit1 при переповненні Т/С1 jmp loop1mit1: clr TF1;очистка біта переповнення clr TR1;зупинка роботи Т/С1 inc R0 cjne R0,#010,loop;перехід на startloop якщо к-сть;переповнень рівна 10 jmp startloop startloop: mov R0,#00;обнулення регістра R0 cjne R1,#01,mit2; mov A,#0255;підпрограма формування на ЦАП mov DPTR,#0F000h;напруги високого рівня і засвічення movx @DPTR,A;діодів mov DPTR,#0A006h; movx @DPTR,A; mov R1,#0;запис у R1 нуляjmp loopmit2: mov A,#0 mov DPTR,#0F000h movx @DPTR,A mov DPTR,#0A006h movx @DPTR,A mov R1,#01jmp loopEND

 

 


Програма роботи

1. Вивчити принцип роботи з таймерами/лічильниками.

2. Ознайомитися з принциповою електричною схемою плати розширення.

3. Розробити програми згідно варіанту.

4. Завантажити в стенд розроблені програми та провести їх тестування.

5. Оформити звіт.



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 342; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.84.32 (0.007 с.)