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.
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.
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
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
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
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
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
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
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 |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.