Gast
#3379948
Hallo :) Ich baue grade ein RFID-Lesegerät sowie RFID-Tag in Kreditkartengröße zwecks Türsteuerung. Das System hat mittlerweile eine Reichweite von 11cm, wenn ich weiter weg gehe wird das Signal stärker gestört. Um jetzt die maximale Reichweite rauszukitzeln will ich mit geeigneten Algorithmen das Signal doch noch erkennen können. Im Anhang seht ihr einmal das Signal was das Lesegerät ausgibt wenn die Karte normal weit weg ist, und einmal wie das Signal aussieht wenn die Störung zu stark wird. Das Signal selber ist so kodiert dass nach 3 gleichen Bits ein invertiertes Bit eingefügt wird. Somit wird die maximale Lauflänge begrenzt damit der Empfänger das Signal leichter auswerten kann. Ein Bit ist jeweils 700us +- 100us lang. Eine Störung ist maximal 200us lang. Sie tritt gehäuft zwischen 2 HIGH-Bits auf (da hier der Tag das nächste Bit laden muss kann er nicht kontinuierlich HIGH senden, diese Stelle ist für Störungen sehr anfällig), kann jedoch auch selten an anderen Stellen auftreten. Ab und zu kommt es auch zu einem HIGH-Glitch (also eine 1 für ein paar us die eigentlich eine 0 sein sollte). Zwischen 2 Frames sind mindestens 4 Bitzeiten LOW, sodass man sich auf den Anfang synchronisieren kann. Ein Frame ist durch die Kodierung zwischen 16 und 23 Bit lang, am Anfang befindet sich zusätzlich immer eine 1010-Präambel. Der Mikrochip, ein ATTiny13 sampled das Signal alle 50us. Er soll das Signal abtasten, rekonstruieren, eventuelle glitches entfernen und das Signal dekodieren. Danach wird das Signal per UART rausgeschickt. Mein Problem ist jetzt das rekonstruieren und entfernen der glitches. Würde kein glitch auftreten sähe meine Routine wie folgt aus:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
Leider geht das nicht wenn das Signal gestört ist. Meine erste Idee war, sich den alten Bitcount ebenfalls zu merken und wenn der neue kleiner als 4 (200us) ist, einfach den alten weiter zu nutzen als ob der glitch nicht aufgetreten ist. Nur weiß ich dann nicht wann ich die Bits eintragen soll, weil eine erkannte Flanke ja eine "falsche" Flanke sein kann. Das einlesen eines digitalen Signales ist bestimmt ein Standardproblem in der Elektronik, schließlich braucht man das fast überall. Gibt es dazu Standardlösungen oder Erklärende Artikel? Gesucht habe ich schon aber ich finde nur Seiten die sich mit dem samplen von Analogsignalen beschäftigen. Freundliche Grüße von Logic zero


