Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
Для подключения светодиода оптрона к выходу МК следует воспользоваться изученным ранее способом подключения обычного светодиода. Мы попросим Вас выполнить такое подключение в задании №8 в конце данной главы.
5.7.3. Инвертор напряжения
В предыдущем параграфе Вы научились управлять скоростью вращения электрического двигателя при помощи мощных полупроводниковых ключей. Этот способ отличается высоким коэффициентом полезного действия, поскольку потери в МДП-транзисторе во время протекания тока невелики. А как насчет изменения направления вращения двигателя? Если прикладная задача требует не только регулирования скорости вращения двигателя, но и изменения направления вращения, то предыдущая схема на одном МДП-транзисторе не может быть использована. Однако, увеличив число управляемых ключей схемы до четырех, мы получим необходимое решение.
На рис. 5.20,а представлена схема однофазного мостового инвертора напряжения, которая позволяет регулировать скорость вращения двигателя методом ШИМ при любом направлении вращения двигателя. В англоязычной литературе эту схему называют «H bridge», что в переводе означает «мост в форме буквы H».
а) Схема однофазного мостового инвертора напряжения. Полупроводниковые ключи SW1…SW4 могут находиться в замкнутом или разомкнутом состоянии.
б) Состояние ключей инвертора при вращении двигателя по часовой стрелке
в) Состояние ключей инвертора при вращении двигателя против часовой стрелки
г) Состояние ключей инвертора при остановленном двигателе
Рис. 5.20. Однофазный мостовой инвертор напряжения
В каждом плече моста установлен управляемый полупроводниковый ключ. Обмотка двигателя подключена между двумя средними точками. При включенных транзисторах sw1 и sw4 обмотка двигателя подключается левым концом к положительной шине питания, а правым — к отрицательной. Ток протекает в указанном на рис. 5.20,б направлении, и двигатель вращается по часовой стрелке. Если транзисторы sw1 и sw4 выключить, и включить транзисторы sw2 и sw3, то ток будет протекать в противоположном направлении (рис. 5.20,в), а двигатель будет вращаться против часовой стрелки. Если одновременно включить одну из пар транзисторов sw1 и sw2 или sw3 и sw4, то обмотка двигателя будет закорочена, и он постепенно остановит свое вращение. Ни в коем случае нельзя одновременно включать пары транзисторов sw1 и sw3 или sw2 и sw4. Произойдет короткое замыкание источника питания.
Реальная схема мостового инвертора, конечно, имеет специальные средства защиты от короткого замыкания как в цепи нагрузки, так и в цепи каждого плеча инвертора. При значительных превышениях номинального тока эта схема автоматически отключит источник питания, и полупроводниковые ключи останутся работоспособными.
В заключение отметим, что малые потери в МДП-транзисторах позволяют разместить мостовую схему инвертора в корпусе DIP16! Так ИС SN754410NE компании Texas Instruments содержит в себе сразу два таких моста. Она позволяет коммутировать напряжения от 4,5 до 36 В при максимальном токе нагрузки 1 А. Упрощенная схема одного мостового инвертора в составе SN754410NE приведена на рис. 5.21.
а) Функциональная схема
Входы Состояние двигателя 1А 2А 0 0 Обмотка не подключена, возможно свободное вращение 0 1 Вращение против часовой стрелки 1 0 Вращение по часовой стрелке 1 1 Запрещенное состояниеб) Таблица состояний
Рис. 5.21. Функциональная схема однофазного мостового инвертора в составе специализированной ИС SN754410NE
5.8. Кодовый замок
В этом заключительном примере мы объединили ранее полученные знания по аппаратному подключению и программному обслуживанию различных устройств ввода и вывода информации. В каждом параграфе данной главы мы рассмотрели какой-то отдельный тип устройства ввода/вывода. И для каждого устройства привели фрагмент программного кода, который необходим для его обслуживания. Эти фрагменты могут быть использованы Вами в реальных разработках. На примере электронного кодового замка мы покажем Вам, как воспользоваться полученными ранее знаниями.
Рассмотренная ранее матричная клавиатура используется для ввода четырех символов кода доступа. Если последовательность этих символов совпадает с эталонной последовательностью, которая хранится в памяти программы, то доступ разрешается. Если же введенная последовательность символов ошибочная, то доступ блокируется. Для информирования пользователя о состоянии системы доступа используется символьный ЖК индикатор.
Далее мы приводим функциональную схему аппаратных средств, блок-схему алгоритма работы и полную программу управления кодовым замком.
5.8.1. Схема подключения периферийных устройств
Электрическая схема подключения клавиатуры на 16 клавиш и символьного ЖК индикатора к выводам портов МК семейства 68HC12 приведена на рис. 5.22. Линии порта PORT B обслуживают матричную клавиатуру. В соответствии с электрической схемой линии PORTB[0]…PORTB[3] должны работать в режиме вывода, а линии PORTB[4]…PORTB[7] — в режиме ввода. Восьмиразрядная шина данных интерфейса индикатора подключена к выводам порта PORT P. Так же, как и в примере параграфа 5.6.2, мы будем производить только операции записи в контроллер управления индикатором. Поэтому порт PORT P будет постоянно работать в режиме вывода. Линии управления индикатором подключены к выводам PORTDLC2: PORTDLC3.
Рис. 5.22. Функциональная схема аппаратных средств для системы кодового замка
Можно убедиться, что рассмотренные ранее по отдельности схемы подключения клавиатуры и ЖК индикатора полностью повторены, вплоть до конкретных выводов портов. Поэтому мы сможем воспользоваться ранее приведенными программами управления без каких-либо изменений.
5.8.2. Программа управления
На рис. 5.23 представлена блок-схема алгоритма управления кодовым замком. Ниже приведен полный текст программного кода программы управления, составленный по этой блок-схеме алгоритма.
Рис. 5.23. Блок-схема алгоритма управления кодовым замком
/*------------------------------------------------------------------------*/
/* filename: lock.c программа управления электронной системой доступа */
/* Число символов кода доступа равно 4. Правильная кодовая комбинация:C963*/
/* Аппаратная конфигурация: */
/* PORTB 8 линий интерфейса клавиатуры */
/*PORTP 8 линий шины данных интерфейса ЖК индикатора */
/*PORTDLC2 RD/WR, PORTDLC3 E. */
/*------------------------------------------------------------------------*/
/*подключаемые файлы*/
#include <912b32.h>
#include <stdio.h>
#include <math.h>
/*используемые функции*/
char which_key(unsigned int keypress); //определение, какая клавиша
//нажата
void delay_100us(void); //задержка 100 мкс
void delay_5ms(void); //задержка 5 мс
void initialize_lcd(void); //инициализация контроллера ЖК
//индикатора
void initialize_key(void); //инициализация портов для
//клавиатуры
void putchars(unsigned char с); //запись одного символа в индикатор
void putcommands(unsigned char d); //запись одной команды в индикатор
void lcd_print(char *string); //запись в индикатор строки символов
char keypad(unsigned int keypress, int row);
void main(void) {
int first = 0х01; //инициализация служебных переменных для опроса
int second = 0х02; //клавиатуры
int third = 0х04;
int fourth = 0х08;
int i,j,k, count = 0;
unsigned int keypress;
char key;
int length=4;
char pin[] = {'С', '9', '6', '3'}; //задание эталонной последовательности
//символов
char code[4]; //массив для введенной пользователем