Forum: Mikrocontroller und Digitale Elektronik RFM12 - AFC mit VDI ohne Funktion?


von Micha D. (fuchks)


Lesenswert?

Hintergrund
Das RFM läuft auf einem Jeelink-Clone (Arduino Nano 3.0) als Empfänger 
für viele Sender. Der RFM wird nach dem Empfang schlafen gelegt und 
meldet sich bei erneutem Empfang per Interrupt wieder. Funktioniert auch 
alles problemlos, wenn die Frequenz manuell an die Frequenzabweichungen 
der Sender und des RFM angepasst wird. Das ganze soll aber auch auf 
anderen Jeelinks (-Clonen) mit anderen Sendern und entsprechend anderen 
Frequenzabweichungen vernünftig ootb funktionieren. Dafür ist ja eine 
AFC da, sollte also funktionieren - tuts aber mit diesen Einstellungen 
nicht!

Problembeschreibung
Der Knackpunkt ist die Einstellung AFC bei VDI Hi im AFC-Register: die 
AFC triggert nicht auf VDI Hi! Bemerkt hatte ich das, als die Frequenz 
des RFM etwas verändert wurde, aber auch nach längerer Zeit keine bzw. 
selten Empfang war -> keine AFC! Stellt man um auf AFC immer aktiv, dann 
arbeitet die AFC, allerdings rastet sie dann auch auf Störer/Rauschen am 
Ende des Offset-Limits ein und findet dann erst nach längerer Zeit 
wieder die richtigen Sender.

Weitere Untersuchungen
Das Offset-Limit scheint einfach nur ein crop des Ausgangs der AFC zu 
sein, also könnte die intern noch viel weiter weg sein und braucht dann 
wieder bis sie zurück findet, manchmal schafft sie das auch gar nicht 
mehr.
Das ist natürlich auch keine Lösung!
Weitere Untersuchungen zeigten, dass die AFC einfach nicht auf VDI Hi 
triggert, wie eine Auswertung der OFFS im Statusregister ergeben hat. 
Diese sind immer 0, egal welcher VDI-Modus aktiv ist - selbst bei 
dauerhaft VDI Hi (Fast, Medium, Slow, HI). Bei der Einstellung AFC immer 
aktiv schwankten die OFFS erwartungsgemäß stark im Bereich des Limits, 
aber meistens recht passend bei Empfang der Sender - auch bei 
Verstimmnung der Grundfrequenz. Auswertungen des VDI-Signals am PIN des 
RFM per Oszilloskop zeigten das erwartungsgemäße Bild: viele Impulse bei 
Fast, weniger Impulse bei Medium und "passende" Impulse bei Slow - bei 
Hi war auch dauerhaft Hi-Pegel.

Kann dieses Problem jemand nachvollziehen?
Oder kann jemand die korrekte Funktion entgegen meiner Ergebnisse 
bestätigen?
Oder eine Idee, wo das Problem liegen könnte?


Ein ähnliches Topic gabs schon mal, aber daraus geht nicht hervor, ob es 
zu meinem Problem passt:
Beitrag "RFM12 Frequenzabgleich"

1
Hardware:       RFM12S Rev 4.0 868
2
VCC & Pegel:    3,3V
3
AFC-Register:   C4A7 (AFC bei VDI Hi, Offset +7..-8, AFC ein, Offset Register ein, präziser Modus ein)
4
RC-Register:    96A2 (Gain max, BW 134kHz, DRSSI -91, VDI slow)
5
PM-Register:    820D (Crystal on, low Batt on, CLK off) 
6
DR-Register:    C610 (20.284kbps)
7
Frequenz:       868,3MHz

von Michael U. (amiga)


Lesenswert?

Hallo,

lange her, daß ich in den RFM12-Datenblättern gekramt habe...

>Der RFM wird nach dem Empfang schlafen gelegt und
>meldet sich bei erneutem Empfang per Interrupt wieder.


Mir fällt hier nur auf:

3. (a1=1, a0=0) The frequency offset is calculated automatically and the 
center frequency is corrected when the VDI is high. The
calculated value is dropped when the VDI goes low. To improve the 
efficiency of the AFC calculation two methods are recommended:
a. The transmit package should start with a low effective baud rate 
pattern (i.e.: 00110011) because it is easier to receive. The
circuit automatically measures the frequency offset during this initial 
pattern and changes the receiving frequency accordingly.
The further part of the package will be received by the corrected 
frequency settings.
b. The transmitter sends the first part of the packet with a step higher 
deviation than required during normal operation to ease
the receiving. After the frequency shift was corrected, the deviation 
can be reduced.
In both cases (3a and 3b), when the VDI indicates poor receiving 
conditions (VDI goes low), the output register is automatically
cleared. Use this “drop offset” mode when the receiver communicates with 
more than one transmitter.

Der Sender sollte also genug Pattern-Bytes vor den Sync-Daten senden, 
damit die AFC reagieren kann.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Micha D. (fuchks)


Lesenswert?

Das ist wirklich ein wichtiger Punkt, aber selbst wenn ich VDI auf immer 
HI im RC-Register definiere, gibt es keine Offset-Werte im 
Status-Register.
Dieser Modus müsste nach meinem Verständnis das gleiche sein, als würde 
ich im AFC-Register auf AFC immer aktiv schalten und das ist ja genau 
der Punkt, diese beiden Betriebsarten sind eben nicht gleich...

Hab das ganze VDI-Gedöns jetzt mal in Software nachgebaut und schalte 
die AFC nur scharf, wenn VDI slow (Software) Hi ist.
Was soll ich sagen, das funktioniert prima, bis auf dass es eigentlich 
völlig bescheuert und überflüssig ist!

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

nimm das nicht zu ernst und sei froh, wenn es jetzt klappt.
Ich habe einige RFM hier seit ein paar Jahren mit Sensoren dran laufen.
Da stand in den Datenblättern von HopeRF nur die Hälfte, keiner wußte 
100%tig, ob es ein IA4xxx oder ein SI4xxx war und was die überhaupt 
unterscheidet.

Gruß aus Berlin
Michael

von Martin M. (Gast)


Lesenswert?

Hi Micha,

ich habe auch schon mit dem effekt gekaempft, den du beobachtet hast. 
Welche Schritte machst Du denn in Software und in welcher Reihenfolge?

bye
  MM

von Micha D. (fuchks)


Lesenswert?

Hi Martin,
ich muss meine Aussage des vorigen Posts leider revidieren.
Der Fangbereich mit Software VDI oder ohne AFC ist derselbe.

Erklärungsversuch:
VDI ist je nach Einstellung abhängig von RSSI, DQD und CRL. Diese 
dürften aber sowieso nur high werden, wenn die Mittenfrequenz bereits 
gut passt (in meinem Fall +-1∆f). Also korrigiert die AFC in diesem Fall 
maximal um +-1∆f, also eine lausige AFC.
Wenn meine Sender jetzt also mehr als +-1∆f neben der aktuell 
eingestellten Mittenfrequenz liegen, dann werde ich nichts empfangen!

Ein Workaround dafür wäre ein Frequenz-Scan einzubauen: wenn eine 
bestimmte Zeit nichts gültiges Empfangen wurde -> nach einem gültigen 
Signal Suchen und die gefundene Frequenz dann als manuelle Korrektur auf 
die Mittenfrequenz anzuwenden bzw. den Ziehkondensator entsprechend 
anzupassen.

Eine vernünftige Lösung ist das aber auch nicht. Wenn meine Sender 
untereinander größere Abweichungen haben, als der Fangbereich ist, dann 
funktioniert das auch nicht.

PS: die Einstellung AFC immer aktiv ist übrigens auch Murks, da die 
Begrenzung der Offsetkorrektur unbrauchbar implementiert ist.
Die AFC arbeitet weiterhin in ihrem maximalen Bereich von -64∆f .. +63∆f 
und nur die Korrektur wird entsprechend Einstellung begrenzt.
Das hat zur Folge, dass sich die AFC gerne mal irgendwo weit Abseits der 
Mittenfrequenz festbeisst, der Offset an den Poller läuft und es 
durchaus sehr lange dauern kann, bis sie wieder auf die gewollten Sender 
einrastet.

Ich glaube, ich werde mich mal dem RFM69CW zuwenden, vlt. ist die AFC 
bei dem besser implemetiert - den JEELINK gibts auch in einer 
RFM69CW-Version.

Edit 0:10: Nach Angabe hier im Forum ist AFC aktiv wenn VDI low ist, das 
Datenblatt sagt aber das Gegenteil, was stimmt denn jetzt?

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.