Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт
Шрифт:
Интервал:
Закладка:
// Функция newline производит запись во все знакоместа одной код символа " "
// -------------------------------------------------------------------------
void newline() {
int i;
for(i=0; i<16; i++) LCD_char(' ');
}
// ------------------------------------------------------------------------
// Функция LCD_output производит преобразование кодов ASCII строки символов
//в коды табл. рис. 5.15 для отображения на дисплее и передает эту строку в
//ОЗУ буфера экрана дисплея
// ------------------------------------------------------------------------
void LCD_output(char s[]) {
int n = 0;
while (s[n] != ' ') {
LCD_char(s[n]);
++n;
}
}
// --------------------------------------------------------------------
// Функция delay формирует временную задержку длительностью в указанное
//число мкс
// --------------------------------------------------------------------
void delay(int usec) {
int i,j;
for(i=0; i<usec; i++) {
for(j=0; j < 7; j++) { }
}
}
// ------------------------------------------------------------------
// Функция write конфигурирует линии порта PORTP для вывода данных на
// дисплей
// ------------------------------------------------------------------
void write() {
DDRP = 0xFF; //Порт PORTP на вывод
}
// -------------------------------------------------------------------------
// Функция data производит запись одного символа в ОЗУ данных дисплея. Перед
// обменом с контроллером дисплея контролируется бит состояния, который
// свидетельствует о том, закончил контроллер выполнение предыдущей команды
// управления или нет. Затем на порт PORTP выставляется код символа и
// формируются необходимые сигналы управления
// -------------------------------------------------------------------------
void data(unsigned char n) {
status_wait();
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xF7; //C/D в 0
PORTDLC = PORTDLC & 0xFE; //WR в 0
PORTDLC = PORTDLC & 0xFB;
enable();
disable();
}
// -------------------------------------------------------------------
// Функция command производит передачу команды управления в контроллер
// дисплея
// -------------------------------------------------------------------
void command(unsigned char n) {
status_wait();
PORTP = n;
PORTDLC = 0xFF;
PORTDLC = PORTDLC & 0xFE;
enable();
disable();
}
5.7. Управление электрическим двигателем
В главе 4 мы рассмотрели применение способа широтно-импульсной модуляции для регулирования напряжения, приложенного к обмоткам электрического двигателя. Изменяя коэффициент модуляции, мы изменяли длительность импульсов напряжения на двигателе, сохраняя частоту следования этих импульсов неизменной. В результате, изменялось среднее значение напряжения на двигателе, и, как следствие, скорость его вращения. При обсуждении мы отметили, что ШИМ-сигнал может быть сформирован на одном из выходов МК, однако его мощности не будет достаточно для приведения двигателя во вращение. Поэтому между выходом МК и двигателем должны быть специальные электронные цепи, которые позволяют усилить по мощности, формируемый микроконтроллером ШИМ-сигнал. Мы рассмотрим примеры таких цепей в данном параграфе.
5.7.1. Силовые полупроводниковые ключи
Для подключения к обмоткам двигателя под управлением МК источника напряжения достаточной мощности могут быть использованы различные приборы: электромагнитные реле, твердотельные реле, биполярные транзисторы и некоторые другие типы транзисторов. В нашем примере мы будем использовать для этой цели мощные полевые транзисторы. В русскоязычной литературе их называют мощными МДП-транзисторами (МДП — Металл-Диэлектрик-Полупроводник), в англоязычной литературе используют аббревиатуру MOSFET (Metal Oxide Semiconductor Field-Effect Transistor). Мы остановились на этом типе полупроводниковых приборов потому, что в современных коммутаторах для двигателей малой и средней мощности используются именно эта элементная база.
Перед тем, как исследовать электронную схему усиления мощности, необходимую для управления электрическим двигателем от микроконтроллера, рассмотрим принцип действия МДП-транзистора.
МДП-транзистор — это управляемый напряжением полупроводниковый ключ. Он обладает очень высоким сопротивлением цепи управления, что удобно для микроконтроллера, который не может формировать больших вытекающих токов. В открытом состоянии падение напряжения на транзисторе мало по сравнению с другими типами полупроводниковых ключей аналогичной мощности. Поэтому энергия, рассеиваемая МДП-транзистором в режиме проводимости, также относительно невелика, что обеспечивает высокий коэффициент полезного действия полупроводникового коммутатора.
МДП-транзистор может работать как в режиме усиления сигнала, так и в ключевом режиме. Мы будем использовать МДП-транзистр в ключевом режиме для коммутации напряжения питания к обмотке двигателя во время длительности импульса ШИМ-сигнала.
МДП-транзистор имеет три электрода: сток (Drain), исток (Souse) и затвор (Gate). Затвор — это управляющий электрод транзистора, в то время как сток и исток — это электроды, по которым протекает коммутируемый транзистором ток. Схемное обозначение МДП-транзистора с каналом n-типа приведено на рис. 5.19,а. При отсутствии напряжения между затвором и стоком канал для протекания тока между стоком и истоком внутри полупроводниковой структуры транзистора отсутствует. Если на затвор подать положительное напряжение относительно истока, то внутри транзистора формируется канал для протекания тока от стока к истоку. Если снять с затвора напряжение, то этот канал исчезнет, и транзистор не сможет проводить ток между истоком и стоком. Мы получили управляемый полупроводниковый ключ!
а) Условное графическое обозначение n-канального МДП-транзистора (MOSFET)
б) Схема полупроводникового коммутатора для управления электрическим двигателем от МК
в) Схема управления МДП-транзистором с использованием твердотельного реле
Рис. 5.19. Управление электрическим двигателем от МК
В нашем примере мы использовали МДП-транзисторы IRF530 компании International Rectifier. Максимальное значение тока стока ID для этого транзистора равно 14 А. Это означает, что мы можем коммутировать нагрузку с номинальным током 14 А под управлением маломощного сигнала с выхода микроконтроллера. Отметим, что в настоящее время подобные мощные МДП-транзисторы с каналами n- и p-типа выпускаются на токи свыше 100 А.
На рис. 5.19,б показана схема включения электрического двигателя с управлением от микроконтроллера. Резистор R = 10 кОм в цепи управления обеспечивает путь для рассасывания заряда из области управляющего электрода, когда напряжение на затворе становится равным нулю. Также в схеме присутствует защитный диод, который установлен параллельно двигателю. Мы обсудим назначение этого диода несколько позже, при изучении схемы инвертора (раздел 5.7.3). В нашем примере на затвор транзистора подается управляющее напряжение около 5 В. При этом транзистор IRF530 может проводить ток около 4 А. Для увеличения тока нагрузки до 14 А следует повысить управляющее напряжение. Однако используемый в примере электрический двигатель приводится во вращение напряжением 12 В при токе нагрузки 1 А. Поэтому параметры напряжения управления от микроконтроллера для нашего случая вполне удовлетворяют требованиям МДП-транзистора.
5.7.2. Оптоэлектронная потенциальная развязка
Электрический двигатель — печально известный для инженеров-электроников источник электромагнитных помех. В процессе регулирования скорости вращения электрического двигателя, помехи в равной мере генерируются как самим двигателем, так и импульсным источником питания. Транзисторный коммутатор формирует на обмотке двигателя импульсы напряжения требуемой длительности. В момент выключения мощного МДП-транзистора реактивные элементы схемы сбрасывают накопленную во время протекания тока энергию в питающую сеть. В результате генерируются кратковременные выбросы напряжения в питающую сеть. Последнее может неблагоприятно сказаться на работе управляющего МК. В частности, из-за помех может произойти нарушение последовательности исполнения команд программы управления, или сбой в системе тактирования МК. И случится нарушение работы всей системы в целом.
Чтобы избежать столь неблагоприятного прогноза в работе системы, следует изолировать цепи управления, т.е. плату с МК 68HC12, от силовых цепей установки. Для этого могут быть использованы оптроны (рис. 5.19,в). Управляющая цепь МК подключается к цепи излучающего светодиода оптрона. Когда МК формирует сигнал на включение МДП-транзистра, через светодиод протекает ток. Энергия излучения светодиода по оптическому каналу, расположенному внутри ИС оптрона, достигает полупроводникового прибора на вторичной стороне, и переводит его в открытое состояние. Одним из приборов, относящихся к классу оптронов, является твердотельное реле (рис. 5.19,в). На вторичной стороне этого прибора установлен маломощный МДП-транзистор. Когда светодиод излучает, МДП-транзистор открывается, по цепи резистора протекает ток, и на затворе основного транзистора формируется положительное напряжение относительно истока. Основной транзистор включается, и к обмотке двигателя подключается напряжение источника питания.