Projekt bariery świetlnej

Transkrypt

Projekt bariery świetlnej
SYSTEMY MIKROPROCESOROWE
W
AUTOMATYCE.
Projekt bariery świetlnej.
Prowadzący:
Dr M. Wnuk
Wykonał:
Marcin Kawalec
1. Wstęp.
Zadaniem projektowym było zaprojektowanie i wykonanie bariery świetlnej. Układ ten
powinien reagować odcięciem napięcia lub alarmem w przypadku gdy zostanie przerwany
strumień światła wyznaczający barierę.
Układ taki może mieć zastosowanie przy ograniczeniu sceny robota lub jako czujnik antywłamaniowy.
2. Opis układu.
Układ składa się z diody laserowej-nadajnika, fototranzystora-odbiornika, układu mikroprocesora i układu zasilania.
Podstawowymi elementami układu zasilania (Rys. 1.) jest: transformator TR1, prostownik
M1, stabilizator LM7805 i kondensatory filtrujące C1...C4. Tranzystory T1 i T2 pełnią rolę
kluczy.
Z układu tego zasilany jest obwód mikroprocesora (złącze J1), dioda laserowa (złącze J2)
oraz obwód fototranzystora (złącze J4).
Układ mikrokontrolera jest standardowym układem HC05. Na płytkę wyprowadzono
wyjścia z portów PA0, PA6, PA7.
Port PA0 jest portem wejściowym (wejście 1 złącza J3) i przyjmuje stany zależne od fototranzystora. Porty PA6 i PA7 są portami wyjściowymi. PA6 sygnalizuje alarm, PA7 włącza
diodę laserową (wejście 2 złącza J3).
2.1. Zasada działania.
Sygnał z portu wyjściowego PA7 podawany jest na bazę tranzystora T1. Jeśli na PA7 pojawi się „1” (+5V), tranzystor przejdzie w stan przewodzenia i załączy obwód diody D1.
Jeżeli baza fototranzystora To, zostanie wysterowana światłem z diody, wówczas zamknie on
obwód i poprzez klucz T2 na port PA0 zostanie podane +5V („1”). W przypadku przerwania
bariery na PA0 podany zostanie stan niski.
Warunkiem poprawnego działania jest precyzyjne nakierowanie strumienia światła na fototranzystor(Rys.3.a), ponieważ przy małych odchyłkach baza nie jest wystarczająco oświetlana i tranzystor może nie przewodzić.
2.2. Zakłócenia.
Może się zdarzyć, że fototranzystor będzie oświetlony przez światła odbite lub ciągłe.
Zakłócenia te eliminowane będą w sposób mechaniczny poprzez umieszczenia fototranzystora w rurce (Rys. 3.b,) do której będzie kierowany strumień światła z diody oraz poprzez modulację sygnału świetlnego.
Rys.1. Schemat układu zasilania.
Rys.3.
a
b
Nadajnik
Odbiornik
Rurka
Fototranzystor
3. Program.
Przy starcie programu, podczas inicjalizacji porty mikrokontrolera ustawiane są na poziom niski aby ustrzec się przed stanami nieustalonymi. Następnie definiowane są porty wejściowe i wyjściowe.
W pierwszej części spr1-włączana jest dioda („1” na PA7) i sprawdzany jest stan na porcie PA0. Jeśli stan jest wysoki (bariera nie przezwana) to program skacze do spr2. W przeciwnym przypadku skacze do procedury alarm gdzie ustawia PA6 na „1” i pozostaje w pętli
nieskończonej.
W procedurze spr2 dioda jest wyłączana i sprawdzany jest stan na PA0 jeśli jest „0” to skacze
do spr1, jeśli „1” to uruchamiany jest alarm. Kod programu załączony jest na końcu sprawozdania.
4. Wnioski.
Zaprojektowany układ działał poprawnie na symulatorze. Problemem może być zbyt
wolna reakcja fototranzystora na zmiany świecenia diody. Należałoby w tym przypadku dodać pętle opóźniające po włączaniu i wyłączaniu diody.
Zaletą układu jest wykorzystanie wąskiego strumienia światła laserowego oraz odporność
na zakłócenia pochodzące od innych źródeł światła.
Wadą natomiast jest duża wrażliwość i wymagana dokładność ustawienia nadajnika i odbiornika w jednej osi.
Kod programu:
#include 'h705j1a.frk'
ORG RAM
;wartosc RAM jest zdefiniowana w H705J1A.FRK,
*
ORG EPROM
;wartosc EPROM jest zdefiniowana w H705J1A.FRK,
*
* INIT - Procedura inicjacji.
*
Po rozpoczeciu w punkcie "start" program wywoluje te procedure
*
w celu ustawienia kierunku portow, zainicjowania (wpisania
*
poczatkowych wartosci) zarezerwowanych bajtow pamieci RAM
*
i zezwolenia na rozne przerwania uzywanw w tym programie.
INIT:
clr porta
;ustawia zera na porty (pozbycie sie stanow neustalonych)
lda #$c0
;PA7-PA6 - wyjscia, PA5-PA0 - wejscia
sta ddra
rts
;powrot z podprogramu
***********************************************************************
* START - glowny program.
START:
jsr init
;wywolanie podprogramu inicjacji
spr1
bset 7,porta
; 1 na PA7 wlaczenie diody
nop
; opoznienie
brset 0,porta,spr2 ; sprawdzenie czy PA0=1, skok do spr2
brclr 0,porta,alarm ; jezeli PA0=0 skok do alarm
spr2
bclr 7,porta
; 0 na PA7 zgaszenie diody
nop
; opoznienie
brclr 0,porta,spr1 ; spr czy PA0=0, skok do spr1
brset 0,porta,alarm ; jezeli PA0=1 skok do alarm
alarm
bset 6,porta
bra alarm
; 1 na PA6 - alarm
; skok do siebie
***********************************************************************
**
ORG VECTORS
;ta wartosc jest zdefiniowana w H705J1A.FRK,
;dyrektywa "dw" (define word) wypelnia dwa
;kolejne bajty wartoscia podana w argumencie
dw
dw
dw
dw
start
start
start
start
;adres procedury obslugi przerwania zegarowego
;... i zewnetrznego
;SWI nie uzywamy
;adres startu po resecie
***********************************************************************
**
* MOR - Rejestr opcji maski - komorka typu EPROM
org MOR
fcb $20
;ta wartosc jest zdefiniowana w H705J1A.FRK,
; włączenie rezystora wewnetrznego