PC-Radio mit dem TDA7088           


Elektronik-Labor  AVR  Projekte   Bascom



Das Franzis-UKW-Radio wird entweder mit zwei Tasten oder mit einem Poti abgestimmt. Nun kommt noch eine Variante hinzu: Abstimmung über den PC. Ein AVR-Controller bildet das Interface. Im Prinzip erzeugt der Controller die benötigte Abstimmspannung für den jeweiligen Sender. Für das Projekt wurde der Mega32 auf dem ES-M32 verwendet, obwohl natürlich auch ein kleinerer Controller reichen würde. In diesem Fall erhält das Radio seine Betriebsspannung von 5 V vom Mikrocontroller. Die Verbindung zum PC ist wahlweise die RS232 oder der USB.



Hier wurde das neue entwickelte Radiomodul mit gedruckten Spulen (FM-Testplatinen) verwendet, das demnächst in einem Franzis-Bausatz erscheinen wird. Man kann aber mit gleichem Erfolg auch das bisherige Franzis-UKW-Radio einsetzen.

Zwischen Mikrocontroller und PC gibt es nur vier Leitungen: Masse, +5 V, Scan und Abstimmspannung (am Reset-Pin des TDA7088). Der Controller misst die vorhandene Abstimmspannung und kann am gleichen Pin diese Spannung auch verändern. Ein Tiefpassfilter ersetzt das ursprüngliche Abstimmpoti.




Im Betrieb misst der Controller laufend die vorhandene Abstimmspannung am Radio, die durch die ALC automatisch konstant gehalten wird. Nachdem mit Scan ein neuer Sender gesucht wurde, kennt man also die erforderliche Spannung. Um auf einen anderen Sender umzuschalten, wird der AD-Pin in kurzen Impulsen als Ausgang PortA.0 high oder low geschaltet. Nach jedem Impuls wird die Spannung neu gemessen. Ein Regelkreis sorgt dafür, dass die Sollspannung erreicht wird.  So wird aus dem 10-Bit-AD-Eingang zugleich auch ein 10-Bit-DA-Wandler.



Das Interface-Programm enthält einen einfachen Befehlsinterpreter für die erforderlichen Grundfunktionen. Hinter dem Kommando 64 verbirgt sich die Ausgabe einer Spannung am Pin ADC0.

Download: FMradioBascom.zip
Do
Get #1 , Kommando

If Kommando = 56 Then 'Spannung Messen
Dd = Getadc(0)
Hi = High(dd)
Put #1 , Hi
Lo = Low(dd)
Put #1 , Lo
End If

If Kommando = 64 Then 'Spannung ausgeben
Get #1 , Hi
Get #1 , Lo
Dd = 256 * Hi
Dd = Dd + Lo
F1 = Dd
For N = 1 To 250
D = Getadc(0)
If D < F1 Then
Porta.0 = 1 'laden
Ddra.0 = 1
Waitus 20
Ddra.0 = 0
Porta.0 = 0
End If
If D > F1 Then
Ddra.0 = 1 'entladen
Waitus 20
Ddra.0 = 0
Waitms 1
End If
Next N
End If

If Kommando = 1 Then 'Scan-Impuls
Porta.1 = 1
Ddra.1 = 1
Waitms 600
Ddra.1 = 0
Porta.1 = 0
End If

Loop

Der Regelkreis für die Abstimmspannung erzeugt die gewünschte Abstimmspannung zusammen mit etwa 50 mVss an unregelmäßigen Impulsen, die aber durch das zweite Tiefpassfilter im Radio (100 k und 100 n, Grenzfrequunz 16 Hz) geglättet werden. Der Regelvorgang hält nur für ca. 250 ms an. Danach schaltet sich der PortA.0 wieder hochohmig und überlässt der Radio-AFC den Rest. Das Radio hält dann die Abstimmspannung vollkommen glatt, sofern ein Sender eingerastet ist.



Das zugehörige PC-Programm wurde mit VB6 entwickelt. Alle Einstellungen werden beim Beenden des Programms in der Datei FM.ini gespeichert. Drückt man auf eine Stationstaste, holt sich das Programm die entsprechende Sollspannung und stellt sie ein. Beim Abstimmen schießt das Programm jeweils um vier Stufen über das genaue Ziel hinaus, damit die AFC eine Chance erhält, den entsprechenden Sender einzufangen.


Downlaad:  FMradioVB.zip
Private Sub Command1_Click() 'Scan
SENDBYTE 1
End Sub


Private Sub Command2_Click() 'Direktabstimmung
Wert = Val(Text2.Text)
hi = Int(Wert / 256)
lo = Wert And 255
SENDBYTE 64
SENDBYTE hi
SENDBYTE lo
End Sub

Private Sub FreqSet(Wert) 'Abstimmspannung
hi = Int(Wert / 256)
lo = Wert And 255
SENDBYTE 64
SENDBYTE hi
SENDBYTE lo
End Sub

Private Sub Command20_Click(Index As Integer) 'Speichern
Freq(Index + 1) = AinA10Bit
End Sub

Private Sub Command21_Click(Index As Integer) 'Stationstasten
ff = AinA10Bit
dd = Freq(Index + 1)
If dd > ff Then dd = dd + 4
If dd < ff Then dd = dd - 4
FreqSet (dd)
End Sub

Private Sub Command8_Click() 'Reset
FreqSet 750
End Sub

Private Sub Form_Unload(Cancel As Integer)
CLOSECOM
Open "FM.ini" For Output As #1
For n = 0 To 9
Print #1, Freq(n + 1)
Stationsname = Text10(n)
Print #1, Stationsname
Next n
Close 1
End Sub

Beim ersten Start muss man den Suchlauf starten: Reset und Scan. Das Radio findet dann alle starken Stationen vom unteren Bandende an. Jeder Wunschsender kann dann mit der kleinen p-Taste an dem jeweiligen Speicherplatz festgehalten werden. Zusätzlich trägt man die entsprechenden Stationsnamen in die Textfenster ein. Von nun an können die Stationstasten verwendet werden. Alle Einstellunnen werden beim Beenden des Programms in Freq.ini gespeichert.

Typischer Inhalt der Ini-Datei:

 619 
WDR 5
542
DLR
523
WDR 3
483
WDR 2
453
WDR 4
439
Essen
421
Funkhaus E
392
Essen
366
Eins Live
357
-



www.youtube.com/user/bkelektronik




Elektronik-Labor  AVR  Projekte   Bascom