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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.