Elektor DSP-Radio mit RC5-Fernbedienung


Elektronik-Labor  Projekte  HF  DSP-Radio



Kürzlich habe ich eine RC5-Fernbedienung eines defekten Videorekorders in die Hände bekommen. Da wurde die Idee geboren: Das Elektor-DSP-Radio braucht eine Fernbedienung! Weil ich schon länger nicht mehr an der Firmware gearbeitet hatte, musste ich mich mal wieder ganz neu einarbeiten. Bei der Gelegenheit habe ich den Bascom-Bootloader installiert. Ich konnte genau die Version nehmen, die ich mal an die Arduino-Platine angepasst hatte. Allerdings hat der Arduino 16 MHz, das Radio verwendet 8 MHz. Deshalb muss der Bootloader in Bascom auf die halbe Baudrate 9600 eingestellt werden.



Mit dem Bootloader macht die Entwicklung Spaß. Man kann auch prima nebenbei Radio hören, denn die Funktion des SI4735 bleibt sogar während des Uploads erhalten. Man muss jedesmal nach dem Start des Bootloaders einen Reset ausführen. Dazu verwende ich einen Jumper am ISP-Stecker. Da nur der Controller resettet wird läuft der Radiochip weiter. Speziell für die Entwicklungsphase habe ich die Frequenz meines wichtigsten Senders (DLF 102,8 MHz) vorne als Konstante eingetragen. Es gibt dann bei jedem Upload effektiv nur eine Pause von einer Sekunde zum Neustart des Programms.



Der Infrarotempfänger vom Typ TSOP1736 benötigt eine Betriebsspannung von 5 V, während der Empfänger mit 3,3 V läuft. Später soll einmal der neue Typ 31236 eingesetzt werden, der auch mit 3,3 V auskommt. Vorläufig habe ich allerdings die 5 V vom USB benutzt. Die Pegelwandlung auf 3,3 V erfordert nur eine Diode. Der entsprechende Eingang muss mit einem internen Pullup initialisiert werden. Die Diode zieht dann die Spannung aktiv herunter, wenn ein Signal erscheint. Die Frage nach dem Eingangsport war gar nicht so einfach zu beantworten, weil eigentlich kein einziger Pin des Mega168 mehr frei ist. Die Wahl fiel auf den PWM-Ausgang B1, wobei die S-Meter-Funktion geopfert werden musste. Der Pin ist an der Schraubklemme K2 zugänglich.

Der richtige Spaß am Radiohören erfordert auch die passende Spannungsversorgung. Seit längerem ist hier ein Li-Akku im Einsatz. 3,7 V ist zwar relativ knapp, reicht aber gerade noch. Jetzt habe ich, um den Luxus komplett zu machen, eine kleine Ladeschaltung hinzugefügt. Über eine Si-Diode und einen Widerstand mit 30 Ohm wird der Akku vom USB nachgeladen. Wenn also Feierabend ist und der PC ausgeschaltet wird, habe ich genug Saft auf dem Akku um das Radio auch am Abend zu hören. Dann aber derzeit noch ohne Fernbedienung,.



Bei der Initialisierung des RC5-Empfängers muss man beachten, dass hier der Timer 0 im Interrupt verwendet wird. Das Radio verwendete den Timer 0 allerdings schon für eine Interruptroutine zur Abfrage des Inkrementalgebers. Diese habe ich deshalb jetzt auf den Timer 2 umgesetzt.  Außerdem hat sich gezeigt, dass die Timer-Abfrage zu viel Zeit frisst, was den RC5-Empfang stört. Der Timer2 wurde deshalb auf den Vorteiler 64 umgestellt.

Config Timer2 = Timer , Prescale = 8                        'Geändert auf Timer 2, Timer0 für Rc5
On Ovf2 Tim2_isr
Enable Timer2
Enable Interrupts

Portb.2 = 1 'Pullups S2...,S5
Portb.3 = 1
Portb.4 = 1
Portb.5 = 1

Portc.1 = 1 'Encoder
Portc.2 = 1

Ffm = 10280 'DLF
Vol = 45
Vol2 = 45

Ddrb.0 = 1 'Bandswitch
Ddrc.3 = 1
Initlcd
Waitms 100

Portb.1 = 1 'Pulup Rc5
Config Rc5 = Pinb.1
Enable Interrupts

Dim Address As Byte
Dim Comrc5 As Byte
Dim Togglebit As Byte
Dim Togglebit_alt As Byte


Die eigentliche Empfangsschleife für RC5-Signale fügt sich nahtlos in die bestehende Bedienungsschleife ein. Alle alten Funktionen, also die Bedienung über Tasten und über den Inkrementalgebner bleiben erhalten. Die Geräteadresse ist 5, weil die verwendete Fernbedienung von einem Videorekorder stammt. Vorerst sind nur die Senderwahl auf UKW und die Lautstärke fernsteuerbar. Hier habe ich erstmal nur konstante Frequenzen auf die Tasten 1 bis 9 gelegt. Das passt in diesem Fall gut auf die WDR-Sender, WDR2 liegt auf der 2, WRD5 auf der 5 usw. Zusätzlich war mir auch die Lautstärke wichtig. Weil die Fernbedienug von einem Videorekorder stammt, hat sie keine dafür vorgesehenen Tasten. Ich verwende nun die Programm-Tasten P+ (Kommando32) und P- (Kommando 33) für die Lautstärker, d.h. P steht ab sofort nicht mehr für Programm sondern für Power.

'************** Volume *******************
Pot = Getadc(0)
Pot = Pot / 16
Dif = Pot - Vol
Dif = Abs(dif)
If Dif > 1 Then
Vol = Pot
Rx_volume
End If

'************** RC5 *******************
Getrc5(address , Comrc5)
If Address = 5 Then
Togglebit = Comrc5 And 128
'Print Comrc5
Comrc5 = Comrc5 And 127

If Comrc5 = 32 Then
Print Comrc5
If Vol2 < 63 Then Vol2 = Vol2 + 1
Rx_volume2
End If
If Comrc5 = 33 Then
Print Comrc5
If Vol2 > 0 Then Vol2 = Vol2 - 1
Rx_volume2
End If

If Togglebit_alt <> Togglebit Then
If Comrc5 > 0 And Comrc5 < 10 Then
Print Comrc5
If Comrc5 = 1 Then Ffm = 10670
If Comrc5 = 2 Then Ffm = 9920
If Comrc5 = 3 Then Ffm = 9510
If Comrc5 = 4 Then Ffm = 10130
If Comrc5 = 5 Then Ffm = 8880
If Comrc5 = 6 Then Ffm = 10280
If Comrc5 = 7 Then Ffm = 9650
If Comrc5 = 8 Then Ffm = 10220
If Comrc5 = 9 Then Ffm = 10330
Fm_tune_freq
Locate 1 , 1
Lcd Ffm
Lcd " "
'Ffm = Fmmemory(comrc5)
End If
End If
Togglebit_alt = Togglebit
End If
Loop


Damit sich die Lautstärkeeinstellung nicht mit der über das Poti beißt musste ich eine zweite Lautstärkeprozedur einfügen. Der Unterschied ist nur, dass hier eine eigene Variable Vol2 benutzt wird.

Sub Rx_volume()
I2cstart
I2cwbyte 34
I2cwbyte &H12
I2cwbyte &H00
I2cwbyte &H40
I2cwbyte &H00
I2cwbyte &H00
I2cwbyte Vol
I2cstop
End Sub

Sub Rx_volume2()
I2cstart
I2cwbyte 34
I2cwbyte &H12
I2cwbyte &H00
I2cwbyte &H40
I2cwbyte &H00
I2cwbyte &H00
I2cwbyte Vol2
I2cstop
End Sub


Download: ElektorSDRrc5.zip


RC5-Empfänger für 3,3 V



Inzwischen habe ich den TSOP31236 bekommen. Es gibt ihn u.a. bei Reichelt.  Das IC kann direkt mit 3,3 V (Bereich 2,5 V bis 5,5 V) betrieben werden. Weitere Verbesserungen sind  geringe Stromaufnahme, verbesserte Fremdlichtsicherheit und Unempfindlichkeit gegen Spannungs-Restwelligkeit. Trotzdem habe ich noch einen Bypasskondensator mit 100 nF an die Versorgungsanschlüsse gelegt. Das IC kann jetzt ohne Tricks direkt an 3,3 V betrieben werden.



Elektronik-Labor  Projekte  HF  DSP-Radio