Czytnik tagów RFID (Sokymat, 125 kHz)

Czytnik tagów RFID (Sokymat, 125 kHz)

Projektując system kontroli dostępu mający pracować w pomieszczeniach o dużym zapyleniu postanowiłem do identyfikacji osób wchodzących zastosować karty zbliżeniowe o wymiarach standartowej karty plastikowej ISO. Problemem był zakup odpowiedniego czytnika, gdyż dostępne w handlu były zbyt drogie. Ze względu na bardzo ograniczony budżet projektu postanowiłem wykonać własne czytniki. W zbudowanym systemie znajduje się kilka czytników kart, które są sterowane przez centralkę. To ona podejmuje decyzję o dostępie lub odmowie. Sam czytnik w zaprezentowanej wersji oprogramowania nie zawiera żadnych mechanizmów decyzyjnych – jego zadania sprowadzają się do odczytania kodu zawartego na karcie, przekazania go na żądanie centralki oraz sterowania zamkiem elektromagnetycznym, również zgodnie z poleceniami centralki.

W zbudowanym systemie znajduje się kilka czytników kart, które sterowane są przez centralkę (nie będącą przedmiotem niniejszego artykułu) – ona to podejmuje decyzję o dostępie lub odmowie. Sam czytnik w prezentowanej wersji oprogramowania nie zawiera żadnych mechanizmów decyzyjnych – jego zadania sprowadzają się do odczytania kodu zawartego na karcie, przekazania go na żądanie centralki oraz sterowania zamkiem elektromagnetycznym, również zgodnie z poleceniami centralki. Magistrala systemu jest oparta o standard elektryczny RS-485 i kodowanie jednostki informacyjnej identyczne jak w przypadku RS-232C. Jednostka centralna jest jednocześnie kontrolerem magistrali i jako jedyna ma prawo zainicjować transmisję (wyjątkiem jest zgłaszanie przez komponenty uszkodzenia). Każdy element systemu ma swój unikalny adres z zakresu 1-9 (0 jest adresem kontrolera). W czytniku można go ustawiać za pomocą zworek J1 i J2 (ustawiona binarnie wartość będzie dodawana do stałej ADR_OFFSET). W celu zwiększenia uniwersalności (jak również w celach testowych) układ czytnika wyposażono również w interfejs RS-232C.
Powyższe założenia zdeterminowały sposób współpracy z czytnikiem, który opisany jest w dalszej części artykułu. Oczywiście zmiana sposobu działania (np. wysyłanie kodu karty natychmiast po jego odczytaniu) jest jak najbardziej możliwa, co więcej – nieskomplikowana ze względu na modułową budowę programu czytnika. Układ składa się z kilku, wyraźnie rozdzielonych modułów:
-  układ czytnika ASIC, będący poprawioną wersją układu z noty aplikacyjnej;
-  układu mikrokontrolera i jego najbliższych „peryferii”
-  diod świecących i sterowania przekaźnikiem, całkowicie standartowego i nie wymagającego komentarza;
-  dwóch równoważnych układów interfejsu szeregowego, pozwalające wybrać (przez osadzenie odpowiedniego układu drivera) transmisję przez RS232 lub RS485.

Karta UNIQUE

Bezstykowe karty UNIQUE są najprostszym przedstawicielem rodziny kart zbliżeniowych – zawierają w sobie wyłącznie 40-bitowy, unikalny numer. Zawarty jest on w programowanej na etapie produkcji karty 64-bitowej pamięci ROM o następującej organizacji (rysunek 1):
-  9 bitów nagłówka (same jedynki),
-  40 bitów numeru karty Dyx (z czego pierwszych 12 stanowi identyfikator nadawanej konkretnemu klientowi przez producenta), podzielonego na 10 wierszy po 4 bity,
-  10 bitów parzystości wierszy PRy (występują po każdym z wierszy numeru), -4 bitów parzystości kolumn PCx (po ostatnim wierszu i jego bicie parzystości),
-  1 bitu stopu (zero).
Po wprowadzeniu karty w pole magnetyczne czytnika (które w zależności od zastosowanym w nim anteny może mieć zasięg do 50 cm) w cewce wbudowanej w kartę zostaje indukowane napięcie zasilające, które ładuje wewnętrzną pojemność. Z chwilą, gdy energia zgromadzona w  kondensatorze osiągnie wymagany poziom, zasila ona wewnętrzny układ sekwencyjny i karta rozpoczyna działanie polegające na cyklicznym i nieprzerwanym wysyłaniu całej zawartości pamięci (po wysłaniu bitu stopu transmisja zaczyna się ponownie bez żadnej przerwy). Dane przesyłane są z użyciem kodowania Manchester, który moduluje metodą ASK amplitudę nośnej o częstotliwości 125 kHz. Wysłanie jednego bitu danych zajmuje 64 okresy fali nośnej i trwa przez 512 µs.

Rysunek 1. Mapa pamięci karty UNIQUE

 

Kodowanie Manchester

Kodowanie Manchester pozwala na połączenie strumienia danych z sygnałem taktującym. W środku każdego okresu występuje zbocze -narastające oznacza wartość 1, opadające 0 (rys. 2). Z takiego stanu rzeczy wynika metoda synchronizacji odbiornika z nieznanym sygnałem (musi on występować cyklicznie lub rozpoczynać się ciągiem danych pozwalających na przeprowadzenie synchronizacji), przy czym do jej zastosowania wymagana jest znajomość choćby w przybliżeniu okresu szukanego sygnału.

Rysunek 2. Zasady kodowania bitów słowa w kodzie Manchester

Algorytm rozpoczyna się oczekiwaniem na jakiekolwiek zbocze. Po jego wykryciu zakładamy, że otrzymaliśmy właśnie pierwszy bit informacji - zapamiętujemy go i odczekujemy biernie przez 3/4 okresu. Następnie przez czas równy 1/2 okresu poszukujemy kolejnego zbocza. Jeśli takie wystąpi, traktujemy je jako kolejny bit strumienia danych, zapamiętujemy i rozpoczynamy kolejny cykl. Natomiast jeśli w którymś z cykli żadne zbocze nie pojawi się w sygnale, będzie to oznaczało, że popełniliśmy błąd na samym początku traktując krawędź bitu (początek lub koniec okresu) jako jego środek niosące informację. Wówczas niestety trzeba uznać zebrane dane za nieprawidłowe i rozpocząć odbiór danych od początku. Metodę tą można zaimplementować albo jako logiczny synchroniczny układ sekwencyjny, albo - jak w tym przypadku - programowo, za pomocą mikrokontrolera.

Układ ASIC

Układ Reader Exciter ASIC produkcji firmy SOKYMAT (której dystrybutorem jest krakowski Elatec) jest interfejsem między mikrokontrolerem a transponderem. W swojej strukturze zawiera prawie cały układ nadawczo – odbiorczy wielkiej częstotliwości za wyjątkiem kilku elementów pojemnościowych dołączanych do niego z zewnątrz, szeregowy interfejs do komunikacji z mikrokontrolerem wraz z rejestrami danych i ustawień, układ diagnostyczny do zdalnej kontroli (tu nieużywany), układ generatora z zewnętrznym oscylatorem kwarcowym 4 MHz z buforowanym wyjściem, które można wykorzystać do taktowania mikrokontrolera, układu watchdog, służącego do automatycznego zakańczania trybu Real-Time (będzie o tym w dalszej części artykułu) oraz stabilizator napięcia 5V (sam układ jest zasilany napięciem od 5,3 do 16Vtypowo 12V). Jego budowę i wyprowadzenia przedstawia rysunek 3. Komunikacja z mikrokontrolerem odbywa się w trybie półdupleks za pośrednictwem dwuprzewodowego interfesu szeregowego, korzystającego z wyprowadzeń SCLK oraz DATA. Transmisja może odbywać się w dwóch trybach - normalnym oraz real time (przebiegi czasowe komunikacji w różnych przypadkach pokazuje rysunek 4). Po uruchomieniu układ znajduje się w pierwszym z nich, który służy do komunikacji z ASICem, ustawiania parametrów pracy oraz diagnostyki. Wysłanie każdej z komend należy rozpocząć od ustawienia linii SCLK oraz DATA w stanie niskim. Następnie należy przeprowadzić zerowanie interfesju poprzez ustawienie SCLK w stanie wysokim a później ustawienie linii DATA. Pierwsze opadające zbocze SCLK oznacza początek transmisji rozkazu - kolejne jego bity (linię DATA należy ustawiać w trakcie niskiego stanu SCLK) są wpisywane do rejestru przez opadające zbocze sygnału SCLK.

Rysunek 3. Budowa układu READER EXITER ASIC firmy SOKYMAT.

Rozkazy o długości 8 bitów to:
-  IQ |0|0|0|1|IQSELRQ|IQTOGRQ|x|x|;
-  Set 1 |0|0|1|0|FILTER|GAIN 1|GAIN 2|SEL 5V|;
-  Set 2 |0|0|1|1|TXEN|PD|IGN ANTFAIL|x|.
Służą one do ustawiania parametrów pracy układu. Dokładniejszy opis ich znaczenia znaleźć można w dokumentacji producenta. Po eksperymentach okazało się, że najlepsze rezultaty dawało pozostawienie nastaw zgodnych z domyślnymi ustawieniami fabrycznymi. Dwie kolejne mają długość 4 bitów i generują 4 bitową odpowiedź ASIC-a. Aby ją odczytać należy ustawić wyjście mikrokontrolera podłączonego do linii DATA w stan wysokiej impedancji, a następnie odczytywać jej kolejne bity po wysyłaniu zboczy narastających na SCLK.
-  Read Status |0|1|0|0|, zwraca czterobitowy status |ANTFAIL|SHORT|INQ|READY|, w którym poszczególne bity oznaczają kolejno uszkodzenie anteny, zwarcie w układzie diagnostycznym, aktualnie wybrany kanał demodulatora oraz gotowość układu do pracy;
-  Test Interface |1|1|A|B|, służy do testu transmisji szeregowej -ASIC wysyła odpowiedź zawierającą zanegowane bity A i B |0|0|/A|/B|.
Ostatnie trzy, 4-bitowe i niegenerujące odpowiedzi rozkazy wiążą się z trybem Real-Mode, w którym to linia DATA jest przyłączona bezpośrednio do modulatora lub demodulatora w.cz., co umożliwia komunikację z transponderem (kartą), ew. do wejścia wyzwalającego watchdoga, co pozwala na zrestartowanie jego wewnętrznego licznika poprzez podanie krótkiego impulsu. Są to:
-  Watchdog |1|0|0|1|;
-  Data Out |1|0|0|0| ustawia tryb odbioru, "podłączając" wyprowadzenie DATA do wyjścia demodulatora;
-  Data In |1|0|1|1| pozwala sterować modulatorem nadajnika, umożliwiając wysyłanie danych do transpondera (o ile oczywiście potrafi on je odebrać - w przypadku kart UNIQUE tryb nie jest wykorzystywany).

 

Rysunek 4. Komunikacja z układem ASIC w trybie diagnostycznym i nastaw (normalnym) oraz odczytu karty UNIQUE (rzeczywistym – real time).

Przed ustawieniem trybu Real-Time linia SCLK musi zostać mieć poziom niski. Wyjście z niego do trybu normalnego następuje w przypadku zajścia jednego z trzech warunków: po podaniu stanu wysokiego na SCLK, po przepełnieniu licznika Watchdoga (co następuje po 768 ms od jego zresetowania i generuje sygnał RESET, w niniejszym czytniku ustawiający flagę zgłoszenia przerwania zewnętrzego INT0) lub po jego zresetowaniu komendą Watchdog i impulsem.

Montaż i uruchomienie

Schemat ideowy, montażowy i wzór płytki czytniak umieszczono na rysunkach 5, 6 i 7. Montaż należy rozpocząć od wlutowania pięciu zwor montażowych. Następnie wlutowujemy podstawki pod układy scalone IC1-IC3 i kolejno elementy biernie: rezystory, kondensatory, diody i tranzystory oraz rezonatory kwarcowe. Na tym etapie posługiwać się będziemy stabilizowanym źródłem napięcia +5V. Należy je podłączyć do oznaczonego punktu na płytce i zmierzyć napięcia zasilające na podstawkach układów scalonych i pobór prądu -większy niż kilka – kilkanaście mA oznacza zwarcie w układzie, które oczywiście należy usunąć. Następnie wlutowujemy układ resetu złożony z kondensatora C20 i opornika R6 oraz wkładamy w podstawki wybrany układ interfejsowy i mikrokontroler z zapisanym programem testowym (test.a51). Jego zadaniem jest naprzemienne mruganie diodami świecącymi (co 1 sekundę) i odsyłanie znaków otrzymanych przez interfejs szeregowy (ustawienia zapisane w programie to 1200 bps, 8-N-1). Wysłanie znaku o kodzie 20H powinno załączać i wyłączać zasilanie cewki przekaźnika. Należy to sprawdzić dowolnym terminalem (np. na komputerze PC). W przypadku niepowodzenia sprawdzamy kolejno: fakt generacji sygnału taktującego na rezonatorze X1 (potencjalne uszkodzenie -niedokładne wlutowanie rezonatora lub kondensatorów rezonacyjnych), obecność sygnałów transmisji szeregowej na wyprowadzeniach 2 i 3 mikrokontrolera (błąd przy montażu układu interfejsowego i ich elementów zewnętrznych lub złącz) i jeszcze raz prawidłowość wlutowania wszystkich pozostałych elementów.

Rysunek 5. Schemat czytnika RFID

Rysunek 6. Rozmieszczenie elementów na płytce drukowanej

Rysunek 7. Układ ścieżek na płytce drukowanej. Uwaga: nie może posłużyć jako wzór kliszy do wykonania płytki, nie  zachowano skali!

Po pomyślnym zakończeniu pierwszego etapu testowania można przystąpić do najtrudniejszej operacji -wlutowania układu ASIC. Jako że jest on wykonany w obudowie do montażu powierzchniowego należy zachować szczególną ostrożność przy lutowaniu (zalecana lutownica grzałkowa z regulowaną temperaturą i uziemionym, cienkim grotem), zwracając uwagę na nie przegrzewanie układu i precyzję łączenia wyprowadzeń z polami lutowniczymi.
Wyjmujemy układy z podstawek i w odpowiednie miejsce doprowadzamy +12V (odłączamy przy tym wcześniej używane zasilanie 5V). Jeśli montaż układu ASIC został przeprowadzony prawidłowo na pinach zasilających w podstawkach pozostałych układów powinno się pojawić napięcie 5V, pochodzące z wbudowanego w nim stabilizatora. W przypadku niepowodzenia należy przede wszystkim sprawdzić dokładnie jakość połączeń wyprowadzeń układu.
Na tym etapie trzeba wykonać ostatnią czynność montażową: wlutować antenę -cewkę o indukcyjności 1.08 mH. Sposób jej nawinięcia zależy od sposobu późniejszego montażu i żądanego zasięgu działania, ale ogólnie będzie miała kształt toroidu o średnicy kilku-kilkunastu cm, nawiniętego kilkudziesięcioma zwojami drutu DNE o średnicy 0.2 do 0.5mm. W prototypie użyłem cewki dławika o zbliżonej indukcyjności, z którego odwinąłem kilka zwojów. W dalszych egzemplarzach anteny ciasno (to ważne ze względu na fakt, iż zmieniające się wymiary cewki – co następuje np. przy zgniataniu zwojów podczas oklejania taśmą – zmieniają jej parametry) nawijałem na walcu o średnicy 5 cm. Ilość zwojów dobrałem eksperymentalnie, stosując miernik indukcyjności. Następnie wkładamy ponownie układy, tym razem programując mikrokontroler programem czytnika (rfid.a51) i podłączamy napięcie zasilające (12V). Pulsująca czerwona dioda i komunikat o błędzie (patrz opis protokołu) przesłany interfejsem szeregowym może oznaczać błędne wlutowanie któregoś z elementów dodatkowych układu ASIC lub zły dobór cewki. W takim przypadku należy sprawdzić sygnały z generatora kwarcowego oraz na wyprowadzeniach TX1,2 i RX - powinny tam występować sygnały prostokątny i piłokształtny o częstotliwości zbliżonej do 125 kHz.
Stale świecąca się czerwona dioda daje nadzieję na poprawne uruchomienie układu - rozwiać wątpliwości można zbliżając kartę zgodną ze standardem UNIQUE do anteny. Powinna zamrugać dioda zielona (sygnalizująca w tym przypadku obecność karty w zasięgu), zaś wysłanie odpowiednich komend powinno spotkać się ze właściwą reakcją -odesłaniem kodu ostatnio odczytanej karty bądź "otwarciem drzwi". Gratulacje!

Działanie programu

Program po zerowaniu procesora rozpoczyna działanie od ustawienia znacznika stosu oraz skoku do programu głównego, rozpoczynającego się od adresu 0100h, poza obszarem procedur obsługi przerwań. Następnie dokonuje inicjacji wywołując podprogram INIT -ustawia w żądany sposób odpowiednie bity portów we-wy, przygotowuje zawartość pamięci i flag, inicjuje zegar T0 i przerwanie zewnętrzne INT0 (są wykorzystywane przez procedury komunikacji z ASICiem) oraz - poprzez RS_INIT - interfejs szeregowy procesora. Później dokonuje testu (błędy zgłasza podprogramem ERROR, który wysyła odpowiedni komunikat w chwili ciszy na magistrali i zawiesza wykonywanie programu, pulsując czerwoną diodą) i ew. oczekuje na gotowość układu czytnika (ASIC_TEST) i przechodzi do głównej pętli programu.
Pętla główna nie jest skomplikowana -próbuje odczytać kartę wywołując podprogram ASIC_READ (będzie on trwał max. 768 ms - wartość układu watchdog w ASICu) a następnie sprawdza, czy w międzyczasie nie przyszedł z zewnątrz (przez interfejs szeregowy) rozkaz, który należy obsłużyć. Ich rozróżnieniem i wykonaniem zajmują się odpowiednie fragmenty kodu. Wykorzystują one podprogramy PAUSE_1S (programowe opóźnienie długości 1s) i ANSWER (tworzy i wysyła odpowiedź na komendę zgodną ze specyfikacją protokołu). Komendy odbierane są w procedurze obsługi przerwania zgłaszanego przez układ transmisji szeregowej procesora -w pierwszej kolejności sprawdzany jest adres urządzenia, do którego kierowany jest komunikat (w przypadku magistrali RS-485 komunikaty trafiają do wszystkich odbiorców) i jeśli pokrywa się z adresem ustawionym za pomocą zwor i odczytanym przez procedurę inicjalizacyjną ustawiana jest flaga, która sygnalizuje, że następny znak będzie kodem rozkazu i należy go zapamiętać w odpowiedniej komórce rozkazu.
Sercem programu są podprogramy komunikacji z układem ASIC. Procedury ASIC_SEND8, ASIC_SEND4 i ASIC_GET4 komunikują się z nim zgodnie ze specyfikacją i uzależnieniami czasowymi opisanymi w dokumentacji układu, zaś ASIC_READ przełącza go w tryb Real-Time i przeprowadza odbiór informacji zawartej na karcie, w następujący sposób. Program próbuje się zsynchronizować z sygnałem, oczekując na zbocze opadające (które w kodzie Manchester oznacza 0) lub narastające (1). Wpisuje uzyskaną informację do 9-cio bitowego bufora (składającego się z akumulatora i flagi przeniesienia) i przeskakuje do fazy oczekiwania na następny bit. Oznacza to przerwę o długości ok. 338 µs (512 µs, czyli czas przesyłu 1 bitu, *0.66), w trakcie której może wystąpić kolejne zbocze, nie niosące jednak informacji (krawędź bitu). W tym czasie można sprawdzić, czy bufor nie został już zapełniony dziewięcioma jedynkami, które mogą oznaczać początek danych z karty (gdyby tak było przechodzimy do następnego etapu - odczytu części informacyjnej). Po zakończeniu tej przerwy znajdujemy się gdzieś w pierwszej połowie następnego bitu, dlatego też przez 174 µs (512...338 µs) oczekujemy na zbocze informacyjne, którego wartość wpisujemy do bufora i przechodzimy do okresu oczekiwania na następny bit. Brak zbocza oznacza, że zsynchronizowaliśmy się w przeciwnej fazie (za pierwsze zbocze informacyjne uznaliśmy krawędź bitu), więc wracamy do etapu początkowego.
Fragment programu odczytujący część informacyjną zakłada, że synchronizacja przebiegła prawidłowo (co nie musi być prawdą, gdyż mogła nastąpić w odwrotnej fazie na dziewięciu zerach), więc nie odmierza już okresu 174 µs oczekiwania na zbocze informacyjne, lecz pozostawia kontrolę poprawności transmisji "w rękach" bitów nieparzystości, przysyłanych co 4 bity kodu (które są kolejno umieszczanie w akumulatorze, a później w tymczasowym buforze w pamięci). Niezgodność otrzymanego znacznika parzystości z obliczonym na podstawie odebranych danych sugeruje błąd synchronizacji lub transmisji i powoduje powrót do etapu początkowego.
Ostatnim etapem jest odebranie bitów parzystości kolumn, obliczenie ich na podstawie zebranych w buforze danych i ich porównanie. Niezgodność powoduje oczywiście powrót do etapu synchronizacji. Sukces zaś przepisanie informacji z bufora tymczasowego do bufora głównego i ustawienie flagi sygnalizującej obecność w nim poprawnego kodu oraz zakończenie wykonania procedury. Przez cały czas trwania powyższych operacji sprawdzany jest fakt zadziałania układu watchdog ASICa, który kończy tryb Real-Time, sygnalizując to wysłaniem krótkiego impulsu RESET. Jego zaistnienie jest rejestrowanie przez układ przerwań zewnętrznych mikrokontrolera, gdyż jest przekazywane na linię INT0. Powoduje to natychmiastowe zakończenie podprogramu i powrót do głównej pętli.

Protokół komunikacyjny

Kontroler komunikuje się z czytnikiem za pomocą prostego protokołu, opartego o komendy zapisane znakami ASCII. Czytnik rozpoznaje dwie komendy:
-  'C' - żądanie wysłania kodu ostatnio odczytanej karty;
-  'O' - żądanie "otwarcia drzwi" - załączenie przekaźnika.
Każda komenda ma postać: |ADRES URZĄDZENIA DOCELOWEGO|KOD ROZKAZU|. Aby uzyskać kod z czytnika pracującego pod adresem 5 należy do niego wysłać (domyślnie z prędkością 1200bps i ustawnieniami 8-N-1) dwa znaki: '5C'. Odpowiedź ma następującą postać: |ADRES KONTROLERA|ADRES URZĄDZENIA ODPOWIADAJĄCEGO|KOD ODPOWIEDZI|(ew.) DANE|. Występują następujące rodzaje odpowiedzi:
-  '+' - polecenie wykonane poprawnie; w przypadku żądania kodu następuje po nim ciąg 10 znaków, będących zapisanym heksadecymalnie kodem karty;
-  '-' - nie wykonano polecenia; występuje w przypadku otrzymania żądania kodu, gdy nie ma żadnego w buforze (od czasu ostatniego żądania nie odczytano żadnej karty);
-  '?' - nieznana komenda; stanowi reakcję na otrzymanie komendy innej niż wyżej wymienione.
Po wysłaniu wyżej opisanego rozkazu i przy założeniu że odczytał kartę o kodzie 0a393001243h czytnik odpowie: '05+A393001243'. Dodatkowo urządzenie na etapie inicjacji i testowania może samo (stosując metodę Carrier-Sense dostępu do medium) wygenerować komunikat o błędzie, mający format zbliżony do normalnej odpowiedzi: |ADRES KONTROLERA|ADRES URZĄDZENIA ZGŁASZAJĄCEGO|ZNACZNIK BŁEDU ('!')|KOD
BŁEDU|
Czytnik może zgłosić dwa rodzaje błędu:
-  '2' - uszkodzenie interfejsu komunikacyjnego ASIC-mikrokontroler,
-  '3' - uszkodzenie anteny.

Zakończenie

Do wykorzystaniu mojego rozwiązania może zniechęcać nieco udziwniona metoda „wydostania” z czytnika kodu karty, co zostało wymuszone opisanym zastosowaniem. Zachęcam jednak do zerknięcia w kod źródłowy programu, który jest - jak mi się wydaje -bardzo dobrze skomentowany i (mimo że asemblerowy) czytelny. Aby czytnik wysyłał kod natychmiast po odczytaniu karty unique, wystarczy zmodyfikować dosłownie dwie linie kodu! Na wszelkie pytania i uwagi dotyczące układu i(lub) programu czekam pod adresem email.

Paweł Moll
hornet@sltzn.katowice.pl

 

Wykaz elementów:
R1, R2: 330 R
R3: 8,2 k
R4: 1 k
R5: 33 k
R6: 10 k
C1, C2: 33 pF

C3...C7: 1 µF
C8: 100 nF
C9, C10: 15 pF
C11, C12: 100 nF
C13: 22 nF
C14: 1,5 nF
C15: 47uF

C16, C17: 10 nF
C18, C19: 100 µF
C20: 10 µF

D1, D2: LED

D3: 1N4148
D4: 1N4001
IC1: 89C4051 (1051, 2051)
IC2: MAX232A
IC3: MAX485
IC4: READER EXCITER ASIC (SOKYMAT)
T1: BC547
T2: BD135

T3: BD136

CN1: złącze D-SUB 9 pin, męskie, kątowe
CN2 - złącze Gold-Pin 4 pin w 1 linii
RELAY - przekaźnik
COIL (antena): cewka 1,08mH
X1: kwarc 12 MHz
podstawki (20 pin,16 pin,8 pin)
X2: kwarc 4 MHz

http://www.tomaszbogusz.blox.pl/

ZałącznikWielkość
Źródło programu czytnika13.47 KB

Dodaj nowy komentarz

Zawartość pola nie będzie udostępniana publicznie.