Hier stelle ich mein - aus einer Not heraus geborenes - Selbstbau-Projekt PICSEL vor:

Einen fernbedienbaren Quellenwahlschalter/Quellenumschalter mit Relais + Motorpoti


für meinen alten Kenwood-Hifi-Verstärker KA-990V aus den 80ern. Eigentlich ein edles Teil, aber leider sind so ziemlich alle Schalter völlig verfrittet. Mal sind auf einem Kanal die Bässe weg, mal kratzt es, mal ist links leiser als rechts, mal....
Wenn man den Verstärker eh schon zerlegt, könnte man auch das Poti durch ein Motorpoti ersetzen und die ganze Sache fernsteuerbar machen... Das schreit nach einem PIC oder so, den man bequem zu Hause programmieren kann und der nicht viel Peripherie braucht. Die Software ist in C geschrieben und daher nach Anpassung der Hardwarebezüge auch auf ATMega usw. portierbar.

Wer  mal in den Kenwood 'reinsehen will... siehe Projekt Verstärker-Tuning. Der Bauraum für das Motorpoti ist etwas Bastelei, auf die Loudness-Funktion werde ich verzichten müssen - aber ansonsten steht dem Umbau nichts im Wege. Wenn man den Verstärker geöffnet hat, kann man auch gleich ein paar weitere Verbesserungen einbringen.

Projektstatus:
Status: Fertiggestellt (Betrieb seit April 2006)
Letzte Änderung Hardware: 03.05.2006
Letzte Änderung Software: 25.05.2006
Letzte Änderung Dokumentation: 06.03.2007



PICSEL - PIC Source Selector

 

Ansicht fliegender Aufbau
Das "Quellenumschalter-Evaluation-Board" noch mit Mabuchi-Motor statt Motorpoti und cooler Tchibo-Fernbedienung



Features Picsel 1 (das "Original", abgeschlossen seit 25.05.06, zugeschnitten auf den KA-990V):

  • Fernbedienung: IR-Decodierung Tasten 1-8 für die Quellen, Vol+ und Vol- (RC5-Code)
  • Ansteuerung eines ALPS-Motorpotis als Lautsärkesteller
  • Umschalten der Audiosignale mit Relais
  • Zwei Gruppen mit 4 bzw. 3 Quellen mit gegenseitiger Auslösung: Tape A/B/C und Phono/CD/Tuner/Aux
  • 1 Taste mit Rastfunktion: Tape/Monitor
  • 8 LEDs für Anzeige des aktuellen Schaltzustandes
  • Abspeichern/Restaurieren des letzten Schaltzustandes ins/aus EEPROM
  • Tastenentprellzeit 30ms (Funktioniert sogar mit den Originaltasten einwandfrei!!!)
  • Schaltzustand dreifach im EEPROM ablegen und fehlertolerant mit 2 aus 3 lesen

 


PICSEL 1 -das Original-
Schaltplan uC
Teil 1: Schaltplan "Picsel 1" Microcontroller und Relais-Ansteuerung (Klicken für Großbild)



Teil 1: Die Steuerung

Zentrales Bauelement ist der PIC-Controller: Er liest die Taster ein, steuert die LEDs, Relais und das Motorpoti an und speichert die Einstellungen in seinem internem EEPROM. Der 16F628 ist so konfiguriert, dass er sich seinen 4MHz-Takt intern erzeugt, was für den Empfang der IR-Fernbedienung an Präzision ausreicht. Auch den Reset erzeugt sich der PIC selbst - damit sind volle 16 Pins für I/O nutzbar. :-)

Tricky ist das Einlesen der Taster (T1-T8) und Ansteuern der LEDs (D 1-8) über den gleichen Port: Der Controller (IC1) programmiert alle Ports auf Eingang, nur die aktuell gewählte Quelle als Ausgang und Low. Drückt man diese Taste nochmal passiert nichts, drückt man eine andere Taste, liest der Controller dort ein neues "Low", schaltet die "alte" LED aus, programmiert den neuen Port auf "Ausgang" und "Low" und den alten auf "Eingang". Einzige Ausnahme ist die Taste Tape/Monitor: sie hat eine "Rastfunktion", d.h. 1x drücken = ein, nochmal drücken = aus: hier muss auch bei eingeschalteter LED erkannt werden, dass die Taste betätigt wurde, daher sind LED und Taste einzeln angeschlossen. Da passt auch der Port RA5 gut ins Konzept, denn er kann nicht als Output geschaltet werden. Da der Port PA Schmitt-Trigger-Eingänge hat, muss man extern noch Pull-Ups (RN1) anflanschen, um ein sauberes "High" zu bekommen. Netter Nebeneffekt der Doppelnutzung der Taster: der LED-Strom "brennt" manche Kontaktbeläge weg.

Zur der Relais-Schaltung: Das Schieberegister (IC 2) sorgt dafür, daß wir nur 3 Pins des PIC für die acht Relais verbrauchen, die Relais-Platine mit einem 5-Adrigem Kabel anschließen und direkt an den Eingängen an der Gehäuserückwand anbringen könnten - und noch Reservepins für das Motorpoti und den IR-Empfänger übrig bleiben. Die Freilaufdioden (im IC 3, ULN2803) plus Zenerdiode (ZD 1) sorgen für kürzere Abfallzeiten als eine Freilaufdiode allein (siehe Linkliste). Die Relais sind übrigens keine Feld-Wald-und-Wiesen-Typen sondern aus der High-End-Szene bekannte Bauteile. Das RC-Glied an Pin 10 des Schieberegisters sorgt für eine Art PowerOn-Reset, ohne daß wir einen Controller-Pin dafür verbrauchen.

Der IR-Empfänger (IC 4) TSOP1736 von Vishay filtert das 36kHz-Trägersignal schon aus und liefert an seinem Ausgang das invertierte Datensignal fertig zum Decodieren (siehe Linkliste unten). Die Versorgungsspannung soll man laut Vishay-Datenblatt nochmal mit einem RC-Glied filtern (R5, C8). Sinnvoll ist es, IC4 mit dem RC-Glied auf einer separaten kleinen Leiterplatte anzubringen, die man irgendwo an der Gehäusefront nach draußen blicken lassen kann. Die Tchibo-Fernbedienung (TCM Artikel-Nr. 225926) habe ich mit dem Code 043 aus der Sparte "AUX" programmiert, sie liefert dann astreinen RC5-Code.

Die Ansteuerung des Motors aus dem ALPS-Motorpoti geschieht mit zwei der vier Halbbrücken im IC5. Der verwendete Typ hat L293D auch schon integrierte Freilaufdioden, man muss nur noch auf große Masseflächen achten, die der Kühlung dienen, wenn man das IC Dauerlastfest machen will: Der Motor des Potis zieht maximal 200mA, das IC kann 600mA dauerhaft (Kühlung!!!). Zur Erläuterung der Funktionsweise einfach mal nach "H-Brücke" googeln. Kurze Zusammenfassung: Erster Zweig auf L, der andere auf H = Motor dreht, Erster Zweig auf H, der andere auf L = Motor dreht anders herum, beide Zweige gleiches Signal = Motor steht/bremst. GANZ WICHTIG: C9 direkt in der Nähe des ICs, damit der Anlaufstrom niederohmig bezogen werden kann. Den Motor selber sollte man direkt an den Motoranschlüssen durch zwei Induktivitäten in Serie, einen Kondensator parallel und ggfs. je einen Kondensator zwischen Motorpol und Gehäuse entstören.

Aufgebaut habe ich die Schaltung komplett auf einer Lochrasterplatine (siehe Elektronik - Basteltips).

Schaltplan Motor-EMV
Entstörung des Motors direkt an den Anschlüssen



Stückliste Steuerung Picsel 1:

IC 1      PIC16F628(A) Microcontroller Microchip mit EEPROM
IC 2      74HCT595     Schieberegister seriell in parallel out
IC 3      ULN2803      8 x Lowside Switch als Relaistreiber
IC 4      TSOP1736     Vishay IR-Empfänger (z.B. bei Reichelt)
IC 5      L293D        Vierfach-H-Brückentreiber (z.B. bei Reichelt)
R 1-3     220R         Widerstand 220 Ohm 1/4W
R 4       4k7          Widerstand 4k7 1/8W
R 5       100R         Widerstand 100Ohm 1/4W
RN 1      8x4k7        Widerstandsnetzwerk 8x4k7
C 1-6     100nF        Block-Kondensatoren
C 7       100µF/10V    Elko
C 8       4.7µF/10V    Elko
C 9       470µF/10V    Elko
D 1-5     LED rot      3mm rot LEDs    (bei mir schon auf der Verstärker-LP)
D 6-8     LED gruen    3mm gruene LEDs (bei mir schon auf der Verstärker-LP)
ZD 1      ZPD4.7       Zener-Diode 4,7V
T 1-8     Taster       Einpolige Taster (Teilweise bereits im Verstärker vorhanden)
Rel 1-8   Relais       Relais 2xUm, 5V, Takamisawa RY05W-K, (z.B. bei Schuro Elektronik)

M         Motorpoti    Motor des ALPS Potentiometers 4-6V, max. 200mA
C1-3      100nF        Entstörkondensatoren
L1,L2     1µH          Entstörinduktivitäten
Schaltplan Stromversorgung
Teil2: Schaltplan der Stromversorgung


Teil 2: Die Stromversorgung

Die Stromversorgung ist recht klassisch: Brückengleichrichter, Siebung, Längsregler. Wenn man einen eigenen Kleintrafo spendiert, sollte man 7V 400mA vorsehen. Ich habe einfach eine Hilfsspannung direkt im Verstärker angezapft, allerdings mit dem Nachteil, das man IC6 auf jeden Fall kühlen muss.


Stückliste Versorgung:

IC 6      7805         Spannungsregler 5V, 1A
C 10       470µF/40V     Siebelko
C 11       22µF/10V     Elkos
GL1       B80C400      Brückengleichrichter

Software:

Hier die Picsel 1 - Quellen und Hexfile als ZIP. Version 1.5
...und die Picsel - C-Source zum Lesen

Funktionen:

init()            Initialisierung von Hardware und Variablen
write_eeprom(..)  Schreiben eines Bytes ins interne EEPROM
read_eeprom(.)    Lesen eines Bytes aus dem internen EEPROM
debounce()        Einlesen der Taster, Entprellen und Änderungdetektion (Link dazu siehe unten)
auswerten()       Auswerten der Tasten, Setzen der LEDs
collect()         Zusammenfassen des aktuellen Schaltzustandes
restore_state()   Alten Status aus EEPROM lesen, Plausibilitätscheck, LEDs setzen
set_relais()      Ausgeben des Status ans serielle Schieberegister + die Relais (rd. 57kHz seriell per SW)
do_remote()       Auswertung des RC5-Fernbedienungscodes
main()            Hauptschleife

int_server()      Interruptroutine für IR-Decoder am INT-Pin
tmr0wait()        Warteschleife mit Stoppuhr
ir_bogus()        Fehlerbehandlungsroutine
ir_philips_rc5()  RC5-Decodierung über Impulsbreite des Manchester-Codes
get_ir()          Pulsbreitenkontrolle


Weitere Links:

  • Hier gibt es noch ein recht ähnliches, gut dokumentiertes Projekt von Jos van Eijndhoven. Da habe ich auch die RC5-Routinen her: Bei den meisten RC5- Anwendungen wird das IR-Datenwort über Sampling des Pegels per Timer gelesen, Jos van Eijndhoven macht es über die Pulslängen. Cool!
  • Das Datenblatt zu den Takamisawa-Relais
  • Das Datenblatt von ALPS zu den Motorpotis.
  • Datenblatt zu den TSOP17xx IR-Empfänger von Vishay - mittlerweile durch modernere Nachfolger TSOP31xx ersetzt
  • Gute Anleitungsseite von Michael Dworkin zum Compiler CC5x von BKND.
  • Unter www.dattalo.com/technical/software/pic/debounce.html gab es mal einen Artikel zu Debouncing von Tasten auf dem PIC, sowie die Posts von Peter Dannegger im mikrocontroller-forum
  • Mein PIC-Programmer: PBrenner 5 von sprut. Auch der RC5-Code von IR-Fernbedienungen wird hier erläutert.
  • Relais schnell schalten, Relaisbeschaltung, Freilaufdiode: Elesta Relais Whitepaper und Die Appnote von Tyco "13c3311.pdf" mit dem Titel "Coil Suppression"

 

Bild KA-990V
Einbau siehe Artikel Verstärker-Tuning


Messungen:

Oszilloskop: Signaltiming
Debouncing: gut 30ms zwischen fallender Flanke (TASTE) und Ausgabe ans Schieberegister (SRCLK)


Oszilloskop: Verlauf Motorspannung
IR-Empfang und Motorspannung (schön zu sehen: der Nachlauf nach dem letzen Fernbedienungscode)


PICSEL 2 -projektiert-


Hier wird es bald den Schaltplan zu Picsel 2 geben (... so gross sind die Unterschiede zu Version 1 nicht)
...und die SW dazu natürlich auch!

Features Picsel 2 (- projektiert für einen Verstärker-Eigenbau -):

  • Ein Umschalter von 6 Quellen mit gegenseitiger Auslösung: Quellen A...F
  • 2 Tasten mit Rastfunktion: Mute und On/Standby
  • Das On/Standby-Relais mit separatem Transistor geschaltet (zur Trennung von den Audiorelais)
  • Alle LEDs werden ausgeschaltet, wenn Standby aktiv ist
  • Auswertung der Tasten On/Off und Mute auf der Fernbedienung