Skip to content

Ein- und Ausschalter für Labornetzteil KD3005P

Grundlagen

Wie im vorangegangenen Post Graphische Benutzeroberfläche für Labornetzteil beschrieben können Befehle über die serielle Schnittstelle von einen Computer an das Labornetzteil gesendet werden. Die Dokumentation der Befehle ist im Handbuch ab Seite 12 zu finden. Wenn die Befehle OUT0 oder OUT1 gesendet werden, kann der Ausgang des Netzteils aus- oder angeschaltet werden. Die Bitrate beträgt 9600 Baud.

Diese Befehle sollen von einen Mikrocontroller gesendet werden, wenn sich die Schalterposition des An- und Ausschalters geändert hat. Dadurch kann der Ausgang der Stromversorgung aktiviert oder deaktiviert werden.

Untersuchung des Aufbaus des Labornetzteils

Durch einige Schrauben kann das Gehäuse des Labornetzteils geöffnet werden. Im hinteren Teil des Netzteils ist die Kommunikationsplatine zu erkennen. Diese stellt eine galvanisch getrennte Verbindung über RS232 oder USB zum Computer her.

alt:"Geöffnetes Labornetzteil", w:50

Sehr auffällig ist die vierpolige Leitung, die von der Kommunikationsplatine zur Hauptplatine in der Front geht. Wie zu erwarten überträgt diese Leitung das UART-Signal. Die genaue Pinbelegung ist in folgender Tabelle zu sehen:

Pin Farbe der Ader Belegung
1 rot GND
2 schwarz UART: MCU → PSU
3 schwarz UART: MCU ← PSU
4 schwarz 3,3 V

Umbau

Die vierpolige Leitung führt auf Hautplatine in ein JST-Verbinder und kann dort getrennt werden.

alt:"Steckverbindung der UART-Leitung", w:50

Außerdem wurde in die Front ein Schalter eingebaut, der mit einer zweipoligen Leitung versehen wurde, die auf die Mod-Platine gesteckt werden kann. Um diesen Schalter einzubauen, musste die gesamte Front und Hauptplatine abgebaut werden.

Anschließend habe ich eine kleine Platine mit einen MSP430-G2553 gelötet. Die serielle Schnittstelle wird an die entsprechend vorgesehenen Pins angeschlossen. Außerdem wurde der Schalter mit einen freien GPIO-Pin verbunden.

Auf der Platine ist ein zusätzlicher JST-Verbinder zu sehen. Hier kann die serielle Schnittstelle verbunden werden, sodass die Kommunikation mit den PC weiterhin möglich ist.

alt:"Vorderseite der Platine", w:50 alt:"Rückseite der Platine", w:50 alt:"Einbau der Platine", w:50

Programmierung

Der MSP430-G2553 wurde mit Code Composer Studio programmiert. Die zugehörigen Projektdateien sind in Github-Repository zu finden: https://github.com/RobFro96/KD3005P_OnOff

Im folgenden Quelltext soll der Ablauf des Programms grob beschrieben werden, sodass die Programmierung auch für andere Mikrocontroller nachvollzogen werden kann:

// Globale Variable: Speichern des letzten Zustands des Schalters
static uint8_t last_state = 0xff; 

int main(void) {
    // Initialisierung des GPIO der seriellen Schnittstelle (9600 Baud)
    ...

    // 100 ms Warten, damit erster Befehl von PSU empfangen werden kann.
    _delay_cycles(100000L); 

    // Aktualisieren des Schaltzustands
    update_state();

    while (1) {
        // Warte, bis serielle Schnittstelle Daten gesendet hat
        while (!(uart_flags & UART_TXD_FINISHED))   
            ;

        // Zustand aktualisieren
        update_state(); 
    }
}

static void update_state() {
    // Auslesen des Schalterzustandes
    uint8_t current_state = (P1IN & SWITCH) ? 1 : 0;    

    if (current_state != last_state) {
        // Schalterzustand hat sich geändert
        last_state = current_state;

        if (current_state == 0) {
            // Schalter in OFF-Position -> Ausgang ausschalten
            uart_tx_start("OUT0", 4);
        } else {
            // Schalter in ON-Position -> Ausgang anschalten
            uart_tx_start("OUT1", 4);
        }
    }
}

Implementierung mit anderen Mikrocontrollern

Der MSP430-G2553 ist der Mikrocontroller, den ich gern für eine Vielzahl von Projekten einsetze. Dieser muss mit einen Launchpad oder einen FET von Texas Instruments programmiert werden.

Jedoch können für diese recht einfache Anwendung auch andere Mikrocontroller verwendet werden. Eine Betriebsspannung von 3,3 V ist hierbei ein wichtiges Kriterium. Zum Beispiel könnte ein ATtiny verwendet werden. Eine serielle Schnittstelle wird nicht zwingend benötigt. Mit Hilfe von Bitbanging kann die OUT0 oder OUT1-Nachricht vom Mikrocontroller ausgegeben werden.

Hierbei ist aufzupassen, dass ein Open-Kollektor-Ausgang am Mikrocontroller hergestellt wird. Sonst kommt es bei der Verwendung der PC-Kommunikation zu einen Kurzschluss am Pin. Ein Open-Kollektor-Ausgang kann über mehrere Methoden hergestellt werden:

  • Umschalten des Pins zwischen Ausgang und Eingang im Programm
  • Einfügen einer Diode
  • Aufbau einer Kollektorschaltung mit einen Transistor, Negation des Pin-Ausgangs ist notwendig