Sei sulla pagina 1di 14

Leitor RFID

por Roberto Alcntara - ltima modificao 18/10/2008 17:42


Cartes RFID so normalmente usados para controle de acesso e tickets de nibus e metrs. Eles so convenientes porque no precisam de
contato direto para transferir informaes de/para o carto. Como estes cartes so alimentados pelos prprios leitores, dispensam o uso de
baterias que precisariam ser recarregadas.
Para os meus experimentos estou usando catres da HID ISProx. Estes cartes so os mais simples de toda a linha de cartes RFID, que somente
armazenam um nmero de srie e no usam criptografia. A frequncia da portadora de 125kHz.

O primeiro passo descobrir como desenvolver um leitor simples. Ns sabemos que o cartes RFID alimentado pelo campo magntico emitido
pelo leitos. As tags RFID transferem informao de volta ao leitor consumindo este campo magntico, que detectado pelo leitor como uma
variao no campo.
So chamados de "tags" RFID todos os elementos que armazenam informaes e so mveis, como o carto, neste caso especfico.

O projeto mais comum de um leitor RFID faz uso de um circuito ressonante srie. Ele consiste de um indutorsimples e um capacitor, excitados
por uma fonte de tenso de baixa impedncia. Se o Q do circuito for alto o suficiente, a tenso no ponto de amostragem (Vsample) vai exceder a
tenso de alimentao. Quando o RFID alimentado por este campo magntico o Q do circuito cai. O resultado uma pequena alterao na
tenso de amostragem (Vsample no circuito mostrado).

Eu criei um leitor simples com componentes encontrados em minha sucata. Usando um gerador de funo como fonte de sinal e um osciloscpio
no ponto de amostragem, eu pude sintonizar a frequncia at encontrar o ponto ressonante do circuito. Eu continuei substituindo os capacitores
neste circuito at encontrar a frequncia que eu estava procurando. O clculo da frequncia este:

Por alguma razo eu me confundi e iniciei o projeto tendo em mente a frequncia de 150kHz ao invs de 125kHz. As tags RFID respondem bem
a uma frequncia mais alta, ento eu mantive assim para evitar voltar a trs e redesenhar todo o circuito. :-)
Com um ajuste simples eu verifiquei quais alteraes aconteciam quando a tag RFID era submetida a 4 ou 5 ciclos de frequncia da portadora.
Uma vez que o sinal precisa ser AC e no DC, eu assumi que a frequncia de transmisso seria 150kH/8 = 18.75kHz ou 150kHz/10 = 15kHz.

Este detalhe eu encontrei em um site que foi realmente til por conter boas informaes sobre RFID:
http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/s2006/cjr37/Website/index.htm.
A tag aparentemente codifica o dado usando FSK. As duas frequncias representam o 0 e 1 lgicos.
Com esta informaes em mos, eu avancei e iniciei o projeto do meu prprio indutor-antena. Uma vez que eu mantive a idia de usar 150kHz
como frequncia da portadora, eu fiz o clculo e fiquei com uma indutncia de 160uH e um capacitor de 10nF. Eu utilizei a seguinte equao
para estimar o nmero de voltas que precisaria em minha bobina:

Onde x, y so o comprimento e a largura da bobina, h a altura e b a espessura da parte condutora. Eu utilizer x=y=6cm, h=1cm e b=0.3cm. O
nmero encontrado foi 34. Eu enrolei a bobina em uma caixa de papel que encontrei, de onde eu extrai o x e y. Depois de enrolada, a bobina foi
extrada e presa com fita adesiva.

Para um ajuste fino da frequncia ressonante do sistema todo eu decidi brincar com o valor da capacitncia. Usando o gerador de funo para
variar a frequncia e visualizando o pico da sada com um osciloscpio, eu variei os valores dos capacitores at que o pico da resposta ressonante
fosse a 150kHz. O capacitor final foi de 0.056uF. Uma vez que o meu capacitor precisa ser um valor de mercado, a bobina que eu constru
precisa ter uma indutncia maior que 160uH.

O prximo estgio era projetar o circuito analgico. Eu usei o confivel AMPOP TL062 (eu j possuia vrios desses em casa). As frequncias
envolvidas neste circuito so relativamente baixas, ento a baixa peformace em frequncia deste AMPOP no problema. Eu havia decidido
evitar um circuito complexo, ento elegi o circuito mais simples que poderia ser usado.
Ento, a idia usar um simples diodo detector. Este detector de tenso passar por um primeiro AMPOP configurado como amplificador inversor
com uma resposta em frequncia passa baixa. Isso remover uma boa parte do volume da portadora. O prximo estgio do circuito analgico
extrair o sinal FSK. O circuito mais simples que me veio a mente foi um filtro ressonante passa banda com frequncia central em torno de 17kHz.
Isso s me custaria um AMPOP. Este circuito foi desenhado no SPICE e o grfico da frequncia de resposta mostrado no final desta pgina.

A sada do passa banda um sinal que pode ser diretamente conectado um microcontrolador PIC. Eu escolhi para este projeto o bom e velho
microcontrolador PIC16F628A. Com o comparador interno eu posso receber o sinal diretamente do AMPOP e extrair o sinal digital.
A decodificao do sinal FSK feita por software, o que realmente interessante para no aumentar a nossa lista de componentes.
Para decodificar o sinal FSK eu implementei trs subrotinas que usam o TMR0 para marcar o tempo passado entre as mudanas detectadas na
sada do comparador. Nenhuma interrupo usada. Ao invs disso, as rotinas foram colocadas em loop at que um estado de mudana
detectado. O loop que faz a deteco leva em torno de trs ciclos de CPU para rodar; assim, dependendo de quando a mudana ocorre, o erro
mximo de 3 ciclos.
Algum que conhece como o hardware do PIC funciona poderia me perguntar porque eu no usei o mdulo CCP (Compare and Capture).
Infelismente eu utilizei o mdulo PWM para gerar a portadora de 150kHz. Como o CCP compartilha recursos com o mdulo PWM, apenas um
deles pode ser ativado por vez.
Para ter uma idia geral de como o sinal FSK aparece depois de digitalizado, eu adicionei um modo debug onde ele ir capturar um nmero de
ciclos de CPU ocorridos entre cada mudana no sinal de entrada.
Devido s limitaes da memria on-chip, somente 80+64 pontos de dados foram capturados. Isso no grande o sufuciente para decodificar o
dado, mas suficiente para ns desenharmos uma viso geral de como o sinal se parece.

Sada do modo Debug, logo aps o final do contador de ciclos

Neste grfico, os nmeros no eixo Y representam o tempo (em ciclos de CPU) entre cada mudana de estado no sinal de entrada. Eu decidi que
85 era um nmero bom para saber se o sinal de entrada era zero ou um. No futuro eu acabei decidindo alterar a rotina de decodificao para
contar o tempo gasto entre cada borda de subida do sinal (uma vez que o sinal no possui componente DC, isto economizaria memria j que eu
s guardaria um bit ao invs de dois). Assim, a constante utilizada no firmware do PIC cresceu e eu estou usando 170 (2x 85).
A sequncia decodificada dos dados se parece com:
0000000000000000000000001111111111111111000001111110000001111100000011111000000111111 ... ...
111111000001111110000001111100000011111111110000000000001111111111100000011111000000000000 ...
0000001111110000001111111111000000111111000000000000000000000000111111111111111100000

Voc pode ver que o dado inicia com vrios zeros, seguidos de alguns nmeros 1 que so o dado atual. A sequncia inteira continua a se repetir.
Eu conheo o sinal codificado em Manchester, ento, a partir do sinal, eu posso chegar seguinte concluso:
1. A sinal inicia com uma sequencia de zeros, superior a vinte zeros.
2. A segunda sequncia tambm sempre uma sequncia de 1 com pelo menos 15 bits.
3. Para cada bit existem entre 10 e 12 nmeros zero ou um.
4. O bit zero se no existe nenhuma mudana no sinal durante o tempo de um bit.

Um grfico rpido pode ser desenhado:

111111000001111110000001111100000011111111110000000000001111111111100000011111000000000000
-----------|-----------|----------|_________|___________|__________|----------|___________
1
1
1
0
0
0
1
0

Com essas regras em mente, eu adicionei a funo para decodificar o dado. Como um resumo de todo o sistema eu adicionei os seguintes
diagramas:

Diagrama de blocos

Esquemticos:

Analgico

Microcontrolador

Simulao Passa-Faixa:

Concluso

Atualmente eu ajustei o Vcc para 10V. A tenso se +5V extrada a partir de um regulador de tenso 78L05. O Vref setado pata a metade da
tenso de alimentao, 2,5V. Isso feito utilizando um simples divisor resistivo de 4,7k ohm.
O cdigo fonte pode ser baixado logo abaixo. Existem duas verses:
Reviso 1: 1 de Maio de 2007 - Lanamento inicial
Reviso 2: 5 de Maio de 2007 - Reviso 2
Recursos adicionados:
Auto start, iniciado quando o pino PB7 colocado em nvel alto;
Suporte a um buzzer, sada no pino 4
Deteco automtica do carto

Potrebbero piacerti anche