Benutzer-Werkzeuge

Webseiten-Werkzeuge


hardware:dac_kanalwahlschalter

Kanalwahlschalter mit ATMega8, EA DOG-M 162 und Drehencoder

Nach ein paar weiteren Versuchen habe ich es geschafft, die Schaltung LCD EA DOG-M162 und ATMega8 mit SPI mit einem funktionierendem Backlight-Timer auszustatten und den Drehencoder in einer vernünftigen Reaktionszeit zu versehen. Danach war der Weg zu dem ursprünglich vorgesehenen Kanalwahlschalter meines DACs frei. Bis dato hatte es ein einfacher Umschalter mit LED-Anzeige (an: Toslink, aus: Kabel) getan. Zwei Kanäle waren mir aber zu wenig, da ich zwei Rechner und ein CD-Player anschliessen wollte. Im DAC ist bereits ein 3-nach-8 Analogmultiplexer MC14051 (kompatibel CD4051, HEF4051 etc.) verbaut, so dass es ein leichtes ist, eine entsprechende Ansteuerung hinzubekommen.

Das erste Bild zeigt den Prototyp mit Resettaster und 16 MHz Quarz für die Softwareentwicklung. Beide Bauteile sind mittlerweile nicht mehr vorhanden und der Mikrokontroller (µC) ist jetzt unterhalb des Displays verschwunden. In der neusten Version sind viele Bauteile als SMD ausgeführt, auch ein neuer Drehencoder ist verbaut. Das blaue Display musste wegen eines mechanischen Defektes ausgetauscht werden. Es wurde durch eine Variante mit weißer Schrift auf schwarzen Hintergrund ersetzt. Jetzt fehlt nur noch der ISP-Anschluss (diesmal 6polig) und die Verbindung zum Multiplexer. Die Eingangsschaltung wurde von zwei Kanälen (BNC und Toslink) auf vier (zwei Toslink, BNC und Cinch/Coax) erweitert

Bedienung

Start

Beim Einschalten des DACs wird zuerst ein Muting durch die Auswahl eines nicht verwendeten Kanals durchgeführt, da derzeit der DAC noch nicht auf die Auswertung des Muting-Bits umgestellt ist. Danach wird die Versionsnummer für 3 Sekunden ausgegeben. Erst danach wird der zuletzt gewählte Kanal geschaltet.

Mit dem Drehencoder wird der Kanal ausgewählt, der nach kurzer Zeit zusammen mit dem Abschalten bzw. Dimmens des Backlights umgeschaltet wird. Der ausgewählte Kanal wird im EEPROM des Microkontrollers gespeichert und steht beim Einschalten zur Verfügung. Eine vorzeitige „Abnutzung“ des EEPROMs wird durch eine Überprüfung des zu schreibenden Wertes mit dem gespeicherten vermieden, in dem nur bei Änderungen gespeichert wird.

Probleme

Ist das Backlight ausgeschaltet und der µC wartet auf die nächste Eingabe (ToDo: Sleep-Modi des Mega8 nutzen), wird mit einem Dreh zwar das Backlight eingeschaltet, aber es folgt noch keine Weiterschaltung des Kanals. Aufgrund der Mechanik des Drehencoders kann es auch zu Fehlauswertungen kommen und die Kanalwahl springt willkürlich. Das ist im Moment nicht zu vermeiden. Ein anderes Timing und ein neuer Drehencoder (Alps STEC11B04 mit 15 Impulse bei 30 Rastungen anstelle Alps STEC11B09 20/20) reduziert das Problem.

Schaltung

Die Schaltung läuft auf dem internen Oszillator bei 1 MHz und benötigt daher keinen externen Quarz. An PC0 bis PC2 ist der Multiplexer angeschlossen, PC3 ist Ausgang für das Backlight und PC4 ist in der Software für den Anschluss an den Muting-Schaltkreis vorgesehen.

  • Encoder: CON2 mit CON4 verbinden
  • DAC: CON3 mit CON5 verbinden
  • CON1 ist der ISP
  • Vcc = +5V (z.B. µa78L05)

Aktuelle Hardwareversion:

  • Mehr SMD-Bauteile (u.a. BSS138 anstelle BS170)
  • Die LED-Beleuchtung mit einer Kombination aus 1k und 2k-Poti einstellbar gemacht

Software

Software Version 0.3.1
  • Geänderter Einschaltscreen (zusätzlich noch Hardwareversion)
  • Texte geändert
  • Problem mit dem EEPROM Flashen behoben (Double statt Byte im .eseg)
  • Überprüfung des EEPROMs auf gültige Werte
  • Schreibvorgänge ins EEPROM werden nur noch durchgeführt, wenn sich der Wert vom gespeicherten unterscheidet
  • Support von Double-Height-Font (sieht aber eher bescheiden auf dem Display aus)
  • Timing und Auswertung vom Drehencoder etwas geändert (STEC11B04 mit 15/30 funktioniert besser als STEC11B09 mit 20/20)
Software Version 0.3

Die Fuses müssen wie folgt gesetzt werden:

  • Low: 0xA1
  • High: 0xD9

Die Software besteht aus fünf einzelnen Dateien. Für dieses Wiki ist der Umfang etwas zu groß, um es hier anzuzeigen.

Issues

  • Unter bestimmten Bedingungen wird der ausgewählte Kanal im EEPROM gelöscht.
hardware/dac_kanalwahlschalter.txt · Zuletzt geändert: 21.08.2016 12:05 von udo