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

Znacznik RFID z mikrokontrolera AVR i cewki

Defenestrator 27 Cze 2009 23:40 11255 19
  • Znacznik RFID z mikrokontrolera AVR i cewki

    Celem autora pomysłu było zmuszenie mikrokontrolera ATtiny85 do zachowywania się jak EM4102, układ stosowany w znacznikach RFID. Niezbędne minimum potrzebne do działania to układ AVR i cewka, lecz całość działa dużo lepiej jeśli wyposaży się ją w kilka kondensatorów filtrujących. Od wielkości "anteny" zależy zasięg i pasmo obsługiwane przez urządzenie. Czytając opis tego projektu warto zwrócić uwagę na kilka ciekawych tricków zastosowanych przez autora, jak na przykład używanie cewki nie tylko jako zasilania, ale również jako źródła sygnału zegarowego. Interesujący jest również fakt, iż ten element zasila mikrokontroler mimo braku połączenia z pinami, które są do tego przeznaczone.

    Źródło
    Artykuł

    Znacznik RFID z mikrokontrolera AVR i cewki Znacznik RFID z mikrokontrolera AVR i cewki

    Fajne? Ranking DIY
    O autorze
    Defenestrator
    Poziom 14  
    Offline 
    Defenestrator napisał 148 postów o ocenie 99. Jest z nami od 2007 roku.
  • #2 6718906
    bolek
    Poziom 35  
    no zasila bo leci przez diody zabezpieczajace porty. Choć i tak wydaje się to troche nie realne, bo co sie stanie z zasilaniem w momencie gdy procek zacznie odpowiadać... co je magazynuje, powietrzny kondensator pomiedzy Vcc a GND? ;/

    Jakoś mało szczegółów na tych stronkach.
  • #3 6721243
    sheeeep
    Poziom 25  
    To pierwsze zdjęcie okej, diody moga być gdzieś pod izolacją, jakiś kondensatorek, dużo nie trzeba dla takiego uC, ale to 2gie zdjęcie to czysta bujda na resorach. Bez bufforowania zasilania, czyli dioda + C nie ma mowy o poprawnym działaniu a pojemności wewnętrzne uC nie zapewnią działania.
  • #4 6721595
    Fimek
    Poziom 16  
    Chłopaki, zastanówcie się co piszecie.

    Przecież wejścia każdego CMOSa zabezpieczone są dwiema diodami, które w takim połączeniu cewki zasilającej, jakie zaproponował autor, działają jak mostek Graetz'a. Poza tym autor napisał, że pojemności rozproszeone między zasilaniem a podłożem układu scalonego działają jak kondensator blokujący zasilanie. Dla mnie to jest szemrane, ale zapewne działa skoro autor tak napisał(choć na słowo honoru). Stwierdzenie, że przebieg z cewki można wykorzysać jako źródło sygnału zegarowego - genialne :) jeżeli faktycznie powoduje to, że procek może działać przy niższym napięciu zasilającym. Moim zdaniem - pomysły i realizacja są rewelacyjne.

    Pozdrawiam
  • #5 6721666
    bolek
    Poziom 35  
    Fimek, napisałeś to ja i Sheep, pozatym mostek gretza to za mocne słowo. Tych pojemności to moze będzie 1pf, TO ZA MAŁO żeby procek utrzymał swoją prace, nie mówiąc już o odpowiednim wysterowaniu dławika.
  • #6 6721667
    Konto nie istnieje
    Poziom 1  
  • #7 6722634
    Fimek
    Poziom 16  
    @bolek ok - przepraszam. Pojemnosci jest wiecej (to nie sa pojemnosci montazowe - one sa malutkie - tylko dyfuzyjne z wysp na ktorych siedza tranzystory P-kanalowe do podloza typu P). Ale fakt - ukladu nie sprawdzalem, wiec nie wiem - dla mnie to w kazdym razie brzmi dosyc wiarygodnie. A Graetz tam jednak siedzi.

    Znacznik RFID z mikrokontrolera AVR i cewki

    Pozdrawiam
  • #8 6729789
    OldSkull
    Poziom 28  
    Eh, niedowiarki :P Po tym jak zasiliłem ATmegę8 przez port, który miała wewnętrznie podciągnięty do 5V (czyli przez rezystor 20k) i potrafiła się uruchomić (chociaż się wieszała od razu, ale to była wesja zwykła i do tego dość stary model mikrokontrolera) to jeste mw stanie uwierzyć w coś takiego.
    Aczkolwiek nei zaufałbym takiemu układowi. Poza tym projekt jest mało uzyteczny, gdyż ten mikrokontroler jest 2-3 razy droższy niż ukąłd który ma zastępować (za to łatwiej dostępny)
  • #10 6730729
    Konto nie istnieje
    Poziom 1  
  • #11 6732826
    sheeeep
    Poziom 25  
    Przez 20k i małym zasilaniu płyną b. małe prądy, w zależności od procka i wszystkiego da się to wytłumaczyć. Ale to jest jednak 20k, a tutaj z pojemności wewnętrznej. Jakby ta pojemność wynosiła 1nF to okey, chodz potem zwarcie wyjścia na 1ms odcina procka od zasilania... Chyba że gdzie indziej było by to 1nF czy wiecej. Dla mnie to czyste science fiction. Wer. z kondensatorami do mnie 100% przemawia.
  • #12 6734106
    Konto nie istnieje
    Poziom 1  
  • #13 6736121
    Jacek31
    Warunkowo odblokowany
    Powiem tak. Miałem trochę okazje się bawić ATTiny 45/85 i można tam praktycznie włączać/wyłączać z zasilania osobno praktycznie każdy podukład CPU, więc jest całkiem możliwe zasilanie tego bardzo małym prądem. Z drugiej strony należy pamiętać o właściwościach cewki w zmiennym polu magnetycznym. Sądzę że to całkiem realne do zrobienia. Oczywiście dodatkowy kondensator znacznie polepszy stabilność takiego układziku. Brzmi mało prawdopodobnie, ale całkiem możliwe.
  • #14 7254366
    radekdjredi
    Poziom 13  
    Witam czy temu znacznikowi można nadać numer jeżeli tak to w jaki sposób i w ogóle to dokładnie w którym miejscu autor udostępnił program do tego procka.
    Był bym wdzięczny za odpowiedź.
  • #15 10780538
    piotrva
    VIP Zasłużony dla elektroda
    Przemyślenia na temat:
    Ostatnio mocno grzebię w RFID UNIQUE 125kHz i między innymi przypomniał mi się ten projekt, więc (mając różne dławiki i attiny85) postanowiłem to cacko zrobić i oto moje refleksje:
    1. Na samym dławiku + uC nie chciało chodzić
    2. Dławik + kondensator na gnd i vcc + uC - nie działa
    3. Dławik + kondensator (równolegle) + uC - nie działa
    4. Dławik + kondensatory z pkt 2 i 3 (różne wartości próbowałem) - też nic
    5. Antena od modułu rfid (15 zwojów x 2, kwadrat na PCB, wymiary 65x65mm) + równolegle kondensator 10nF + uC - DZIAŁA w 100% (wersja RFID UNIQUE 125kHz)

    Tak więc zabawy z dławikami może są możliwe do wykonania, ale niespecjalnie chce to działać w każdych warunkach, za to stosując profesjonalną cewkę/antenę dopasowaną do tych zastosowań układ na prawdę działa.
  • #16 11105989
    excray
    Poziom 41  
    piotrva napisał:
    1. Na samym dławiku + uC nie chciało chodzić
    2. Dławik + kondensator na gnd i vcc + uC - nie działa
    3. Dławik + kondensator (równolegle) + uC - nie działa
    4. Dławik + kondensatory z pkt 2 i 3 (różne wartości próbowałem) - też nic
    5. Antena od modułu rfid (15 zwojów x 2, kwadrat na PCB, wymiary 65x65mm) + równolegle kondensator 10nF + uC - DZIAŁA w 100% (wersja RFID UNIQUE 125kHz)

    W mojej wersji:
    1. Cewka 40zw fi 50mm bez niczego więcej - DZIAŁA
    2. Cewka + kondensator na zasilaniu - DZIAŁA
    3. Cewka + kondensator równolegle do cewki + kond. na zasilaniu - TEŻ DZIAŁA
    Oczywiście 2-ga wersja działała z większej odległości niż pierwsza a trzecia z większej niż 2-ga.
  • #17 11106170
    piotrva
    VIP Zasłużony dla elektroda
    Ogólnie ponadto dodam, że wypadałoby policzyć wszystko z punktu widzenia fizycznego i dobierać kondensator do cewki, a cewkę do parametrów tego standardu RFID. Ogólnie do moich testów można dopisać:
    1. Na samym dławiku + uC nie chciało chodzić
    2. Dławik + kondensator na gnd i vcc + uC - nie działa
    3. Dławik + kondensator (równolegle) + uC - nie działa
    4. Dławik + kondensatory z pkt 2 i 3 (różne wartości próbowałem) - też nic
    5. Antena od modułu rfid (15 zwojów x 2, kwadrat na PCB, wymiary 65x65mm) + równolegle kondensator 10nF + uC - DZIAŁA w 100% (wersja RFID UNIQUE 125kHz)
    6. Cewka wymontowana z karty RFID 125kHz sztywnej (Clamshell) bez kondensatorów - DZIAŁA w 100%
    Jak widać (i jak teraz już wiem poznawszy teorię działania tych kart) decydujące znaczenie ma cewka i jej parametry. Kondensatory w przypadku dobrej cewki pozwalają na zwiększenie zasięgu pracy układu.
    ---
    Na marginesie - zbudowałem nawet prosty kloner umożliwiający odczyt karty, wyświetlenie jej numeru, zapis numeru do pamięci eeprom (10 slotów), wprowadzenie numeru z klawiatury oraz oczywiście emulację numeru wczytanego do ramu. Wykorzystałem kostkę atmega328p oraz aktywny układ kluczujący cewkę "nadawczą" wymontowaną ze wspomnianej wyżej karty.
  • #18 11106468
    excray
    Poziom 41  
    W jaki sposób dekodujesz dane z ciągu bitów? Właśnie się nad tym zastanawiam jak to ugryźć. Czy po 9-ciu bitach 1 synchronizacyjnych może być bit 1 czy zawsze jest 0?
  • #19 11106711
    piotrva
    VIP Zasłużony dla elektroda
    A więc jak działa mój algorytm:
    1. Dekoduję otrzymane 128 zbocz za pomocą manchesteru i otrzymuję ciąg 64 bitów - cała ramkę tego standardu (od razu w przerwaniu ICR timera 1)
    2. Szukam 9-ciu jedynek rotując cały czas zmienną o 1 bit w lewo (zmienna<<1) - jeśli znajdę 9 jedynek to mam pewność że to początek ramki, bo: a) poprzednia ramka musiała się skończyć zerem b) nawet jeśli 10-ty bit ramki ma wartość 1 (może tak być), to i tak wcześniej wykryłem 9 jedynek, więc jest wszystko wyrównane OK. Jeśli nie ma 9-ciu jedynek to idź do 4.
    3. liczę bity parzystości pionowej i poziomej, jeśli są zgodne to skocz do 6, jeśli nie to do 4
    4. jeśli nie znalazłem 9-ciu jedynek w pkt 2, lub nie zgadza się parzystość to neguję całe dane i powtarzam czynność z punktu 2 (na wypadek, gdybym zaczął odbiór od złego zbocza), jeśli dalej nie ma 9-ciu jedynek to odebrano śmieci, i zaczynamy odbiór od początku, jeśli są jedynki to idź do 5.
    5. liczę bity parzystości pionowej i poziomej, jeśli są zgodne to skocz do 6, jeśli nie to zaczynamy odbiór od początku
    6. przystępujemy do dekodowania wyrównanej ramki - to już bułeczka z masełkiem :D
    Taki jest mój algorytm i działa bardzo dobrze, a ponadto w tle - w sumie kod wystawia flagę po zdekodowaniu i zapisaniu do zmiennej globalnej zdekodowanego numeru karty, a kolejny odbiór rozpoczyna po wykasowaniu tej flagi przez program główny.
    ---
    kodów na razie nie chcę udostępniać na forum, gdyż zamierzam opisać całą tematykę tego typu kart w artykule na konkurs.
  • #20 11106803
    excray
    Poziom 41  
    Dziękuję za odpowiedź. Jeśli to nie zahacza o konkurs to mam jeszcze jedno pytanie - do dekodowania kodu manchester potrzebujesz sygnału podstawowego CLK zsynchronizowanego z ciągiem danych. Jak generujesz sobie ten sygnał? Z timera? Jak synchronizujesz tak aby zsynchronizował się na odpowiednim zboczu danych? Synchronizujesz wielokrotnie czy tylko raz?
REKLAMA