Anfang August versuchten wir, ein ELV-Labornetzteil zu reparieren, das der Toolbox gespendet wurde. Die zu niedrige Ausgangsspannung konnten wir relativ bald durch den Austausch von ein paar defekten Dioden im Spannungsregler und ein paar altersschwache Darlington-Transistoren und Kondensatoren im Leistungsteil beheben. Als wir dann das Gerät wieder in Betrieb nehmen wollten, wollten auf einmal einige Tasten nicht mehr - leider ein paar wichtige. Unsere Versuche, das Frontend zu reparieren, scheiterten schließlich mit der Erkenntnis, dass ein einziges(!) I/O-Pin am unersetzbaren Mikrocontroller dauerhaft den Geist aufgegeben hatte.
Also standen wir vor der Frage, ob wir das Netzteil nun doch in den Müll schmeißen oder ein neues Frontend bauen. Zum Glück bietet ELV zumindest zu diesem Gerät einen detaillierten Schaltplan mit Beschreibung an, so dass ein neues Frontend für uns keine unüberwindbare Hürde war. Also entschieden wir uns für das Neudesign - allerdings ohne zu wissen, wie lang uns dieses Projekt dann beschäftigen würde.
Das neue Frontend basiert auf einem Arduino Uno und einem Seedstudio TFT Shield. Im Unterschied zum bisherigen LCD bietet das auch die Möglichkeit, einzelne Pixel anzusteuern, was wir gleich für ein graphisches Display des Spannungs- und Stromverlaufs genutzt haben. Um die vielen Tasten an den etwas pin-armen Arduino anzuschließen, haben wir ein Schieberegister genutzt.
Trotzdem wurde es mit den Pins eng, so dass das Schieberegister und die Display-Library sich den SPI-Bus teilen mussten. Da die Abfrage der Tastatur zeitkritisch war, andererseits aber die Übertragung an das Display auch mal länger dauern konnte, mussten wir der Display-Library hin und wieder den SPI-Bus "klauen", um zwischendurch das Schieberegister abzufragen. Schlussendlich haben wir uns dann noch elektrischem Übersprechen zwischen den Leitungen zur Tastatur-Matrix rumschlagen - was wir dann durch ein paar Filterkondensatoren klären konnten. Manchmal ist schön (sprich: Flachbandkabel vs. Kabelverhau) eben nicht die beste Lösung!
Den Quellcode für das Projekt haben wir auf Github zur Verfügung gestellt.