logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Pastylki Dallas - pamięć dotykowa

zasoby 05 Sty 2006 12:33 12535 11
REKLAMA
  • W systemie dostępowym przeważnie stosuje się karty magnetyczne, chipowe lub karty zbliżeniowe RFID. To rozwiązanie jest dosyć nowe - klucz wygląda jak bateria do płyty głównej.
    Zalety pamięci dotykowej:
    - niesamowicie mała 5mm średnica
    - pole magnetyczne nie wpływa w żaden sposób na pamięć
    - obudowa odporna na zewnętrzne działanie czynnikó atmosferycznych i przemysłowych
    - w pełni zabezpieczona

    Sam czujnik w formie dwóch blaszek może być zamontowany wszędzie, do jego podłączenia wystarczy jedna para przewodów (dwa przewody).

    W załączniku znajduje się przykładowy układ obsługujący pastylki Dallas DS1990A (koszt około 16PLN za pastylkę). Jego działanie jest bardzo proste - mikrokontroler odczytuje numer pastylki po czym weryfikuje ten numer z informacją zapisaną w EEPROM. Jeżeli wszystko jest poprawnie wysterowuje przekaźnik, który np. steruje otwarciem drzwi. Oprócz tego generuje dźwięk potwierdzający. Przekaźnik 5V.

    Przykładowy program dla mikrokontrolera AVR
    
    ;*Includes* 
    .include "1200def.inc"
    
    ;* Pin Definitions*
    
    .equ RxD =6
    .equ TxD =0
    .equ LED =2 
    
    ;*Global Register Variables*
    
    .def greska =r16
    .def temp1 =r17
    .def temp2 =r18
    .def temp3 =r19
    .def acca =r20
    .def accb =r21
    .def ZL =r30
    .def ZH =r31 
    
    ;* Interrupt Vectors*
    
    rjmp RESET 
    
    ;*************
    ;* FUNCTION
    ;*
    ;* w30us (1+(1+2)*79+4=242=30.25us)
    ;*************
    
    w30us:
    ldi temp1,79 ;1~
    tloop1: dec temp1 ;1~
    brne tloop1 ;2~ 1+(1+2)*79+4=242=30.25us
    ret ;4~ 
    
    ;*************
    ;* FUNCTION
    ;*
    ;* w5us
    ;*************
    
    w5us:
    ldi temp1,12 ;1~
    tloop2: dec temp1 ;1~
    brne tloop2 ;2~ 1+(1+2)*13+4=242=5.5us
    ret ;4~
    
    ;*************
    ;* FUNCTION
    ;*
    ;* w480us
    ;*************
    
    w480us:
    ldi temp1,0x5
    tl13: ldi temp2,0xff
    tl12: dec temp2
    brne tl12
    dec temp1
    brne tl13
    ret
    
    ;*************
    ;* FUNCTION
    ;*
    ;* w300us
    ;*************
    
    w300us:
    ldi temp1,0x4
    tl23: ldi temp2,0xff
    tl22: dec temp2
    brne tl22
    dec temp1
    brne tl23
    ret
    
    ;*************
    ;* FUNCTION
    ;*
    ;* w200ms
    ;*************
    
    w200ms: ldi temp3, 16 ;1~
    tl3: ldi temp2, 0x82 ;1~
    tl2: ldi temp1, 0xff ;1~
    tl1: dec temp1 ;1~
    brne tl1 ;2~
    dec temp2 ;1~
    brne tl2 ;2~
    dec temp3 ;1~
    brne tl3 ;2~
    ret ;4~
    
    ;*************
    ;* FUNCTION
    ;*
    ;* test
    ;*************
    
    test: sbi PORTD,0 ; Tx =1
    rcall w480us
    cbi PORTD,0 ; Tx =0
    rcall w30us
    rcall w30us
    rcall ima
    ret
    
    ;*************
    ;* FUNCTION
    ;*
    ;* ima
    ;*************
    
    ima: in acca,pind
    andi acca,0x40
    brne l2
    ldi greska,0x02
    l2: rcall w480us
    ret 
    
    ;*************
    ;* FUNCTION
    ;*
    ;* citanje/read
    ;*************
    
    citanje:
    rcall w_one
    rcall w_one
    rcall w_zero
    rcall w_zero
    rcall w_one
    rcall w_one
    rcall w_zero
    rcall w_zero
    ret
    
    ;*************
    ;* FUNCTION
    ;*
    ;* w_one
    ;*************
    w_one:
    sbi portd,TxD
    rcall w5us
    cbi portd,TxD
    rcall w60us
    
    ret
    
    ;*************
    ;* FUNCTION
    ;*
    ;* w_zero
    ;*************
    w_zero:
    sbi portd,TxD
    rcall w60us
    
    
    cbi portd,TxD
    rcall w5us
    ret
    
    ;*********************************
    ;* FUNCTION
    ;*
    ;* w60us (1+(1+2)*160+4=125~=60.62us
    ;*********************************
    w60us:
    ldi temp1,160 ;1~
    tl4: dec temp1 ;1~
    brne tl4 ;2~
    ret ;4~
    
    ;*********************************
    ;* FUNCTION
    ;*
    ;* read_no
    ;*********************************
    read_no:
    clr ZH
    ldi ZL,0x08
    rl2: dec ZL
    ldi temp3,0x08
    clr acca
    rl1: asr acca
    andi acca,0x7f
    sbi portd,TxD
    nop
    nop
    nop
    nop
    cbi portd,TxD
    rcall w5us
    in accb,pind
    lsl accb
    andi accb,0x80
    rcall w60us
    add acca,accb
    dec temp3
    brne rl1
    st Z,acca
    cpi ZL,0x00
    brne rl2
    ret
    
    ;*************
    ;* FUNCTION
    ;*
    ;* r_bit
    ;*************
    
    EERead_seq:
    in temp1,EEAR ;get address
    inc temp1 ;increment address
    out EEAR,temp1 ;output address
    sbi EECR,EERE ;set EEPROM Read strobe
    ;This instruction takes 4 clock cycles since
    ;it halts the CPU for two clock cycles
    sbi EECR,EERE ;set EEPROM Read strobe 2nd time
    ;This instruction takes 4 clock cycles since
    ;it halts the CPU for two clock cycles
    in temp2,EEDR ;get data
    ret 
    
    ;***** Copy 8 bytes of EEPROM to registers
    copy:
    
    out EEAR,accb ;EEAR <- $ff (start address - 1)
    ldi ZL,8 ;Z-pointer points to r8
    loop2: rcall EERead_seq ;get EEPROM data
    st Z,temp2 ;store to SRAM
    inc ZL
    cpi ZL,16 ;reached the end?
    brne loop2 ;if not, loop more
    ret
    
    ;*************
    ;* FUNCTION
    ;*
    ;* provera/checking
    ;*************
    provera:
    ldi temp3,0x08
    mov acca,r0
    mov accb,r8
    rcall lp1
    mov acca,r1
    mov accb,r9
    rcall lp1
    mov acca,r2
    mov accb,r10
    rcall lp1
    mov acca,r3
    mov accb,r11
    rcall lp1
    mov acca,r4
    mov accb,r12
    rcall lp1
    mov acca,r5
    mov accb,r13
    rcall lp1
    mov acca,r6
    mov accb,r14
    rcall lp1
    mov acca,r7
    mov accb,r15
    rcall lp1
    ret
    
    lp1: cpse acca,accb
    ret
    dec temp3
    breq lp2
    lp3: ret 
    
    lp2: ldi greska,0x08
    rjmp lp3
    
    ;*********************************
    ; beep Tonski signal, LED i rele
    ;*********************************
    beep:
    sbi portd,LED
    ldi acca,0x07
    bl2: ldi temp3,0xff
    bl1: sbi portd,1
    rcall w300us
    cbi portd,1
    rcall w300us
    dec temp3
    brne bl1
    dec acca
    brne bl2
    clr greska
    cbi portd,LED
    ret 
    
    RESET:
    
    main:
    clr greska
    ldi temp1,0xff
    out ddrb,temp1
    sbi DDRD,2
    sbi DDRD,1
    sbi DDRD,0
    l6: rcall test
    andi greska,0x02
    breq l6
    rcall citanje
    rcall read_no
    ldi accb,0xff
    rcall copy
    rcall provera
    andi greska,0x08
    breq ll1
    rcall beep
    ll1: ldi accb,0x07
    rcall copy
    rcall provera
    andi greska,0x08
    breq ll2
    rcall beep
    ll2: rjmp main
    



    http://www.mikroelektronika.co.yu/english/magazine/articles/14.htm

    Fajne? Ranking DIY
    O autorze
    zasoby
    Poziom 23  
    Offline 
    zasoby napisał 784 postów o ocenie 432, pomógł 4 razy. Jest z nami od 2002 roku.
  • REKLAMA
  • #2 2152087
    ElSor
    Poziom 13  
    Dobry artykul
  • #3 2152494
    VSS
    Poziom 21  
    ElSor napisał:
    Dobry artykul


    a na mój gust lipa, za każdym razem jak chcę dodać kolejną pastylkę mam kompilować soft ?? nie widze żadnych juperów do konfiguracji. projekt jest niedokończony.
  • #4 2153489
    walent25
    Poziom 12  
    Szkoda, że to takie stare, 10 lat temu montowali takie zabezpieczenie w Polonezie, pierwsze immobilizery. Strasznie niewygodne i bardzo widoczne, pastylka ma kilkanaście mm a nie 5 (widać to nawet na zdjęciu)
  • REKLAMA
  • #5 2154663
    Jarema
    Użytkownik obserwowany
    Witam,
    Mam pytanko w jakim celu w tym układzie siedzi BSS100 ?
    Nieraz używałem pastylek i wykorzystywałem do tego tylko jedną linię portu procka więc troche dziwi mnie to rozwiązanie.
    Poza tym odnoszę wrażenie, że przedstawiony tutaj układ jest testerem pastylek i niczym więcej.
  • REKLAMA
  • #6 2154934
    ghost
    Poziom 23  
    Jarema napisał:
    Witam,
    Mam pytanko w jakim celu w tym układzie siedzi BSS100 ?

    jesli zasilanie i dane ida jedna linia to moze jest to pewna forma resetu pastylki?
    I moze bardziej odporna na zaklocenia/ o wiekszym zasiegui niz po prostu noga procka
    Jarema napisał:

    Poza tym odnoszę wrażenie, że przedstawiony tutaj układ jest testerem pastylek i niczym więcej.

    To po co bylby w tym ukladzie uklad wyzwalajacy w postaci przekaznika?
  • #7 2155274
    Jarema
    Użytkownik obserwowany
    ghost napisał:
    Jarema napisał:
    Witam,
    Mam pytanko w jakim celu w tym układzie siedzi BSS100 ?

    jesli zasilanie i dane ida jedna linia to moze jest to pewna forma resetu pastylki?
    I moze bardziej odporna na zaklocenia/ o wiekszym zasiegui niz po prostu noga procka
    Jarema napisał:

    Poza tym odnoszę wrażenie, że przedstawiony tutaj układ jest testerem pastylek i niczym więcej.

    To po co bylby w tym ukladzie uklad wyzwalajacy w postaci przekaznika?


    1. Czyżby 25mA nie wystarczało - nigdy nie miałem z tym problemów.
    2. Przekaźnik może sygnalizować czy CRC jest np. prawidłowe :P
  • #8 2155848
    qjas
    Poziom 14  
    Hm, na schemacie jest blad, sygnal z pastylki idzie m.in do R2, no chyba ze zamiarem autora jest cykanie przekaznika w takt idacych informacji ;]
  • #9 2155988
    SIEKIERA_666
    Poziom 21  
    Witam
    Jak umieścic w EEPromie informacje o np 3 lub 5 pstylkach?
    Może siakiś przykład??

    Pozdrawiam SIEKIER'A
    :twisted:
  • REKLAMA
  • #10 2157877
    Jarema
    Użytkownik obserwowany
    qjas napisał:
    Hm, na schemacie jest blad, sygnal z pastylki idzie m.in do R2, no chyba ze zamiarem autora jest cykanie przekaznika w takt idacych informacji ;]


    Owszem, nie powinno być tam połączenia.

    SIEKIERA_666 napisał:
    Witam
    Jak umieścic w EEPromie informacje o np 3 lub 5 pstylkach?
    Może siakiś przykład??

    Pozdrawiam SIEKIER'A
    :twisted:


    Najpierw trzeba znać ich ID, które dla każdej pastylki zajmuje 8 bajtów.
    Program zamieszczony przez Gulsona (chyba) jest kompletny więc jedynie trzeba dopisać obsługę porównania ID dla pozostałych pastylek.
  • #11 2159394
    igabriel
    Poziom 20  
    jeśli ktoś chce skorzystać z tego rodzaju "klucza" to niech poszuka w archiwlnych numerach "Elektroniki Praktycznej" chyba z końca lat 90-tych,tam był opisany układ z pastylkami Dallas, wtedy były sprzedawane gotowe zestawy do montażu , są to układy sprawdzone i działają do dzisiaj...
  • #12 2524027
    Ronin64
    Poziom 35  
    My produkujemy zabezpieczenia wykożystujące pastylki Dallas'a i mamy mnóstwo zamówień, czasami aż za dużo ...
REKLAMA