Iн=Pн/Uн=0,5 Вт/11 В=45 мА (4.16)
В качестве выходного импульсного усилителя будем использовать цепочку параллельно соединенных инверторов микросхемы КР564ЛН1.
Определяем разделительную емкость С1. При ее расчете не учитывается выходное сопротивление импульсного усилителя, выполненного на микросхеме КР564ЛН1.
С1=1/(2´p´fн´Rдин)=1/(6,28´300 Гц´50 Ом)=10 мкФ (4.17)
Рассчитываем сопротивление R4. Для открытого транзистора справедлива следующая формула (Iк=1 мА - этой величиной задаемся).
R6=Uп/Iк=11 В/1 мА=11 кОм (4.18)
Определяем сопротивление R 8. Его величина влияет на коэффициент усиления DD2.5 (коэффициент усиления такой схемы не может быть больше 10 и при расчете мы будем полагать его равным 10). Сопротивление R12 нужно выбирать в 5 - 10 раз больше, чем выходное сопротивление транзисторного ключа на транзисторе VT6. Его можно принять равным 10 кОм.
R12=Kdd2.5´R14=10´10 кОм=100 кОм (4.19)
Теперь перейдем к расчету стабилизатора напряжения.
Сопротивление R13 задает величину тока, протекающего через стабилитрон (будем использовать КС156Г). Для стабилизации напряжения необходимо протекание тока порядка 1 мА.
Rст=(Uп-Uст)/Iст=(11 В - 5,6 В)/1 мА=6,4 кОм (принимаем 6,2 кОм),
(4.20)
где Uст- напряжение стабилизации.(справочная величина)[ ],
Iст- ток стабилизации. (справочная величина) [ ].
Емкость С13 предназначена для фильтрации высокочастотных составляющих. Ее можно выбрать равной 1 мкФ.
5. Разработка управляющей программы
5.1 Алгоритм управляющей программы
Схема алгоритма показана на рис. 5.1.
Абонентское устройство может находится в одном из четырех состояний:
- «ожидание»;
- «передача»;
- «прием»;
- «воспроизведение».
Режим «ожидание» является основным. В этом режиме на вход управления приемной и передающей ветвей подаются запрещающие сигналы. Индикаторы погашены.
В режиме «передача» разрешается работа передающей ветви подачей управляющего сигнала на соответствующий вход управления передающей ветвью. На вход подачи несущей ШИМ подается меандр частотой 20 кГц.
В режиме «прием» происходит прием адресной части сообщения при этом состояния управляющих выходов микроконтроллера не изменяются.
В режиме «воспроизведение» разрешается работа приемной ветви и подсвечивается соответствующий индикатор.
Рассмотрим работу вышеприведенного алгоритма.
На начальном этапе работы производится настройка соответствующих портов микроконтроллера и разрешается прерывание от линии. Далее осуществляется переход на процедуру сканирования нажатой клавиши. Выход из этой процедуры возможен только по нажатию клавиши или по прерыванию от линии. Процедуру обработки прерывания от линии мы рассмотрим несколько позже а сейчас остановимся на пояснении работы алгоритма, реализующего режим «передача».
При нажатии клавиши происходит выход из процедуры сканирования клавиатуры (включает в себя сканирование клавиатуры и проверку нажатия клавиши). При этом подсвечивается соответствующий индикатор. Далее определяется код нажатой клавиши. Затем проверяется канал на наличие сигналов и при их отсутствии в линию выдается адрес вызываемого абонента. Затем следует выдача адреса вызывающего абонента после чего происходит включение режима «передача» и гашение индикатора после чего абонент производит передачу сообщения по каналу связи. В процессе передачи сообщения контроллер проверяет отпущена ли клавиша и при отпущенной клавише происходит отключение режима «передача» и переход на процедуру сканирования клавиатуры (установка режима ожидания).
Рассмотрим теперь алгоритм работы подпрограммы, показанный на рис. 5.2.
При поступлении прерывания от линии контроллер выводит абонентское устройство из режима ожидания (процедуры сканирования клавиатуры) и запрещает прерывание от линии. Далее производится прием адресной части передаваемого сообщения (режим «прием»). Затем проверяется принятый адрес и если сообщение адресовано не нам то контроллер ожидает окончания передачи сообщения, после чего разрешает прерывания от линии.
Если сообщение адресовано нам то контроллером включается режим «воспроизведение», под которым понимается подключение приемной части абонентского устройства и подсветка соответствующего индикатора.
При наличии в канале паузы, равной величине 10 периодам ШИМ устанавливается состояние ожидания.
При разработке программы использовался программный продукт MPLABv.3.22 производства фирмы Microchip. Он представляет собой интегрированную среду, включающую в себя программный эмулятор, внутрисхемный эмулятор и встроенный текстовый редактор и распространяется свободно этой фирмой. Этот пакет поддерживает серии микроконтроллеров, начиная с PIC 16C5X и заканчивая PIC 17CXX. При разработке и отладке использовался програмный эмулятор этого пакета.
Рассмотрим структуру управляющей программы, которая включает в себя несколько модулей.
transmit.asm- модуль, содержащий подпрограмму генерации адресной части;
reciver.asm- модуль, в состав которого входит подпрограмма приема адресной части, поступившей на абонентское устройство;
int.asm- подпрограмма обработки прерывания;
delay.asm- подпрограмма, реализующая задержку;
canal.asm-- процедура проверки состояния канала;
System.asm- головная программа.
Scan.asm- модуль, включающий в себя подпрограммы сканирования клавиатуры и чтения собственного адреса.
Все подпрограммы, которые используются в головной программе, оформлены в виде модулей и подключаются к ней командой #include <filename>, где filename- полное имя подключаемого модуля, который должен находится в каталоге MPLAB. Для вызова процедуры генерации адреса необходимо включить в теле головной программы команду transmitcod. Предварительно необходимо занести в ячейку памяти по адресу 12 код, подлежащий передаче в канал связи (код клавиши заносится в старшую тетраду ячейки 12, собственный адрес заносится в младшую тетраду этой ячейки).
Прием и декодирование адресной части осуществляется командой recivecod. Принятый адрес заносится в ячейку 0D.
Для вызова процедуры задержки нужно включить команду
delay [timedelay], где timedelay- целое число, определяющее длительность задержки (значение timedelay, равное 1 соответствует задержке одного командного цикла, 2 - задержка на 4-е командных цикла, 3-на 6 командных циклов и т. д.).
Процедура scankeyb модуля scan.asm производит сканирование клавиатуры и при нажатии клавиши определяет ее код и помещает в ячейку памяти 0d. Процедура этого же модуля scanadres определяет собственный адрес и заносит его в ячейку памяти 0E.
Для работы программы резервируются следующие ячейки памяти.
0С - код клавиатуры;
0D- декодированный адрес;
0E- уникальный код абонентского устройства (собственный адрес абонентского устройства);
0F- счетчик циклов;
10 - длительность задержки;
12 - адресная часть, передаваемое по каналу;
Программой используются линии порта В для связи с клавиатурой и каналом связи (линии RB4 -RB7 подключаются к клавиатуре, линия RB0 - к линии связи через ключевой каскад на транзисторе) ввиду того, что обработка данных осуществляется по прерыванию (вызов прерывающей программы осуществляется по изменению состояния линии RB0).
Линии RB1 -RB2 являются управляющими и служат для переключения режимов работы абонентского устройства (RB1 - «прием», RB2 - «передача»).
Линии RA4, RA0 используются для управления клавиатурой и индикаторами.
Для совместимости с последующими моделями PIC 16F8X в программе не использовались команды TRIS и OPTION, поскольку они могут не поддерживаться в более новых моделях PIC контроллеров.
Далее приведен исходный текст головной программы и подключаемых модулей.
;System.asm
list p=16f84,f=inhx8m;основная программа
#INCLUDE P16f84.INC
#INCLUDE scan.asm
#INCLUDE canal.asm
#INCLUDE int.asm
#INCLUDE transmit.asm
org 0
goto begin
org 4
int;процедура обработки прерывания
begin bsf status,rp0 ;настройка портов
bsf trisb,rb0;RB0 наввод
bcf trisb,rb3;RB3 на вывод
bsf trisa,ra4;настройка на ввод RA4
bcf trisa,ra0;настройка на вывод RA0
bcf status,rp0
bcf portb,1;отключение аналоговой части от линии
bcf portb,2
bcf porta,0;отключение подсветки
scanadres;чтение собственого адреса
bsf intcon,gie;разрешение прерываний по RB0
bsf intcon,inte
scankeyb;сканирование клавиатуры и определение кода нажатой клавиши
;проверка канала на наличие сигналов
movlw 5;загрузка счетчика цикла
movw 0f;
decfsz 0f,1
canal;процедура проверки канала
bcf portb,rb0;генерация старт-бита
delay 12;задержка на 25 мкс
bsf portb,rb0
movf 0c,0;формирование адресной части
movfw 12;пересылка кода клавиши
transmitcod;выдача адреса получателя в канал
swapf 0e,0
movf 0e,0;пересылка кода абонентского устройства
movfw 12
transmitcod;выдача адреса отправителя в канал
bsf portb,rb2;включить режим "передача"
bcf porta,ra0;отключение подсветки
bcf status,rp0;настройка RB0 на вывод
bsf trisb,rb0;
bcf status,rp0
inver1 btfss porta,ra4;проверка отпуска клавиши
goto inver;переход на процедуру инверсии линии rb3 c задержкой
bcf portb,rb2;выключение режима "передача"
goto begin
;инверсия входа несущей ШИМ c задержкой
inver comf portb,1;