
- •Розділ 6 однокристальні мікроконтролери з cisc-архітектурою
- •6.1. Архітектура і функціональні можливості однокристальних мікроконтролерів
- •6.2. Система команд
- •6.4. Застосування однокристального мікроконтролера 83c51fa для керування двигуном постійного струму
- •6.5. Архітектура і функціональні можливості 16-розрядних однокристальних мікропроцесорів серії mcs 196/296
- •Контрольні запитання
6.4. Застосування однокристального мікроконтролера 83c51fa для керування двигуном постійного струму
Двигуни постійного струму широко використовують у промислових і побутових пристроях. У багатьох випадках важливим є прецизійне керування швидкістю обертання двигуна та можливість зміни напряму обертання. Наприклад, двигун постійного струму у побутовій техніці магнітного звукозапису має обертатися зі сталою швидкістю. Зміна напряму обертання досягається зміною полярності напруги, що подається або на колекторну обмотку або на обмотку збудження.
Використання ОМК 83C51FA дає змогу здійснювати керування двигуном постійного струму з реалізацією широтно-імпульсної модуляції напруги, яка подається на обмотку збудження чи на колекторну обмотку. На базі ОМК 83C51FA можна запрограмувати до п'яти широтно-імпульсних модуляторів.
Однокристальний мікроконтролер 83C51FA — це 8-розрядний мікроконтролер, основою якого є архітектура 8051, але він має кілька нових функцій, зокрема існує масив програмних лічильників — РСА (Programmable Counter Array). Масив складається з 16-розрядного таймера PC А та п'яти окремих модулів. Таймер РСА має два 8-розрядних регістри — CL (молодший байт) та СН (старший байт), які доступні для всіх модулів. Причому таймер РСА можна запрограмувати на використання вхідних даних з чотирьох різних джерел. Максимальна частота лічення — 4 МГц, тобто 1/4 частоти генератора. Окремі виводи порту Р1використовуються для взаємодії кожного модуля і таймера із зовнішніми пристроями. Якщо виводи порту не використовуються для роботи модулів РСА, їх можна використати як лінії звичайного порту введення-виведення.
Модулі РСА можуть бути запрограмовані на режим захоплення події (capture) або режим порівняння,який має такі напрями: програмний таймер; режим високошвидкісного виведення, режим широтно-імпульсного модулятора (PWM); режим сторожового таймера (watchdog-таймера) (лише для четвертого модуля). Кожний модуль має 8-розрядний регістр режиму — ССАРМп (табл. 6.13) та 16-розрядний регістр порівняння-захоплення, який складається з двох 8-розряд них регістрів CCAPnL і ССАРпН, де п може набувати значення від 0 до 4.
Таблиця 6.13. Позначення бітів регістра режиму ССАРМп
Біт |
Позначення |
Призначення |
7 |
- |
- |
6 |
ЕСОМп |
Біт дозволу функції порівняння; ЕСОМп = 1 для функцій, що потребують порівняння вмісту регістрів порівняння-захоплення із вмістом 16-розрядного таймера, наприклад функцій програмованого таймера, високошвидкісного виведення, watchdog-таймера |
5 |
САРРп |
Біт захоплення за переднім фронтом сигналу |
4 |
CAPNn |
Біт захоплення за заднім фронтом сигналу |
3 |
МАТп |
Біт визначення збігу вмісту регістрів захоплення-порівняння із вмістом 16-розрядного таймера |
2 |
TOGn |
Біт дозволу виведення за умовою збігу вмісту регістрів захоплення-порівняння із вмістом 16-розрядного таймера |
1 |
PWMn |
Біт дозволу генерації сигналу широтно-імпульсного модулятора за збігом молодшого байта вмісту регістра порівняння-захоплення та молодшого байта вмісту таймера РСА |
0 |
ECCCFn |
Біт дозволу генерації переривання за прапорцем порівняння-захоплення CCFn регістра CCON |
Установленням відповідних бітів у регістрах режимів ССАРМп можна запрограмувати кожний модуль на функціонування в одному з режимів — захоплення події або порівняння.
Режим захоплення події. Подією називають будь-яку зміну рівня сигналу на входах. Однокристальний мікрокон-тролер можна запрограмувати на визначення таких подій:
• кожного переходу рівня вхідного сигналу зі стану «0» у стан «1» {САРРп =1);
• кожного переходу рівня вхідного сигналу зі стану «1» у стан «0» (CAPNn =1);
• будь-якого переходу рівня сигналу (САРРп - 1 та CAPNn = 1).
Після того, як запрограмована подія відбулася, час настання цієї події, відлічений таймером РСА разом з інформацією про стан входів записується у стек подій FIFO. Операцію запису часу події у стек називають захопленням події. Якщо встановлено біт дозволу ECCFn, захоплення події супроводжується генерацією запиту переривання ЦП на обслуговування модуля.
Режим порівняння. Якщо модуль запрограмовано на функціонування в одному з підрежимів порівняння (програмований таймер, високошвидкісний вивід, watckdog-таямер), програма завантажує у регістри захоплення-порівняння величину, яка порівнюється з вмістом 16-розрядного таймера; ОМК генерує переривання у разі збігу цих величин.
У підрежимі програмованого таймера встановлюється прапорець переповнення у разі збігу значень таймера і регістра захоплення-порівняння.
Підрежим високошвидкісного виводу призначений для генерації заданих подій у певний час. Час задається значенням регістру захоплення-порівняння ССАРп.
У підрежимі сторожового таймера генерується переривання, якщо деяка ділянка програми виконується за більший час, ніж заданий у регістрі. Це дає змогу уникнути «зависання» програми.
Підрежим широтно-імпульсного модулятора — єдиний режим, що використовує лише 8-розрядний регістр захоплення-порівняння. У старший байт (ССАРпН) обраного модуля завантажується значення від 0 до FFH. Це значення переноситься у молодший байт того самого модуля і порівнюється з молодшим байтом регістра таймера РСА. За умови CL<CCAPnL на відповідному виводі встановлюється стан логічного нуля; за умови CL>CCAPnL — стан логічної одиниці.
Крім регістрів ССАРМп для забезпечення роботи таймера РСА введено ще два регістри спеціальних функцій — CCON та CMOD. Регістр CCON (табл. 6.14) допускає бітову адресацію. Адреса регістра CCON — 0D8H, значення для скидання - 00x00000В.
Регістр CMOD (табл. 6.15) не допускає адресацію окремих бітів. Адреса регістра CMOD — 0D9H, значення для скидання — 00xxx000В.
Якщо один з модулів запрограмований у режим широтно-імпульсного модулятора, у старший байт регістра порівняння слід завантажити значення від 0 до 255, яке визначає коефіцієнт заповнення широтно-імпульсного модулятора. Для ОМК 83C51.FА завантаження 0 в ССАРпН відповідає коефіцієнту заповнення 1, а 255 (OFFh) — коефіцієнту заповнення 0,004. Часові діаграми та значення коефіцієнта заповнення широтно-імпульсного модулятора і регістра ССАРпН зображено в табл. 6.16.
Таблиця 6.14. Позначення бітів регістра CCON
Біт |
Позначення |
Призначення |
7 |
CF |
Прапорець переповнення таймера |
6 |
CR |
Запуск таймера РСА |
5 |
— |
Не використовується |
4 |
CCF4 |
Прапорці модулів, які використовуються для визначення модуля, що генерує переривання РСА
|
3 |
CCF3 |
|
2 |
CCF2 |
|
1 |
CCF\ |
|
0 |
CCF0 |
Таблиця 6.15. Позначення бітів регістра CMOD
Біт |
Позначення |
Призначення |
5 |
— |
Не використовується |
4 |
— |
-«- |
3 |
— |
-«- |
2 |
CPSI |
Біти, що визначають джерело тактування таймера РСА: 00 — внутрішній генератор, Fosc/12 01 — внутрішній генератор, Fosc/4 10 — переповнення таймера 0 11 — зовнішній сигнал (введення з Р1.2) |
1 |
CPS0 |
|
0 |
ECF |
Дозвіл переривання за прапорцем CF |
Таблиця 6.16. Часові діаграми і значення коефіцієнта заповнення широтно-імпульсного модулятора
Коефіцієнт заповнення |
Значення регістра ССАпН |
Вихідний сигнал широтно-імпульсного модулятора |
1 |
00 |
_______________________ |
0,9 |
25 |
|
0,5 |
128 |
|
0,1 |
230 |
|
0,004 |
255 |
|
Запуск таймера РСА здійснюється встановленням біта CR (див. табл. 6.14) регістра CCON, який допускає бітову адресацію. Встановлення і скидання цього біта здійснюється відповідними бітовими командами — CLR bit на SETB bit (див. табл. 6.11).
Приклад 6.1. Запрограмувати модуль 2 для генерації широтно-імпульсного модулятора-сигналу для ланцюга керування двигуном.
Програма має вигляд:
MOV |
CMOD,#06 |
Обирається зовнішній тактовий сигнал |
MOV |
ССАРМ2,#42Н |
Встановлюється режим широтно-імпульсного модулятора |
MOV |
ССЛАР2Н,#0 |
Значення нуля відповідає коефіцієнту заповнення 100 % (5 В) |
SETB |
CR |
Запуск таймера |
END |
|
|
Принципову схему модуля керування двигуном постійного струму зображено на рис. 6.28 .
Схема містить ОМК 83C51FA з колами скидання і синхронізації, спеціалізовану ВІС драйвера L293, двигун та імпульсний датчик швидкості 30137. Імпульси ТТЛ-рівня з виходу датчика надходять на вхід Р1.6 ОМК. Залежно від частоти цих імпульсів ОМК збільшує або зменшує коефіцієнт заповнення широтно-імпульсного модулятора на виводах Р1.4, Р1.5, реалізуючи таким чином регулювання швидкості обертання двигуна.
Рис. 6.28. Принципова схема модуля керування двигуном постійного струму