Arduino-RDA5807 Scan-Funktion zu empfindlich?

OP #6151031
Lesenswert?

Hallo Forum,
ich steuere ein kleines RDA5807-Radio mit Arduino Pro Mini. Im Code sind 
die Libraries "radio.h" und "RDA5807M.h" eingebunden.
Eigentlich funktioniert alles recht gut, nur die Scan-Funktion ist zu 
empfindlich!
Der Suchlauf stoppt praktisch bei jedem Müll-Signal, nicht nur bei 
sauberen Sendern. Meistens ist das dann nur dreckiges Rauschen. So ist 
es etwas mühselig bis zum nächsten sauberen Sender weiter zu klicken.

Ich finde in den Libraries nichts, was wie eine Schwelle für die 
Empfindlichkeit aussieht, die man einstellen könnte.
Kennt jemand die Libraries oder hat irgendwelche Ideen?

Danke Uwe
Angehängte Dateien:
Gast #6151052
Lesenswert?

Uwe G. schrieb:
> ich steuere ein kleines RDA5807-Radio mit Arduino Pro Mini. Im Code sind
> die Libraries "radio.h" und "RDA5807M.h" eingebunden.

Wieso postest du nicht einfach deinen ganzen Code hier, dann kann man 
dir vielleicht auch helfen. Woher sollen wir wissen was in radio.h 
definiert ist oder was für eine RDA5807M.h Datei du genutzt hast oder 
was in ihr drin steht?
OP #6151109
Lesenswert?

Mee schrieb:
> Wieso postest du nicht einfach deinen ganzen Code hier, dann kann man
> dir vielleicht auch helfen. Woher sollen wir wissen was in radio.h
> definiert ist oder was für eine RDA5807M.h Datei du genutzt hast oder
> was in ihr drin steht?

Offensichtlich war mein Ausgangspost missverständlich daher hier noch 
mal die Essenz

Uwe G. schrieb:
> Ich finde in den Libraries nichts, was wie eine Schwelle für die
> Empfindlichkeit aussieht, die man einstellen könnte.
> Kennt jemand die Libraries oder hat irgendwelche Ideen?

Wenn ich meinen eigenen Code poste (siehe angehängte Zip), weiß trotzdem 
niemand, was in den beiden dort eingebundenen Libraries steht, oder?

Bevor das wieder missverstanden wird: Ich suche KEINE Hilfe für die 
Optimierung meines eigenen Codes, sondern Jemanden der Erfahrungen mit 
"radio.h" und/oder "RDA5807M.h" hat.
Die Hauptfrage ist: Gibt es irgendwo eine einstellbare "Signal-Schwelle" 
bei der der Scan stoppt?

Gruß Uwe
Angehängte Dateien:
Gast #6151113
Lesenswert?

Du könntest eine URL zu der jeweiligen Library posten.
Dann ist wenigstens sichergestellt, dass man über die gleichen Libs 
redet.

Tipp am Rande:
Wenn man ein Radio und einen µC un unmittelbarer Nähe betreibt, und sich 
etwas ungeschickt dabei anstellt, dann ist das Störsignal u.U. stärker 
als so mancher Sender.
Dann ist das Verhalten total verständlich.
#6151153
Lesenswert?

Du kannst die AdaFruit lib brauchen und dann das wie folgt lösen:
1
for (uint16_t f  = 8750; f < 10800; f += 10) {
2
   radio.readTuneMeasure(f);
3
   radio.readTuneStatus();
4
   uint16_t noiseLevel = radio.currNoiseLevel;
5
   if (noiseLevel < lowestNoiseLevel)
6
   {
7
      lowestNoiseLevel = noiseLevel;
8
      lowestNoiseFrequency = f;
9
   }
10
}

Lässt das in einem loop vorher laufen und sortierst Dir nur die Sender 
raus mit dem kleinsten Noiselevel. Das Noiselevel kannst selber 
definieren.
Gast #6151210
Lesenswert?

Hier gibt es ein lesbares Datenblatt zum RDA5807

https://github.com/SeeedDocument/Grove-I2C_FM_Receiver_v1.1/raw/master/res/RDA5807%20Datasheet.pdf

Im Register 5, das Register welches auch die Volume Einstellung 
vornimmt, gibt es noch die Bits 11:8 die eine "Seek SNR threshold value" 
Einstellung ermöglichen.

Diese Bits werden in RDA5807M::init() auf einen fixen Wert gesetzt. 
Vielleicht probierst du hier mal verschiedene Werte aus, und schaust, ob 
du eine Verbesserung erreichen kannst.

Zeile 112:
registers[RADIO_REG_VOL] = 0x9081; // 0x81D1;  // 0x82D1 / INT_MODE, 
SEEKTH=0110,????, Volume=1

Achtung: Der Kommentar in der Zeile ist seltsam, passt nicht zum Wert.
OP #6154331
Lesenswert?

Volker schrieb:
> Zeile 112:
> registers[RADIO_REG_VOL] = 0x9081; // 0x81D1;  // 0x82D1 / INT_MODE,
> SEEKTH=0110,????, Volume=1

Ganau da lag das Problem!
Der Wert 0x9081 ist zwar in der Lib (RDA5807M.cpp) voreingestellt, setzt 
aber die Threshold-Bits (11:8) auf "0000". Das ist offensichtlich das 
Minimum. Das Datenblatt nennt "1000" als Default-Wert. Nachdem ich 
versuchsweise "0x9F81" (1111 für Bits 11:8) ins Register geschrieben 
habe, wurden nur noch die absolut stärksten Sender gefangen. Bei 
"0x9881", also dem Default von "1000" funktioniert die "Seek" Funktion 
jetzt perfekt.

Danke nochmals für den sehr guten Hinweis!
Gruß Uwe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren