Передача данных с помощью лазерной указки

 

     Преимущества  лазерного  канала  перед  радиоканалом  заключаются  в  том,  что  он,  во – первых,  не  создаёт  радиопомех;  во – вторых, является  более  конфиденциальным;  в – третьих,  может  применяться  в  условиях  воздействия  высокого  уровня  электромагнитных  излучений.

     Принципиальная  схема  передатчика  представлена  на  Рис.1.  Передатчик  состоит  из  шифратора  команд,  выполненного  на    микроконтроллере  ATtiny2313  (DD1),  выходного  блока – на  транзисторах  ВС847В  (VT1, VT2)  и  интерфейса  RS-232,  который, в  свою  очередь,  состоит  из  разъёма  DB9-F  (на  кабель)  (ХР1)  и  преобразователя  уровней – на  MAX3232  (DD3). 

 

 

Рис. 1 - Схема передатчика 1

     Цепь  сброса  микроконтроллера  состоит  из  элементов  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  сравнивается  с  заданным,  и  в  случае  их  равенства  таймер  останавливается.

 

 

Рис. 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,  чтобы  иметь  возможность  «безболезненно»    перепрограммировать.

 

 

Рис. 3 - Плата передатчика 1

     Печатная  плата  передатчика  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.

Рис. 4 - Схема приемника 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.

 

 

Рис. 5 - Плата приемника 1

 

     Настройка  приёмника  сводится  к  установке  сквозного  коэффициента  передачи  и  порога  срабатывания  компаратора.  Для  решения  первой  задачи  необходимо  подключить  осциллограф  к  выводу  7  DA4.2  и  подбором  величины  R18  установить  такой  сквозной  коэффициент  передачи,  при  котором  максимальная  амплитуда  шумовых  выбросов, наблюдаемых  на  экране,  не  будет  превышать  100 мВ.  Затем  осциллограф  переключается  на  вывод  1  DA4.1  и  подбором  резистора  (R21)  устанавливается  нулевой  уровень  компаратора.  Включив  передатчик  и  направив  луч  лазера  на  фотодиод,  необходимо  убедиться  в  появлении  прямоугольных импульсов  на  выходе  компаратора.
     Печатная  плата  приёмника  RXD.PCB  находится  также  в  папке  FILE  PCAD.

     Повысить  помехозащищённость  лазерного  канала  возможно  с помощью  модуляции  сигнала  поднесущей   частотой  30 – 36 КГц. Модуляция  пачек  импульсов  происходит  в  передатчике,  приёмник  же  содержит   полосовой  фильтр  и  амплитудный  детектор.

    Схема  такого  передатчика  (передатчик 2)  изображена  на  Рис.6.  В  отличии  от  рассмотренного  выше  передатчика 1  передатчик 2  имеет  генератор  поднесущей,  настроенный  на  частоту  30 КГц  и  собранный  на  слотах  DD2.1,  DD2.4..  Генератор  обеспечивает  модулирование  пачек  положительных  импульсов.

 

 

    Рис. 6 - Схема передатчика 2

Приёмник лазерного  канала  с  поднесущей  частотой   (приёмник 2)  собран  на  отечественной  микросхеме  К1056УП1  (DA1).  Схема  приёмника  изображена  на  Рис.7.  Для  выделения  командных  импульсов  к  выходу  микросхемы  DA1  10  подключены  амплитудный  детектор  с  фильтром  низкой  частоты  и  нормализатор  импульсов,  собранные  на  логических  элементах  DD3.1,  DD3.2,  диодной  сборке  DA3  и  C9,  R24.  В  остальном  схема  приёмника 2  совпадает  со  схемой  приёмника 1.

 

  Рис. 7- Схема приемника 2

 

     Если  вы  хотите  заказать  печатные  платы,  то  сайт  www.Avr.ru  предоставляет  эту  услугу.    

                   
     Автор andre