Forum: Mikrocontroller und Digitale Elektronik FM1216ME mit Arduino steuern


von Tarek J. (tjp1593)


Lesenswert?

Hallo!
Ich brauche Hilfe bei meinem Radio-Tuner (FM1216ME). Diesen habe ich von 
einer alten TV-Karte abgelötet und jetzt mit folgenden Pinout 
angeschlossen:



3 - +5V
4 - SCL (I²C)
5 - SDA (I²C)
9 - AF-R
10 - AF-L
13 - +5V
Gehäuse - GND

Das Datenblatt gibt es hier: 
http://www.loharens.de/fm1216me/FM1216ME_MK3.pdf

Steuern möchte ich den Tuner mit einem Arduino Uno. Ich hab alles wie 
beschrieben angeschlossen und an den Audio-Ports (AF-R, AF-L) eine 3,5mm 
Klinkenbuchse angelötet. Der Tuner wird mit dem I²C-Scanner gefunden 
bzw. auch der TDA-Chip. Allerdings bekomme ich kein Ton aus dem Ding. 
Kein Rauschen, nichts.

von Dumpfbacke (Gast)


Lesenswert?

Tarek J. schrieb:
> Allerdings bekomme ich kein Ton aus dem Ding.

Von selber kommt da kein Ton raus.
Da musst du schon was programmieren.

Tarek J. schrieb:
> Steuern möchte ich den Tuner mit einem Arduino Uno.

Ja dann tu es doch.

von Tarek J. (tjp1593)


Lesenswert?

Ich hatte das Vorgängermodell (FM1216) da kam ein rauschen raus.

von [Frank] (Gast)


Lesenswert?

Eine ausführliche Beschreibung gibt es hier
http://www.kh-gps.de/fm1216_2.htm

von Harald P. (haraldp)


Lesenswert?

In dem Tuner sind zwei I2C-Chips eingebaut. Ein TDA für den Tuner und 
ein Chip für das ZF-Teil. Beide müssen entsprechend Datenblatt 
initialisiert werden. Übrigens kann man auch das RDS-Signal extrahieren. 
Dazu braucht man einen Extrachip (TDA7330) und einen recht hohen 
SW-Aufwand. Über das RDS-Signal steht dann auch die Uhrzeit zur 
Verfügung.
Mein selbstgebauter Radiowecker arbeitet so seit über 10Jahren.
Heutzutage würde ich das nicht mehr so bauen. Es gibt schon billige 
Radiochips mit RDS-Ausgang.

Harald

von Tarek J. (tjp1593)


Lesenswert?

Die Initialisierung von dem Tuner sollte ich noch hinbekommen. Doch bei 
dem integrierten TDA9887 eher weniger. Kannst du mir vielleicht ein 
bischen näher erklären wie die Initialisierung funktioniert?

RDS ist zwar eine tolle Sache aber werde ich Anfangs erstmal nicht 
brauchen.

: Bearbeitet durch User
von Jan B. (do9jhb)


Lesenswert?

Hi,

Im Prinzip hat der Tuner zwei I2C Adressen, einmal für den Tuner und für 
den Radiochip. An beide sendest du mehrere Konfigurationsbytes, in denen 
die gewünschten Einstellungen drin stehen (der Aufbau sollte in den 
Datenblätter der ICs zu finden sollen).

Als ich mit dem Tuner herumgespielt hatte, habe ich eine einfache 
library für den fm1216me geschrieben: 
https://github.com/jbtronics/FM1216duino
Vielleicht kannst du dir was davon anschauen.

Achtung: als ich damals experimentiert habe, war es mir nicht möglich 
den FM1216 mit der Arduino TwoWire Bibliothek anzusprechen. Er hat 
schlicht nicht geantwortet (liegt irgendwie an der Art wie die Lib die 
Adressen händelt.) Erst der Umstieg auf eine soft-i2c Lib brachte dann 
den Erfolg. Möglicherweise wurde das Problem bisher behoben, aber falls 
du keine Reaktion von Modul erhältst liegt es möglicherweise daran.

Gruß
Jan B.

PS: ich habe die Lib damals auf Basis einer Wahnsinnig guten Grafik 
erstellt, die jede Einstellungen gezeigt hat... (Ich hab es jetzt leider 
nicht mehr im Netz gefunden, aber vielleicht habe ich es noch gedruckt 
irgendwo...) Doch gefunden: 
http://dl3jin.de/rds_scanner-data/fm1216_i2c_prog.gif

: Bearbeitet durch User
von Tarek J. (tjp1593)


Lesenswert?

Durch was ersetzt man das "X". Zum Beispiel bei P7 und P5.

Hab jetzt das "X" durch eine "0" ersetzt und benutze jetzt Soft-I2C. 
Aber es tut sich immer noch nichts. Gibt es eine Möglichkeit zu testen 
ob die Kommunikation klappt? Wenn ich den normalen I2C-Scanner (Wire) 
starte findet er zwei Adressen 0x61 (0x60 wenn GND auf PIN 6 ist) und 
0x43. Wenn ich aber den I2C Scanner mit Soft-I2C starte findet er 126 
Geräte. Keine Ahnung ob diese Infomationen gerade nützlich waren! ;)

: Bearbeitet durch User
von Robert B. (soundtrans)


Angehängte Dateien:

Lesenswert?

Servus,

auch ich versuche mit dem FM1216ME/I H-3 ein kleines Projekt: Ich möchte 
in meiner Werkstatt dass Teil für den Empfang von 174.00-865.00 MHz zum 
Testen von drahtlosen Mikrofonen einrichten.
Ich habe den Baustein auch grundsätzlich mit der FM1216.h zum Laufen 
gebracht. Nun wären ein paar Features super: Suchlauf sowie Audio-Mute 
bei zu geringem bzw. keinem HF-Signal, da die Artefakte schon heftig 
sind, wenn kein Träger da ist.
Zudem möchte ich für unseren Kindergarten wenn die Qualität einigermaßen 
passt ein paar Aktiv-LS bauen, da soll dann auch Ruhe sein, wenn das 
Mikro abgeschaltet wird.

Die FM1216-Demo.ino gibt dafür leider nicht viel her. Ich habe in der 
FM1216.h die Funktionen "void scan(boolean up);" und "void scan(boolean 
up, voidFuncPtr print);" gefunden, komme aber nicht klar, welche 
Parameter in die Klammern geschrieben werden müssen, bzw. wie das Ganze 
dann funktionieren bzw. im Code umgesetzt werden soll.
Generell finde ich die Möglichkeiten, die sich in der FM1216.h 
augenscheinlich offenbaren super - herzlichen Dank an Jan Boehmer - nur 
finde ich im Netz kein dem meinem ähnliches Projekt, von dem ich mir die 
von mir gewünschten Funktionen bzw. die erforderliche Syntax ableiten 
kann.

Im Anhang habe ich mein Projekt angefügt. Natürlich gäbe es ein paar 
Grundsätzliche Möglichkeiten der Code-Optimierung ( 
(xxx.print(F("...")); Deklaration von Konstanten, etc.), die werde ich 
auch noch machen, wenn das Programm soweit läuft, dass ich es auch 
verwenden kann. Mir geht es in erster Linie darum, ein wenig mehr in die 
Möglichkeiten der FM1216.h einzutauchen, um mein oben beschriebenes Ziel 
zu erreichen.
Einen herzlichen Dank im Voraus für Eure guten Ratschläge.

Viele Grüße,
Robert

von Andreas M. (andreas_m62)


Lesenswert?


von soundtrans (Gast)


Lesenswert?

Hallo,
danke für den Hinweis, aber die Seite habe ich schon rauf und runter 
durchgeguckt, finde aber keinen Hinweis auf die Scanfunktion mit 
Arduino. Lediglich Mono/Stereo-Erkennung bzw. Umschaltung. Ebenso finde 
ich nichts zur Auswertung der Feldstärke, was ja auch als invertiertes 
"Mute"-Sensing verwendet werden könnte. Zudem sind einige Programme in 
Bascom geschrieben, was mir leider auch nicht weiterhalf. Ich habe auch 
irgendwo noch eine Seite von Heinrich Stummer vom Radiomuseum gefunden, 
die brachte auch keine neuen Erkenntnisse.
Wenn ich doch irgendwie was übersehen haben sollte, wäre ich nochmals 
dankbar für den Hinweis wo genau.
Trotzdem danke für den Hinweis.
Viele Grüße,
Robert

von soundtrans (Gast)


Lesenswert?

Hallo nochmals!
Konkret sind es folgende Befehle, die mir unklar sind - insbesondere die 
letzten beiden Zeilen.
1
setAGC(uint8_t agc);  //set AGC Take-Over Voltage
2
setGain(boolean g);  //activate Audio Gain
3
getStatus();    //Gets Statusbytes of Tuner and IF
4
isStereoTrans();  //returns true if Stereo is transmitted 
5
getPowerOnReset();  //returns Power on Reset status of IF and Tuner
6
getFreqLocked();  //returns true if PLL-Ref is locked for 1ms
7
isAGC();    //returns true if AGC is active
8
isFmHigh();    //returns true if FM-IF is high
9
isVHigh();    //returns true if Video-IF is high
10
getAFCStatus();    //returns the difference bettween nominal IF and AFC //IF(see defines AFC_xxxx)
11
12
isFinAFC();    //returns true if the IF-Freq is in the AFC-window
13
scan(boolean up);  //scan and tune to the next Station
14
scan(boolean up, voidFuncPtr print); //like scan. Calls the function between scan cycles

von Andi B. (andi_b2)


Lesenswert?

An alle die noch mit den FM1216xxx basteln. Ich kenne mindestens 3 
Versionen - den alten FM1216, den FM1216ME aus der MK3 Familie, und die 
letzten FM1216ME der MK5 Serie. Also mal sicherstellen, dass man das 
richtige Datenblatt hat. Obwohl soweit ich mich erinnere die MK3 und MK5 
sehr ähnlich waren, das genau richtige Datenblatt ist immer gut. IIRC 
kriegt man aber sowohl beim MK3 als auch beim MK5 nicht mehr so einen 
fein auflösenden RF Level Wert ausgelesen. Nur mehr 2 Bit? Für RF Level 
Anzeige war die Uraltversion besser.

Sendersuche - man muß halt händisch, also per Programm, die Frequenzen 
abfahren und schaun was rauskommt (AGC, RF-Level, Mute).

Wichtig, und ich bin ziemlich sicher dass gilt für alle FM1216 
Versionen, nach dem Einschalten muss man für kurze Zeit eine hohe 
Frequenz einstellen. IIRC kann es sonst sein, dass die interne Charge 
Pump nicht startet. Da kann man ewig z.B. im UKW Bereich suchen und es 
kommt nie was raus. Also starten und auf z.B. 863,25MHz tunen und erst 
dann die gewünschte Frequenz einstellen. HTH

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.