Передача данных с помощью лазерной указки
Преимущества лазерного канала перед радиоканалом заключаются в том, что он, во – первых, не создаёт радиопомех; во – вторых, является более конфиденциальным; в – третьих, может применяться в условиях воздействия высокого уровня электромагнитных излучений.
Принципиальная схема передатчика представлена на Рис.1. Передатчик состоит из шифратора команд, выполненного на микроконтроллере ATtiny2313 (DD1), выходного блока – на транзисторах ВС847В (VT1, VT2) и интерфейса RS-232, который, в свою очередь, состоит из разъёма DB9-F (на кабель) (ХР1) и преобразователя уровней – на MAX3232 (DD3).
Цепь сброса микроконтроллера состоит из элементов DD2 (CD4011B), R2, C7. Выходной блок представляет собой электронный ключ, выполненный на транзисторе VT1, в коллекторную цепь которого через ограничитель тока на транзисторе VT2 включена лазерная указка. Питание передатчика осуществляется постоянным стабилизированным напряжением 9 – 12 В. Микросхемы DD1, DD2, DD3 питаются от напряжения 5В, которое определяется стабилизатором 78L05 (DA1).
Контроллер DD1 запрограммирован в среде BASCOM, что позволяет подавать ему команды с персонального компьютера (ПК) через интерфейс RS-232, с терминала Bascom, используя функцию «эхо».
Микроконтроллер имеет тактовую частоту 4Мгц от внутреннего генератора. Пачки импульсов частотой около 1,3 Кгц с вывода ОС0А (РВ2) поступают на выходной блок. Количество импульсов в пачке определяется номером команды, поступившей с ПК.
Для ввода команды необходимо нажать на клавиатуре ПК любую клавишу, затем при появлении надписей «Write command» и «Enter №1…8» ввести цифру от 1 до 8 и нажать клавишу «Enter».
Программа для микроконтроллера передатчика «TXlaser» состоит из основного цикла (DO…LOOP) и двух подпрограмм обработки прерываний: по приёму (Urxc) и по переполнению таймера 0 (Timer0).
Для получения выходной частоты 1,3 КГц таймер сконфигурирован с коэффициентом деления частоты (Prescale) = 1024. Кроме того, счёт начинается с нижнего значения Z = 253 (при высоком уровне на РВ2) и доходит до 255. Происходит прерывание по переполнению таймера, при обработке которого осуществляется переключение вывода РВ2, а таймеру вновь задаётся значение Z = 253. Таким образом, на выходе РВ2 появляется сигнал частотой 1,3 КГц (см. Рис.2). В этой же подпрограмме количество импульсов на РВ2 сравнивается с заданным, и в случае их равенства таймер останавливается.
В подпрограмме обработки прерывания по приёму задаётся количество импульсов, которое необходимо передать (1 – 8). В случае, если это количество будет больше 8, в терминал выдаётся сообщение «ERROR».
Во время работы подпрограммы на выводе PD6 присутствует низкий уровень (светодиод HL1 выключен), а работа таймера остановлена.
В основном цикле на выводе PD6 – высокий уровень, и светодиод HL1 включён.
Текст программы «TXlaser»:
$regfile = "attiny2313a.dat"
$crystal = 1000000
$hwstack = 40
$swstack = 16
$framesize = 32
Config Pind.0 = Input 'UART - RxD
Config Portd.1 = Output 'UART - TxD
Config Portd.6 = Output 'светодиод HL1
Config Portb.2 = Output 'выход OC0A
'конфигурац.таймера0-коэфф.деления=1024:
Config Timer0 = Timer , Prescale = 1024
Stop Timer0 'останов таймера
Dim N As Byte 'определение переменных '
Dim N0 As Byte
Const Z = 253 'нижниий предел счёта таймера для вых.частоты=1,3КГц
Timer0 = Z
On Urxc Rxd 'подпрограмма обраб.прерывания по приёму
On Timer0 Pulse 'подпрограмма обраб.прерывания по переполнению
Enable Interrupts 'разрешение прерываний
Enable Urxc
Enable Timer0
Do 'основной цикл
Set Portd.6 'включение светодиода HL1
Loop
Rxd: 'подпрограмма обработки прер. по приёму
Reset Portd.6 'выключение светодиода
Stop Timer0
M1:
Print "Write commad"
Input "Enter № 1...8:" , N0 'ввод команды
If N0 > 8 Then 'ограничение номера команд
Print "Error"
Goto M1
End If
N0 = N0 * 2
N0 = N0 - 1 'заданное значение кол-ва импульсов в пачке
Toggle Portb.2
Start Timer0 'запуск таймера
Return
Pulse: 'подпрограмма обработки прерыв.по переполнению
Stop Timer0
Toggle Portb.2
Reset Portd.6 'выключение светодиода
Timer0 = Z
N = N + 1 'приращение кол-ва импульсов
If N = N0 Then 'если число импульсов = заданному
N = 0
N0 = 0
Waitms 500 'задержка 0,5с
Else
Start Timer0 'иначе, продолжить счёт
End If
Return
End 'end program
Передатчик выполнен на печатной плате размерами 46х62 мм (см. Рис.3). Все элементы, кроме микроконтроллера, SMD – типа. Микроконтроллер ATtiny2313 применён в корпусе типа DIP. Его рекомендуется располагать в панели для DIP микросхем TRS (SCS) – 20, чтобы иметь возможность «безболезненно» перепрограммировать.
Печатная плата передатчика TXD.PCB находится в папке «FILE PCAD».
Принципиальная схема приёмника лазерного канала представлена на рис.4. На входе первого усилителя DA3.1 (LM358N) фильтр низкой частоты, образованный элементами СЕ3, R8, R9 и имеющий частоту среза 1КГц, ослабляет фоновые помехи 50 -100 КГц от осветительных приборов. Усилители DA3.2 и DA4.2 усиливают и увеличивают длительность принятых импульсов полезного сигнала. Компаратор на DA4.1 формирует выходной сигнал (единица), который поступает через инверторы микросхемы CD4011D (DD2) - DD2.1, DD2. Cигнал синхронно приходит на контакты микроконтроллера ATtiny2313 (DD1) – T0 (PB4) и РВ3. Таким образом, Timer0, работающий в режиме счёта внешних импульсов и Timer1, отмеряющий время этого счёта, запускаются синхронно. Контроллер DD1, выполняющий функцию дешифратора, отображает принятые команды 1…8 установкой лог.1 на выводах PORTB соответственно РВ0…РВ7, при этом приход последующей команды сбрасывает предыдущую. При приходе команды «8» на РВ7 появляется лог.1, которая с помощью электронного ключа на транзисторе VT1, включает реле К1.
Питание приёмника осуществляется постоянным напряжением 9 -12В. Аналоговая и цифровая части питаются от напряжений 5В, которые определяются стабилизаторами типа 78L05 DA5 и DA2.
В программе «RXlaser» Timer0 сконфигурирован, как счётчик внешних импульсов, а Timer1, как таймер, считающий период прохождения максимально возможного количества импульсов (команда 8).
В основном цикле (DO…LOOP) Timer1 включается при принятии первого импульса команды (К=0), происходит сброс условия разрешения включения таймера Z=1.
В подпрограмме обработки прерывания по совпадению cчёта Timer1 со значением максимально возможного счёта считывается и устанавливается в PORTB номер команды. Устанавливается так же условие разрешения включения Timer1- Z=0.
Текст программы «RXlaser» :
$regfile = "attiny2313a.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
Ddrb = 255 'PORTB-все выхода
Portb = 0
Ddrd = 0 'PORTD-входа
Portd = 255 'подтяжка PORTD
Config Timer0 = Counter , Prescale = 1 , Edge = Falling 'как счётчик импульсов
Config Timer1 = Timer , Prescale = 1024 , Clear Timer = 1 'как таймер
Stop Timer1
Timer1 = 0
Counter0 = 0
'определение переменных:
Dim X As Byte
Dim Comm As Byte
Dim Z As Bit
Dim K As Bit
X =80
Compare1a = X 'кол-во имп. в регистре совпадения
Z = 0
On Compare1a Pulse 'подпрограмма прерывания по совпадению
Enable Interrupts 'разрешение прерываний
Enable Compare1a
Do 'основной цикл
If Z = 0 Then 'первое условие включения таймера
K = Portd.3
If K = 0 Then 'второе условие включения таймера
Start Timer1
Z = 1
End If
End If
Loop
Pulse: 'подпрограмма обраб.прерыв.по совпадению
Stop Timer1
Comm = Counter0 'считывание из счётчика внешних импульсов
Comm = Comm - 1 'определение номера бита в порту
Portb = 0 'обнуление порта
Set Portb.comm 'установка бита,соответ.номеру команды
Z = 0
Counter0 = 0
Timer1 = 0
Return
End 'end program
Программы «TXlaser» и «RXlaser» находятся в папке Lazer_prog.
Приёмник расположен на плате размерами 46х62 мм (см. Рис 5). Все компоненты – SMD типа, за исключением микроконтроллера, который необходимо разместить в панели для микросхем DIP типа TRS(SCS) – 20.
Настройка приёмника сводится к установке сквозного коэффициента передачи и порога срабатывания компаратора. Для решения первой задачи необходимо подключить осциллограф к выводу 7 DA4.2 и подбором величины R18 установить такой сквозной коэффициент передачи, при котором максимальная амплитуда шумовых выбросов, наблюдаемых на экране, не будет превышать 100 мВ. Затем осциллограф переключается на вывод 1 DA4.1 и подбором резистора (R21) устанавливается нулевой уровень компаратора. Включив передатчик и направив луч лазера на фотодиод, необходимо убедиться в появлении прямоугольных импульсов на выходе компаратора.
Печатная плата приёмника RXD.PCB находится также в папке FILE PCAD.
Повысить помехозащищённость лазерного канала возможно с помощью модуляции сигнала поднесущей частотой 30 – 36 КГц. Модуляция пачек импульсов происходит в передатчике, приёмник же содержит полосовой фильтр и амплитудный детектор.
Схема такого передатчика (передатчик 2) изображена на Рис.6. В отличии от рассмотренного выше передатчика 1 передатчик 2 имеет генератор поднесущей, настроенный на частоту 30 КГц и собранный на слотах DD2.1, DD2.4.. Генератор обеспечивает модулирование пачек положительных импульсов.
Приёмник лазерного канала с поднесущей частотой (приёмник 2) собран на отечественной микросхеме К1056УП1 (DA1). Схема приёмника изображена на Рис.7. Для выделения командных импульсов к выходу микросхемы DA1 10 подключены амплитудный детектор с фильтром низкой частоты и нормализатор импульсов, собранные на логических элементах DD3.1, DD3.2, диодной сборке DA3 и C9, R24. В остальном схема приёмника 2 совпадает со схемой приёмника 1.
Если вы хотите заказать печатные платы, то сайт www.Avr.ru предоставляет эту услугу.
Автор andre