Fotolaser - Twój domowy strażnik
Przedstawiamy kolejny tekst z naszego nowego cyklu "Zrób to sam". Tym razem szczegółowo wytłumaczymy Wam, jak stworzyć niezwykle przydatny, sterowany "pecetem" gadżet, a mianowicie... oparty na laserowej fotokomórce system zabezpieczający rodem z filmu "Mission Imposible", którego podstawowym elementem będzie popularny breloczek laserowy. Bez obawy - jest to projekt łatwy i przyjemny, a przy tym mocno edukacyjny. Jeśli przypadkiem masz w swoim pokoju 20-karatowy diament ( lub jakikolwiek inny cenny przedmiot ), nasz projekt pomoże Ci go zabezpieczyć przed kradzieżą - sieć laserowych promieni powinna skutecznie zniechęcić każdego intruza. Przy okazji poruszymy też tematykę przemysłowego standardu RS485 oraz stworzymy własny protokół komunikacyjny. Zaczynamy?
Fotokomórka jest urządzeniem detekcyjnym, umożliwiającym wykrycie przerwania wiązki światła. Składa się z dwóch zasadniczych elementów: źródła światła widzialnego lub niewidzialnego oraz z detektora reagującego na natężenie światła. W przypadku urządzenia dzisiaj prezentowanego, źródłem światła będzie "breloczek" laserowy zawierający w sobie diodę laserową. Jako detektora użyjemy fototranzystora lub fotodiody. Oba te elementy reagują na natężenie oświetlenia. Stosując je w odpowiednim układzie otrzymamy bardzo prosty, a zarazem skuteczny detektor.
Zaletą diody laserowej wraz z soczewką skupiającą jest to, że wytwarza ona wiązkę światła o bardzo dużej intensywności, dzięki czemu będzie można łatwiej odróżnić światło otoczenia od sygnału z fotokomórki. Nasze urządzenie wyposażymy w modulator, który będzie stanowił dodatkowe zabezpieczenie przed próbą oszukania odbiornika przez oświetlenie elementu światłoczułego np. latarką lub innym laserem.
Prezentowana fotokomórka jest elementem samodzielnym, wymagającym do swojej pracy zasilania 5V, jednak sama nie potrafi wszcząć alarmu po wykryciu naruszenia. W tym celu stworzyłem prosty program, stanowiący podstawę do dalszego rozwoju tego tematu, który będzie zbierał dane od czujników ( w naszym systemie będzie można mieć do 16 czujników - fotokomórek na jednej magistrali! ) i sygnalizował ich stany. Przez magistralę należy rozumieć parę przewodów, po których będzie przebiegać transmisja w standardzie RS485 - o tym standardzie powiemy sobie za chwilkę.
Atutem światła laserowego jest to, że może być ono praktycznie dowolną ilość ( w granicach rozsądku ) razy odbite od zwierciadeł dając efekt jak w "Mission Imposible" - siatki z promieni laserowych, których nie można przerwać, bo uruchomią system alarmowy.
Projekt składa się z:
- konwertera standardu RS485 <-> RS232 - używanego w komputerach PC,
- modułu fotokomórki laserowej.Co będzie potrzebne?
Do wykonania projektu potrzebne będą następujące podzespoły:
- breloczek z laserem,
- mikrokontroler ATtiny2313,
- transceivery standardu RS-485 ( SP481 ),
- transceiver standardu RS-232,
- potencjometr precyzyjny,
- fototranzystor lub fotodioda,
- garstka części elektronicznych - szczegóły na końcu artykułu.
Magistrala cyfrowa w standardzie RS485
W skład standardu RS485 wchodzi:
- różnicowy nadajnik,
- dwuprzewodowy toru transmisyjny,
- różnicowy odbiornik.
Transmisja w tym standardzie odbywa się po dwóch przewodach ( torze transmisyjnym - linie nazwane A i B ). Kodowanie stanów cyfrowych na magistrali odbywa się poprzez stworzenie różnicy napięć dodatniej lub ujemnej pomiędzy przewodami A i B toru. W tym standardzie za pomocą tylko dwóch przewodów transmisja przebiega w obie strony w trybie Half-Duplex, co oznacza, że albo nadajemy albo odbieramy dane. Do konwersji sygnałów różnicowych występujących na liniach A i B używa się transceiverów standardu RS485. Transceiver to skrót z ang. transmiter/receiver - nadajnik/odbiornik, oba zamknięte w jednej obudowie układu scalonego. W czasie, gdy transceivery ustawione są na odbiór danych, pomiędzy liniami A i B nie powinno występować napięcie, dzięki temu na magistrali może być jednocześnie zainstalowanych do 32 urządzeń, ponieważ wszystkie mogą "słuchać" tego, co się dzieje na magistrali. Maksymalną ilość urządzeń ogranicza moc nadajników - musisz wiedzieć, że każdy odbiornik wpięty do magistrali podczas odbioru
danych pobiera prąd - jak łatwo się domyśleć, że im więcej odbiorników, tym więcej prądu nadajnik musi podać.
Zaletą stosowania różnicowej transmisji danych jest duża odporność na zakłócenia. Przewody linii dodatkowo skręca się ze sobą, tworząc tzw. "skrętkę" - podobnie jak w sieci Ethernet - najczęściej stosowaną w sieciach komputerowych opartych o topologię gwiazdy. Zakłócenia emitowane przez różnego rodzaju urządzenia lub zjawiska atmosferyczne, rozkładają się równomiernie na obu liniach - to oczywiście podnosi potencjał całej linii, ale nie tworzy różnicy pomiędzy przewodami A i B, czyli nie wpływa na dane przenoszone po nich.
Standard RS485 jest powszechnie uznany jako standard przemysłowy, na jego bazie powstało wiele protokołów. Co sprawia, że tak chętnie się z niego korzysta? Oto kilka odpowiedzi:
- maksymalny zasięg to ok. 1500 m ( a nawet więcej ),
- prędkość transmisji do ok. 10 Mb/s ( przy krótszych odcinkach ),
- ekonomiczny nośnik danych: tylko dwa przewody,
- odporność na zakłócenia elektromagnetyczne.
Opis budowy i zasada działania konwertera RS232 <-> RS485
Konwerter jest bardzo prostym urządzeniem. W jego skład wchodzą:
- transceiver RS232,
- transceiver RS485,
- blok zasilacza,
- złącza - wyprowadzenia.
Schemat konwertera został oparty na oryginalnej nocie aplikacyjnej układów MAX232 oraz SP481 ( odpowiednik MAX481 ). Urządzenie nie jest skomplikowane. Jego głównym zastosowaniem będzie konwersja sygnałów standardu RS232 ( od -15V do +15V ) na sygnał różnicowy wykorzystywany w standardzie RS485. Dodatkowo konwerter służy do zasilania urządzeń współpracujących w naszym systemie, dlatego złącze zasilania zostało powielone - jedno jest wejściem - tu podłączamy zasilanie +12V np. z komputera PC, a drugie wyjściem - zasila pozostałe urządzenia przez bezpiecznik polimerowy, zapobiegając zwarciom i przypadkowemu uszkodzeniu zasilacza.Ogólny przebieg sygnałów ( danych ) przebiega następująco:
- przy transmisji z komputera sygnał jest konwertowany z RS232 na TTL ( 0-5V ), następnie wchodzi do nadajnika transceivera RS485 i tam poddawany jest konwersji na sygnał różnicowy.
- przy transmisji w stronę komputera sygnał nadany na magistralę przez dowolne urządzenie jest wykrywany przez odbiornik RS485, przekształcany na TTL, a następnie na RS232.
Do przeprowadzenia konwersji RS232 <-> sygnał TTL ( napięciowy 0-5V ) używamy transceivera MAX232. W jedną stronę redukuje on napięcie portu COM do standardu TTL, a w drugą, za pomocą przetwornic kondensatorowych, przekształca napięcie zasilania 5V do -9V i +9V, które są "zrozumiałe" przez port komunikacyjny komputera.
Wspomniałem wcześniej, że w standardzie 485 transmisja odbywa się w trybie half-duplex ( raz w jedną a raz w drugą stronę ). Zatem powstaje pytanie, kto kieruje kierunkiem przepływu danych? Odpowiedź: my. Wystawiając odpowiedni sygnał na linię RTS portu COM sterujemy kierunkiem przepływu. Sygnał z portu COM nie nadaje się bezpośrednio do podania na układ SP481, więc musi być poddany konwersji do odpowiedniego poziomu napięć. Z pomocą przyjdzie nam drugi kanał nadajnika w transceiverze RS232.
Do zasilenia konwertera użyjemy standardowego stabilizatora liniowego 78L05, który z pomocą dwóch kondensatorów ograniczy i ustabilizuje napięcie 5V potrzebne do zasilenia układów SP481 i MAX232.
Poniżej znajduje się schemat ideowy konwertera, jako załącznik można pobrać wzór płytki drukowanej.
Opis budowy i zasada działania fotokomórki laserowej
Fotokomórka jest urządzeniem mikroprocesorowym, opartym na mikrokontrolerze ATtiny2313 firmy Atmel. Ogólnych informacji na temat mikrokontrolerów można zaczerpnąć z mojego poprzedniego artykułu: "Święta IT, czyli choinka sterowana pecetem" - http://www.pcworld.pl/news/104185/100.html.
Urządzenie składa się z następujących bloków:
- mikrokontroler,
- detektor natężenia światła,
- źródło napięcia odniesienia,
- driver diody laserowej,
- zasilacz,
- konwerter standardu RS485.
Ogólnie urządzenie należy do nieskomplikowanych. Posiada minimalną ilość elementów elektronicznych. W celu uproszczenia, zrezygnowałem ze stabilnego rezonatora kwarcowego, na rzecz wbudowanego w mikrokontroler rezonatora RC, niewymagającego zewnętrznych elementów. W niektórych przypadkach poszczególne bloki funkcjonalne składają się z pojedynczych elementów. Zajmijmy się teraz ich omówieniem.Mikrokontroler do prawidłowego działania potrzebuje napięcia zasilania ok. 5V. Takie napięcie zagwarantuje stabilizator 78L05 ( taki sam jak w konwerterze ). Wraz z trzema kondensatorami ustabilizuje napięcie 5V, którego użyjemy do zasilenia całego urządzenia. Mikrokontroler do prawidłowego działania potrzebuje zewnętrznego rezystora 10 kilo om podciągającego ( pull-up ) do napięcia zasilania wyprowadzenie reset.
Nowym elementem ( nowym - w sensie nieopisanym w poprzednim artykule - http://www.pcworld.pl/news/104185/100.html ) jest komparator analogowy. Jest to element elektroniczny, który porównuje dwie wartości analogowe ( napięcia, zwykle w zakresie od 0 do 5V ) i na swoim wyjściu ustawia stan wysoki w zależności od tego, na którym wejściu jest większy sygnał. Komparator posiada dwa wejścia: pozytywne ( oznaczone znakiem '+' ) i negatywne ( '-' ). Jeżeli na wejściu pozytywnym sygnał jest większy niż na negatywnym, to komparator na swoim wyjściu ustawia stan wysoki. Jeżeli jest odwronie, to stan niski.
Komparatora będziemy używać do detekcji, czy natężenie światła jest wystarczająco mocne, aby uznać je za światło lasera. Jak już wiadomo, komparator potrzebuje napięcia wzorcowego, z którym będzie mógł porównać napięcie zmierzone na fototranzystorze ( lub fotodiodzie ). Takim źródłem napięcia odniesienia będzie potencjometr precyzyjny, który z jednej strony posiada jedno wyprowadzenie podpięte do masy, przeciwległe do "plusa" zasilania ( 5V ). Środkowe wyprowadzenie podłączymy bezpośrednio do wejścia pozytywnego komparatora w mikrokontrolerze. W zależności od położenia "pokrętła" potencjometru, na wejściu komparatora będzie się pojawiać napięcie od 0 do 5V. Komparator w mikrokontrolerze "widziany" jest jako rejestr, w którym na odpowiednim bicie znajduje się aktualny stan wyjścia komparatora.
Natężenie światła mierzone jest na fototranzystorze. Tranzystor ten ma emiter podłączony do masy, zaś kolektor do plusa zasilania poprzez rezystor 100 kilo om. Fototranzystor nie posiada wyprowadzonej bazy jako nóżki. Baza jest "odsłonięta" i poddawana działaniu światła. Podając na nią energię ( w postaci światła ) powodujemy spadek rezystancji kolektor-emiter fototranzystora i rozpoczęcie przewodzenia prądu. Im więcej prądu przepuszcza tranzystor, tym większy spadek napięcia występuje na rezystorze R3, który ma kilkakrotnie większą rezystancję od fototranzystora. Efekt działania jest taki, że im natężenie światła jest większe, tym mniejsze napięcie występuje na kolektorze fototranzystora. To właśnie kolektor podłączony jest jako negatywne wejście komparatora analogowego. Komparator porównuje oba napięcia, dzięki temu mikrokontroler wie, czy próg natężenia zadany potencjometrem został przekroczony. Jako ciekawostkę dodam, że napięcie na kolektorze fototranzystora w "świetle domowym" wynosi ok. 4,9V. Świecąc
na niego latarką spada do ok. 4,2V. Teraz uwaga: świecąc laserem spada do 0,3V! Dzięki temu łatwo odróżnić, laser od zwykłego światła.
Jako drivera lasera użyłem zwykłego tranzystora typu NPN - BC547. Emiter podłączyłem do masy, a kolektor do "minusa" zasilania lasera ( zwykle jest to sprężynka wewnątrz breloczka, do której przylegają baterie ). Laser podłączamy z drugiej strony do plusa zasilania 5V.
Wspomniałem wcześniej o modulatorze lasera. Modulatorem jest Timer0 w mikrokontrolerze. Na przemian włącza i wyłącza laser z dużą częstotliwością. Idea jest taka, aby przy włączonym laserze rozpoznać stan wysoki na komparatorze, następnie wyłączyć laser i rozpoznać stan niski. Taki zabieg gwarantuje nam, że nikomu nie uda się oszukać fotokomórki, przez oświetlenie np. innym laserem fototranzystora. Sprawdźcie sami!
Poniżej znajduje się schemat ideowy fotokomórki. Wzór płytki PCB jest dostępny jako załącznik.Montaż i uruchomienie
Składanie naszego projektu zaczynamy od przygotowania płytek drukowanych. Szczegółowy opis jak to zrobić, został przedstawiony w poprzednim artykule - http://www.pcworld.pl/news/104185/100.html dotyczącym sterownika do lampek choinkowych.
Po przygotowaniu płytek drukowanych, montaż rozpoczynamy tradycyjnie od płaskich elementów ( rezystory ), później lutujemy podstawki pod układy scalone, stabilizatory, złącza i na koniec duże kondensatory. Fototranzystor w obudowie diody LED 5mm lutujemy krótszą nóżką do masy, czyli tego dużego obszaru ( tzw. poligonu ), który "opływa" ścieżki dookoła.
Jeżeli wszystko jest prawidłowo podłączone, to podłączamy zasilanie. Możemy użyć zewnętrznego zasilacza 7-12V, albo podpiąć się bezpośrednio do zasilania w komputerze ( żółty to +12V, a czarny GND - masa lub, jak kto woli, 0 ). Na złączach zasilania układów, masa zawsze jest po lewej stronie, a dodatni biegun zasilania po prawej. Ja jako zasilacza używam starej ładowarki od telefonu komórkowego ( na wyjściu ma 9V ). Jeżeli na wejściach układów napięcie to 5V i nic się "nie smaży", to odłączamy zasilanie i osadzamy układy scalone w podstawkach.
Po zamontowaniu i sprawdzeniu wszystkiego podłączamy zasilanie. Podłączamy teraz programator. Opis programowania także został zamieszczony w moim poprzednim artykule - http://www.pcworld.pl/news/104185/100.html. Ładujemy plik 'foto.hex' i programujemy układ. Teraz należy zdjąć "fuse bit" CKDIV8 - nie będzie on nam potrzebny.
Urządzenie jest gotowe do pracy. Podłączamy teraz fotokomórkę do konwertera za pomocą dwóch przewodów. Podłączamy teraz laser. Jeżeli laser emituje wiązkę światła, to znaczy, że wszystko jest OK. Podłącz jeszcze port COM do konwertera:
Poniżej przedstawiam pewien sposób instalacji fotokomórki, który zapewnia podwójne sprawdzenie przecięcia wiązki. Wiązka dopiero z odbicia od zwierciadła trafia w element światłoczuły, dzięki temu intruz może dwukrotnie zostać namierzony. Laser można zainstalować niżej niż fotokomórkę, przez co można mieć za jednym razem detekcję na dwóch wysokościach.Program PC oraz protokół
Fotokomórka byłaby bezużyteczna bez programu ( urządzenia ), pełniącego funkcję centralki. W naszym przypadku centralką będzie komputer PC wyposażony w port COM oraz specjalny program.
Program jest dosyć intuicyjny i nie wymaga opisu. Odkrywanie go pozastawiam wam! Oczywiście do pobrania jest pełne źródło programu. Został napisany w środowisku Borland Turbo C++ 2006.
Pobierz plik - http://www.idg.pl/ftp/pc_13394/laser.1.0.pl.html
Przy pierwszym podłączeniu fotokomórki do komputera, zgłasza się ona pod adresem 255. Jest to domyślny adres, po zaprogramowaniu każdy czujnik taki posiada, dlatego konieczna jest zmiana adresów dla innych czujników ( jeżeli masz więcej niż jeden ).
Protokół jest tekstowy, a to oznacza, że dane są wysyłane w kodach ASCII. Jeden bajt reprezentują dwa znaki z zakresu od '0' do '9' i 'A' do 'F' ( szesnastkowo 0-F ). W protokole wyróżniamy trzy rodzaje ramek:
- ramka pytająca - request, zaczyna się od znaku '?', następnie podaje się adres czujnika i numer żądanego rejestru.
- ramka zapisu - preset, zaczyna się od znaku '$', następnie podaje się adres urządzenia, numer rejestru, i wartość jaką chcemy zapisać.
- ramka odpowiedzi - zaczyna się od znaku '#' następnie jest adres czujnika, który odpowiadał, numer rejestru i dwa bajty wartości danego rejestru ( 16 bitów ).
Każda ramka kończy się sumą kontrolną i znakami końca wiersza CR LF ( o kodach 13 i 10 ). Sumę kontrolną podajemy w postaci jednego bajtu ( kodowanego w ASCII ) po przecinku.
Przykłady:
?AABB,00
$AABBCC,00
AABB1234,00 - ramka odpowiedzi czujnika, gdzie AA to adres, BB rejestr, 1234 16 - bitowa wartość rejestru, jak wyżej reszta.Sumę LRC liczymy sumując kolejno wartości kodów ASCII kolejnych znaków ramki począwszy od znaku rozpoczęcia ramki '?', '$' lub '#' do przecinka włącznie. Po odebraniu ramki przez urządzenie, sumowane są znaki i porównywane z wartością podaną po przecinku ( najpierw tę wartość należy poddać konwersji z ASCII na liczbę ).
Zachęcam do analizy kodu firmware fotokomórki, zamieściłem tam szczegółowy opis prawie każdej linijki kodu, dzięki temu łatwiej jest zrozumieć działanie urządzenia.