Forum: Mikrocontroller und Digitale Elektronik Viel zu geringe Reichweite von RFM73P-Funkmodul


von Monika S. (robin_s)


Lesenswert?

Hallo Leute,

Mein aktuelles Projekt verwendete zur Kommunikation die recht bekannten 
RFM70-Funkmodule, was auch gut funktionierte,
jedoch haben diese eine zu geringe Reichweite, daher wollte ich nun auf 
RFM73P-Module umsteigen, welche bis zu 20dBm
Sendeleistung haben - Zumindest in der Theorie, denn bei mir komme ich 
mit Glück auf 20cm Reichweite, während ich selbst mit
dem RFM70 mindestens 10m Reichweite hatte...

Weiterhin macht es keinen Unterschied, ob der 
On-Board-PA(Power-amplifier) aktiviert ist, oder nicht...Externe Antenne 
bringt ebenfalls nichts...

Zur Ansteuerung verwende ich die Lib von 
http://projects.weber-itam.de/?p=90, welche ich auf das RFM73 angepasst 
habe.
die Module unterscheiden sich dabei nur in einigen Register 
initialisierungen, welche ich angepasst habe...

Hier mal, wie ich die Register setzte:
1
 const uint8_t PROGMEM RFM70_bank0Init[][2] = {
2
  // address data
3
  { (0x20|0x00), 0x0F },
4
  { (0x20|0x01), 0x3F },
5
  { (0x20|0x02), 0x3F }, 
6
  { (0x20|0x03), 0x03 },
7
  { (0x20|0x04), 0xFF },
8
  { (0x20|0x05), 0x01 },
9
  { (0x20|0x06), 0x07 }, 
10
  { (0x20|0x07), 0x07 }, 
11
  { (0x20|0x08), 0x00 },
12
  { (0x20|0x09), 0x00 },
13
  { (0x20|0x0C), 0xc3 },
14
  { (0x20|0x0D), 0xc4 },
15
  { (0x20|0x0E), 0xc5 },
16
  { (0x20|0x0F), 0xc6 },
17
  { (0x20|0x11), 0x20 },
18
  { (0x20|0x12), 0x20 },
19
  { (0x20|0x13), 0x20 },
20
  { (0x20|0x14), 0x20 },
21
  { (0x20|0x15), 0x20 },
22
  { (0x20|0x16), 0x20 },
23
  { (0x20|0x17), 0x20 },
24
  { (0x20|0x1C), 0x3F },
25
  { (0x20|0x1D), 0x07 } 
26
};
27
 
28
//************ Bank1 register initialization commands
29
 const uint8_t PROGMEM RFM70_bank1Init[][5] = {
30
  // address data
31
  { (0x20|0x00), 0x40, 0x4B, 0x01, 0xE2 },
32
  { (0x20|0x01), 0xC0, 0x4B, 0x00, 0x00 },
33
  { (0x20|0x02), 0xD0, 0xFC, 0x8C, 0x02 },
34
  { (0x20|0x03), 0x99, 0x00, 0x39, 0x41 },
35
  { (0x20|0x04), 0xD9, 0x96, 0x82, 0x1B },
36
  { (0x20|0x05), 0x24, 0x06, 0x7F, 0xA6 },
37
  { (0x20|0x06), 0x00, 0x00, 0x00, 0x00 },
38
  { (0x20|0x07), 0x00, 0x00, 0x00, 0x00 },
39
  { (0x20|0x08), 0x00, 0x00, 0x00, 0x00 },
40
  { (0x20|0x09), 0x00, 0x00, 0x00, 0x00 },
41
  { (0x20|0x0A), 0x00, 0x00, 0x00, 0x00 },
42
  { (0x20|0x0B), 0x00, 0x00, 0x00, 0x00 },
43
  { (0x20|0x0C), 0x00, 0x12, 0x73, 0x00 },
44
  { (0x20|0x0D), 0x46, 0xB4, 0x80, 0x00 }
45
};
46
 
47
//************ Bank1 register 14 initialization commands
48
 const uint8_t PROGMEM RFM70_bank1R0EInit[] = {
49
  // address Data...
50
  (0x20|0x0E), 0x41,0x20,0x08,0x04,0x81,0x20,0xCF,0xF7,0xFE,0xFF,0xFF
51
};

Hat vieleicht jemand die Module schon einmal verwendet, und hat ne Idee, 
woran es liegen könnte?
An der Hardware wird es wohl nicht liegen: Ich habe die Module Berreits 
gwechselt...
Versorgt werden die Module einmal mit 4,2V -  das andere mal mit 4V.

Das Datenblatt zum Modul: http://www.hoperf.com/upload/rf/RFM73P.pdf

EDIT: Habe gerade mal, ohne die Software zu ändern das RFM70 angesteckt:
Funktioniert einwandfrei und mit (hierfür) relativ hoher Reichweite,
obwohl die Register ja eigentlich ans RFM73 angepasst sind, wobei die 
änderungen
allerdings auch nur magial sind...

Wenn ich nur an einer Seite ein RFM70 einsetzte funktioniert es 
interessanter Weise auch,
die scheinen nicht viel geändert zu haben, am Funkprotokoll...

Also:
1
Sender |Empfänger  |Reichweite
2
RFM70  |RFM70      |hoch
3
RFM70  |RFM73P     |mäßig
4
RFM73P |RFM70      |etwas geringer als mäßig
5
RFM73P |RFM73P     |sehr gering

Wenn ich kein Autoacknowledge verwende sieht es so aus:
1
Sender |Empfänger  |Reichweite
2
RFM70  |RFM70      |hoch
3
RFM70  |RFM73P     |hoch
4
RFM73P |RFM70      |fast nicht mehr vorhanden
5
RFM73P |RFM73P     |fast nicht mehr vorhanden

Gruß
Robin s.

von Dieter G. (sanji)


Lesenswert?

Hallo Robin,

Du hast in dem avr-forum geschrieben, dass du das Problem gelöst hast, 
und es an einem Fehler im Datenblatt lag.

Kannst du dazu etwas mehr sagen? Ich hänge gerade an dem rfm70P Modul, 
das ja eigentlich kompatibel zum RFM70 sein sollte, aber es tut sich 
nichts.

Danke, Grüße,
Sanji

von Mike (Gast)


Lesenswert?

Dieter Gens schrieb:
> Du hast in dem avr-forum geschrieben, dass du das Problem gelöst hast,
> und es an einem Fehler im Datenblatt lag.

Das war letzten Sommer :-(
http://www.avr-praxis.de/forum/showthread.php?3088-Viel-zu-geringe-Reichweite-mit-RFM73P-Funkmodulen&s=940a5cf9bb6e640a36d486c1b302ada7&p=30694&viewfull=1#post30694

von Robin (Gast)


Lesenswert?

Moin Dieter,

Im Datenblatt war bei mir die Pinbelegung vertauscht, die richtige 
findest du
aber recht schnell mit einem Durchgangsprüfer selbst raus, da die 
schließlich
bei deinem bereits wieder anders sein kann^^.

Du kannst allerdings kein Autoacknowledge verwenden, da die Umschaltung 
zwischen senden und empfangen ja manuel erfolgt...

Ich kann aber nur empfehlen die Module dem Elektronikschrott 
hinzuzufügen und Xbees etc. zu verwenden, da sie leztendlich nur 
Probleme machen und scheinbar sehr schnell ausfallen...

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.