RFID mit EM4095
Zurück Home Nach oben

disclaimer

 Home
Nach oben

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RFID - Radio Frequency IDentification

Die Seite wurde im September 2007 erstellt und  laufend ergänzt.

Die RFID Technik hat  in den letzten Jahren viel Aufsehen erregt. Sei es nun in technischer  oder humaner Hinsicht. Ich denke den Chip im Ausweis kann man wohl nicht aufhalten. Warenkennzeichnung ist auch schon lange Realität. Zukünftig sollen nun auch wertvolle Güter mit dem Chip versehen werden. So kann man vielleicht irgendwann mal feststellen, wo das Postpaket abgeblieben ist, das nie angekommen ist.

Das Vorspiel

Was mich mehr fasziniert ist die Technik, die dahinter steckt. In der Hinsicht bietet das Internet nicht sehr viel brauchbares. Die Artikel in Zeitschriften sind für meinen Geschmack auch zu spezifisch. Gleichzeitig wird am Heftende das fertige Produkt angeboten. Diese Aspekte nutzen viele Firmen aus und bringen (meine Meinung) überteuerte Produkte auf den Markt.  Jetzt mag ich's aber wissen. Schafft man das selber oder nicht. Schau ma halt mal. Ärmel hochgekrempelt, nach Herstellern gegoogelt und Unmengen an Info durchgewälzt. Letztendlich liegt ein Datenblatt von der Firma EM Microelectronic Marin SA vor mir auf dem Schreibtisch. Der EM4095 ist der Chip, den ich mir ausgewählt habe. Aber woher bekommt man das IC. Laut Hersteller gibt es keinen Distributor in Deutschland. Durch Zufall kam ich in einem Forum auf die deutsche Firma    Hier kann man auch als Endverbraucher zu vernünftigen Preisen kaufen. Und schnell geht es auch noch.

Auf der Seite von EM Marin gibt es auch eine App Note 404, die den Aufbau und die Entwicklung eines Demo Board veranschaulicht. Bei meinen ersten Versuchen haben allerdings zwei von den fünf erstandenen Chips indianisches Verhalten in Form von Rauchzeichen gezeigt. Da waren' s nur noch drei.

Das Konzept

Es soll ein kleines, eigenständiges RFID-Modul entwickelt werden, das später bei Bedarf in ein Prozessor-Board (wie mein Mega8Board) eingebunden werden kann. Auf das Modul soll nur der RFID-Chip und die notwendigen Bauteile für den Betrieb des RFID kommen. Dann noch Antennenanschluss und Ein-Ausgänge für das Prozessor-Board.

Jetzt aber zur Sache

Als allererstes will ich mal den Chip kennenlernen. Bei SO16 Gehäuse erübrigt sich die Frage ob man hier sockeln und löten kann. Es muss eine Platine her.  Und was soll drauf: Lediglich der EM4095 und alles was der Reader an eigenem Umfeld braucht.

Das Layout und der Schaltplan wurde mit Eagle erstellt. Hier links im Bild sieht man auf die Lötseite der einseitigen Platine. Das Cent Stück zeigt in etwa die Größe.  Die Bauteile sind SMD und rings rüber sind Pads für die Steckverbindung und die Antenne.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hier ist schon alles verdrahtet. Auf dem Steckbrett ist die RFID-Platine links davon die Luftspule und ein Transponder 4102

 

 

 

 

 

 

 

 

Das Excel Sheet beinhaltet genau die Daten, die in der App Note 404 gezeigt werden. Die AN 404 liegt übrigens auf der gleichen Seite wie das Excel Sheet. In dem zugrunde liegenden Beispiel wird deutlich, wie man vorzugehen hat. Und schon kommt Klarheit in die Sache.

Zuerst nimmt, oder wickelt  man eine Spule, die zwischen 300 und 800 uH liegt. Hinter dem Logo verbirgt sich eine kompetente Firma, die auch preislich gesehen am Boden der Realität ist.
Es wird eine Grundfrequenz von 125 KHz zugrundegelegt. Man gibt einen Q der Spule (Gütefaktor) von ca. 40 an. Das passt lt. Messung für die Luftspule. Automatisch wird der ohmsche Widerstand der Spule berechnet. (ca. 15 Ohm). Dann wird der  Resonanzkondensator ausgerechnet (Excel). Den Wert sollte man in etwa einhalten.
Dann muss man noch zwei Kondensatoren für den Divisor berechnen. Das ist der Spannungsteiler, der für die Spannung am DMODIN Eingang verantwortlich ist. Die Kondensatoren für den Division Factor müssen so berechnet werden, dass am DMODIN nicht mehr als 4 Volt anstehen. (Verhältnis in etwa 1:30) Man kann sehr schön beim Spielen mit den Werten (1:100 und > ) sehen in welche Dimensionen die Spannung an der Spule geht. Ich war erstaunt, als da plötzlich 450 V PP angezeigt wurden. Kurz nachgemessen - stimmt.  Aber da wird es dem EM4095 richtig warm ums Herz. Also muss man den Strom etwas "ausbremsen", indem man einen Vorwiderstand in die Spule bringt.
Es gibt natürlich auch eine zu Fuß Methode. Aber warum soll man, wenn Excel das Gleiche macht. Hat man den Vorgang zur Berechnung verstanden, dann ist das eine große Hilfe.
Ich hab als Werte eine Spule von 786 uH, Q = 40, Cres = 2nF, CDV2 = 1 nF, CDV1 = 47 pF und der Serial Resistor = 68 Ohm. Und das Ergebnis kann sich sehen lassen.

 

 

 

 

 

 

 

 

 

 

Das Oszillogramm zeigt oben an der Spule gemessen die modulierten 125 KHz. Unten die Daten am Ausgang DMODOUT. Der Transponder sprudelt.

Hier zeigt das Messinstrument die Frequenz der Spule an. Gemessen ist das mit einer Schnüffelspule. (Äußere große Spule - die ist aus einer Wegfahrsperre von einem Auto)

 

 

 

 

 

 

 

 

Links zu sehen ist eine selbst gewickelte Schnüffelspule. Wer hat schon so eine Rarität wie oben gezeigt rumliegen?
1 mm Draht
60 mm x 60 mm
20 Windungen
Messung an der Spule sollten immer mit  einer Schnüffelspule durchgeführt werden. Direkt mit dem Scope kann  zu bösen  Messfehlern führen. Oskar weg und nichts geht mehr.

 

Bis hierher war es reine Hardware zum Kennenlernen der Technik und des Leser ICs. Das Modul liefert jetzt bereits Daten, wenn man einen Tag (Transponder) dranhält. Das ist am Oszillogramm oben schön zu erkennen - ein undefinierbares  Rechtecksignal. Um das zu entschlüsseln gibt's wieder was zu klären. Welcher Transponder oder Tag ist das? Das Ding heißt UNIQUE und ist ein EM4102. Datenblatt gibt's wieder bei  EM Microelectronic Marin SA. Das Datenblatt sollte man sich unbedingt sorgfältig durchlesen, um den Sinn des Ganzen zu verstehen. Kurz: Der Tag ist vom Einfachsten. Er kann kein "anti-collision" und kann nicht beschrieben werden. Er liefert nur ganz doof seine eigenen Daten in Form eines 64 Bit langen Streams. Die positive Geschichte daran ist, dass jeder Transponder-Tag ein Unikat darstellt. Das heißt auf gut Deutsch; es gibt keine zwei gleichen Tags. Jeder hat seine eigene Hausnummer eingebrannt. Drum tragen die Kühe auch so lustige, gelbe Ohrclips. So wird die Hausnummer auf die Kuh übertragen. Alles Viehzeugs, das essbar ist hat seit Euronorm irgendwo so ein Ding hängen. Zum Testen bitte einen Tag kaufen und keine Kuh plündern. Um den "Daten-Salat" mal anschaulich zu demonstrieren, hab ich mir die Arbeit gemacht den Stream eines Transponder-Tags grafisch darzustellen. 

Das Mega8-Testboard oben dient zur Zeit lediglich als Spannungsversorgung für das RFID-Modul. Nach den Versuchen für die reine Elektronik soll das Testboard dann in BASCOM programmiert werden und ordentlich arbeiten.
Die ersten Versuche waren schon irgendwie niederschmetternd und ich hab mich gewundert wie einen eine neue Technik auf Trab bringen kann. Was mir nicht bewusst war: es werden Antennenspannungen bis zu 450 Volt von dem kleinen Ding produziert. Aber irgendwie funktioniert das alles nicht so wie ich mir das vorgestellt hatte. Nach einiger Probiererei und, wie erwähnt, zwei geschossenen ICs hab ich mich wieder auf die Suche nach Info gemacht; und ich bin fündig geworden. Hier gibt es eine EXCEL-Tapete , die einiges an Rechenarbeit abnimmt.
               
              EM4095 Hardware Environment Calculation Tool

Zum Wickeln der Spule habe ich mir ein kleines Hilfsmittel gedreht. Der Einschnitt hat einen Durchmesser von 23 mm und eine Breite von 2,5 mm. Damit ist auch schon das Maß der Spule festgelegt. Die Schraube in einen Akkuschrauber eingespannt und schon kann man wickeln. Einige Versuche ergaben die Daten für eine Spule von 786 yH. Zum genauen messen der Spule hab ich mich zum Kauf eines LCR Messgerätes durchgerungen - absolut hilfreich.

Fertig aufgebaut und fast zum ersten Test bereit.

Fehlt nur noch die Luftspule.

Form rund
Isolierter Kupferlackdraht mit d = 0,2 mm
160 Windungen
Durchmesser innen 23 mm
ist rund 12 Meter Draht
Induktivität 786 yH

 

 

 

 

 

 

Links im Bild ist eine Grafik über den Aufbau des Nutzsignales zu sehen.

Zum Vergrößern anklicken.

So geht es programmtechnisch natürlich am einfachsten. BASCOM ab der Release 1.11.9.0 unterstützt jetzt auch RFID - Reader.

Mit meiner oben gezeigten Luftspule und der fertig aufgebauten RFID-Reader Platine  wurde bei  MCS Electronics die BASCOM-Library für das Beispiel unten geschrieben.

Die Herstellung der Leiterplatte  wird in Elektronik beschrieben. Wer Interesse am Layout und Schaltplan oder an der Hardware hat, der kann hier die Zipfiles downloaden.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'-------------------------------------------------------------------------------
' (c) 1995-2007 MCS Electronics
' This sample will read a HITAG chip based on the EM4095 chip
' Consult EM4102 and EM4095 datasheets for more info
'-------------------------------------------------------------------------------
' The EM4095 was implemented after an idea of Gerhard Günzel
' Gerhard provided the hardware and did research at the coil and capacitors.
' The EM4095 is much simpler to use than the HTRC110. It need less pins.
' A reference design with all parts is available from MCS
'-------------------------------------------------------------------------------


'------ Standard-Init with BASCOM ----------------------------------------------
$regfile = "M8def.dat"
$baud = 19200
$crystal = 8000000
$hwstack = 64
$swstack = 40
$framesize = 40


Shd
Alias Portb.2
Pmod
Alias Portc.0
Config Shd = Output
Config Pmod = Output

Pmod
= 0
'Shd = 1
'Waitms 1
Shd
= 0

$lib "em4095.lib"

Dim Tags(5) As Byte                   'make sure the array is at least 5 bytes
Dim J As Byte
Dim Lcd_data(5) As Byte

Config Hitag = 64 , Type = Em4095 , Demod = Pind.2 , Int = @int0

Lcd "Test EM4095"
'-------------------------------------------------------------------------------
' you could use the PCINT option too, but you must mask all pins out
' so it will only respond to our pin

' Pcmsk2 = &B0000_0100
' On Pcint2 Checkints
' Enable Pcint2
On Int0 Checkints 'we use the INT1 pin
Config Int0 = Change              'we have to config so that on each pin change
                                   ' the routine will be called

Enable Interrupts                'as last we have to enable all interrupts

Cls

Do
If Readhitag(tags(1)) = 1 Then   'this will enable INT1
Disable Interrupts
Cls
Locate 1 , 1
For J = 5 To 1 Step -1
Lcd Hex(tags(j)) ; ",";
Next
Else
Cls
Locate 2 , 1
Lcd "nothing "
End If
Waitms 500
Enable Interrupts
Loop

Checkints
:
Call _checkhitag                   'in case you have used a PCINT, you could have
                                    'other code here as well

Return
'-------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Und der Schluss vom Test - Na geht doch

 

 

 

 

Im Display ist jetzt die Hausnummer vom Transponder zu sehen, und zwar so, wie es im Chip steht - Konform mit der Auswertung des Datenstrings oben mit der "zu Fuß" Methode. Ich wollte es ja wissen; ob man die Technik selber in den Griff bekommt. Es funktioniert  tatsächlich. Ein langer Weg.  Rückblickend kann ich sagen  -  Der Aufwand hat sich auf alle Fälle gelohnt.

 

 

 

 

 

 

 

 

 

Im Beispiel oben sieht man, dass ich die For Next Schleife mit Step -1 benutze. Das hat auch einen Grund. Die Daten des TAGs werden beim Lesen in der LIB-Funktion auf dem Stack byteweise abgelegt. Liest man sie wie im BASCOM Beispielcode als normales Array aus, dann ist die Reihenfolge der einzelnen Bytes umgedreht. Das sollte man wissen und berücksichtigen, wenn man die Daten weiter verarbeitet. Meine Beispiel-Kuh von oben würde sich drüber freuen - Denn geht es im Schlachthof mit rechten Dingen zu, dann bleibt sie am Leben.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Und wie geht's weiter

 

 

 

 

 

 

 

 

 

 

 

 

 

Der erste Prototyp des Readers - Ein RFID Sandwich.

 

 

 

 

 

 

Der Grundaufbau ist eine Rechteckform beider Platinen - RFID und Powerplatine. Damit die Platinen in eine Unterputzdose passen, sind sie so konstruiert, dass der runde Teil ausgebrochen werden kann. Über Abstandsbolzen können beide Platinen zum Sandwich verschraubt werden.

 


 

Platinen

 

 

Dem Mega8 ist es egal ob er mit Basic, C, Assembler oder was auch immer gefüttert wird. Die SPI-Schnittstelle, die herausgeführt ist, macht's möglich. Datentransfer über RS232  macht die RFID-Platine flexibel. Eine LED kann zur Zustands- oder Funktionsanzeige programmiert werden. Und ein Transistor mit Open Collector dient als Treiber für Peripherie wie Relais etc.

 

Die RFID Platine ist mit Flat Packs aufgebaut. Normale DIL-ICs sind eine Nummer zu groß. Auf einer Fläche von 48x50 mm sind Prozessor, RFID Chip, Serielle Schnittstelle, Programmierschnittstelle, Quarz, LED Anzeige, Treibertransistor und Reset Taster untergebracht.
Der Mega8 kann auf der Platine programmiert werden. Über RS232 kann man vom PC aus zugreifen.

 

 

Die Power Platine wird von außen über eine Klemmleiste mit  Spannung versorgt. Gleich oder Wechsel ist egal. Dafür ist ein Gleichrichter integriert. Ein Netzteil liefert 5V Gleichspannung für die RFID Platine. Über eine weitere Klemmleiste wird ein potentialfreier, frei verfügbarer  Relais-Kontakt herausgeführt. Z.B. Türöffner.

 

Die Platine ist nicht selbst gemacht. Doppelseitig und eine hohe Dichte. Das überlass ich lieber dem Fachmann. Heinz hat das prima hin bekommen. Den Heinz hab ich bei IBÄH unter Platinen gesucht und auch gefunden. Klick auf das Bild führt zu Heinz.

 

 

 

 

 

 

 

Hier rechts - nach langer Zeit vom neuen Spielzeug einer CNC Fräse weg, und wieder an den Lötkolben zurück - die fertig bestückte Powerplatine des RFID-Sandwich. Hier ist die Stromversorgung und das Türöffner-Relais drauf.

 

 

 

Links das Rahmenblech eines Lichtschalters soll der Träger für das RFID-Sandwich werden. Die Powerplatine kommt noch über Abstandsbolzen hinten dran. Das ganze passt dann in eine Unterputzdose.

 

 

Unten die fertig bestückte RFID Platine in Vorderseite und Rückseite.

 

 

 

 

Auf der Vorderseite sieht man die grünen Stecker für Serielle, SPI und Antenne. Reset Taster und Quarz sind auch vorne. Mittig ist der Sockel für die LED.

 

 

Das RFID-Sandwich komplett aufgebaut

Die Rückseite Trägt die Steckverbinder für die Spannungsversorgung und den Relais- Ausgang. Beide werden zur Powerplatine verkabelt.

 

 

Die beiden Platinen sind nun über Abstandsbolzen verschraubt und am Rahmenblech  befestigt. Das Rahmenblech selbst wird in eine Unterputzdose eingeschraubt. Der große Plastikrahmen wird nach dem Einbau des Sandwiches auf das Rahmenblech geschraubt und die Abdeckkappe draufgedrückt. In der Abdeckkappe sind die LED und die Antenne mit Heißkleber eingegossen. Zieht man lediglich die Abdeckkappe ab, dann kann man mit dem PC an das Sandwich - zum Programmieren oder an die Serielle. Die Reset Taste ist auch so zugänglich. Obwohl die Antenne direkt in einem Metallrahmen eingebaut ist, beträgt die Reichweite des Tags doch noch ca. vier Zentimeter - ist auch zwecks Störsicherheit so gewollt. Die Platinen selbst haben auch "viel" Massefläche, so dass Störeinflüsse gering gehalten werden. Zum Kippen bringt man, wenn man will, das ganze allemal. Das wäre die erste Elektronik, die Wunder vollbringt. Jetzt muss das RFID-Sandwich nur noch mit Software gefüttert werden.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 Zum Türöffner programmiert - eingebaut - und läuft

 

 

Taktet man den Mega8 intern, so kann man einen Uhrenquarz anstelle der 8 MHz-Quarz-Beschaltung verwenden.  Das RFID-Sandwich kann dann per Software leicht vom einfachen Türöffner zum Zeiterfassungssystem "aufgebohrt" werden. Die RS232.Schnittstelle wäre als Datenkanal zu einem PC-Programm denkbar. Wie weiter oben schon erwähnt, bietet das Konzept eine Menge an Möglichkeiten.

 

Aufgemotzt mit Uhrenquarz

 

 

 

 

Schwierigkeiten mit dem EM4095

 

Das Bild zeigt ein Programm, das ich in Visual Basic geschrieben habe. Es bildet nun die Schnittstelle zum PC und besteht aus drei Grundelementen: Port Einstellungen mit Schalter für Verbinden und Trennen, Wahlmöglichkeit für die gängigen Baudrates und Wahlmöglichkeit eines tatsächlich am PC vorkommenden COM-Ports. Zum Zweiten ein Fenster für Datenempfang. Und zum Dritten ein Fenster für Dateneingabe und Senden an den COM-Port. Als Ergänzung kann man noch Dinge wie Speichern in Datei einbinden. Denkbar wäre auch ein  Menue vom "Sandwich" an den PC auszulagern.

 

 

Das Gegenstück am PC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Was tun, wenn nichts geht - oder wenn's nicht mehr geht. Vor diesem Problem stand ich auch sehr oft. Was kann man tun - wo langt man hin - auf was ist zu achten. Einige Erfahrungswerte habe ich auf einer Extraseite zusammengestellt.

 

 

 

 

 

 

Das war' s vorerst mal

 

Diese Seite habe ich beim "Reinschmecken" in die RFID Technik mitgeschrieben. Die durchwegs positive Resonanz von einigen sehr netten Menschen die  mir geschrieben haben, sei es wegen Problemen beim Nachbau oder einfach so, hat mir gezeigt, dass dieses interessante Thema nicht nur mich beschäftigt. Schwer beeindruckt hat mich, dass Resonanz aus allen Ecken der Welt gekommen ist. Besonderes gefreut hat mich die Anerkennung meines Engagements und die positive Beurteilung meiner Seite vom Hersteller des EM4095.

 

 

 

Das Sandwich ist außer Reset ohne weitere Tasten konstruiert. Deshalb habe ich die Software, die übrigens in BASCOM 1.11.9.0 geschrieben ist, so ausgelegt, dass zu allererst ein Tag als Master einprogrammiert werden muss, um auf das Sandwich zugreifen zu können. Dieser Master Tag übernimmt  nun softwaremäßig die Funktion eines Tasters zur Eingabe. Weitere Tags können dann nur über diesen Master einprogrammiert werden. Und das ist  hier zu finden.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Mit diesem Grundstock lässt sich nun allerhand realisieren. Der Fantasie sind keine Grenzen gesetzt - Türschloss, Zugangskontrolle, Wegfahrsperre. Um nur einiges zu nennen.