Eingangs-Port vom .Net Microcontroller – Einen Schalter anschließen

Heute beschreibe ich, wie du den digitalen InputPort von einem .Net-Microcontroller nutzen kannst. Beispielhaft werde ich einen Taster anschließen und mittels C#-Programm auslesen. Außerdem erkläre ich die Funktion vom PullUp- und PullDown-Widerstand.

 

Einleitung

Den Schaltzustand von einem Taster auszulesen ist nicht schwierig – zumindestens nicht mehr für dich, nachdem du diesen Beitrag gelesen hast. 😉

Grundsätzlich gibt es zwei Möglichkeiten wie der Taster an einen Input-Port angeschlossen werden kann.

 

1. Der Schalter verbindet den Input-Port mit Masse (PullUp aktiviert)

Schaltplan Schalter über PullUp an InputPort

Für den InputPort kann ein interner PullUp-Widerstand aktiviert werden. Diesen Widerstand habe ich in dem Schaltplan der Übersichtlichkeit halber extern eingezeichnet. Ist der Schalter offen, fließen über den PullUp-Widerstand 3.3 V zum Eingangs-Port. Dieser liest dann ein logisches „ein“-Signal. Ist der Schalter geschlossen, liegt der Port auf Masse und liest ein logisches „aus“-Signal. Die Logik ist zum Schalterzustand genau umgekehrt, was du im Programm beachten musst.

Code
InputPort buttonPort = new InputPort(FEZCerbuinoBee.Pins.D0, true, Port.ResistorMode.PullUp);

while (true)
{
    bool buttonPortState = buttonPort.Read();

    // Wert negieren, weil der PullUp-Widerstand aktiviert ist
    // und daher die Logik vertauscht ist.
    var isPressed = !buttonPortState;

    if (isPressed)
    {
        Debug.Print("Schalter ist gedrückt");
    }
    else
    {
        Debug.Print("Schalter ist nicht gedrückt");
    }

    Thread.Sleep(100);
}

Zuerst wird ein Objekt für den InputPort instanziiert. Im Konstruktor wird angegeben, dass der interne PullUp-Widerstand aktiviert werden soll.

In der Endlosschleife wird der Portzustand abgefragt. Weil der logische Wert vom Port genau umgekehrt ist, wird der Wert für die weitere Benutzung negiert.

Über Debug.Print() wird eine Nachricht abgeschickt, die über das Output-Window („Ausgabefenster“) im Visual Studio angezeigt wird.

Output-Port-Ausgabe im OutputWindow

Schalter über PullUp-Widerstand an .Net-Microcontroller anschließen - Aufbau

2. Der Schalter verbindet eine positive Spannung mit dem Input-Port (PullDown aktiviert)

 

Schaltplan Schalter über PullDown an InputPort

In diesem Fall verbindet der Schalter 3,3 V mit dem Eingangs-Port. Dazu kann der interne PullDown-Widerstand aktiviert werden. Auch hier habe ich diesen Widerstand im Schaltplan extern eingezeichnet. Ist der Schalter offen, liegt Masse über den PullDown-Widerstand am Port an. Daher liest dieser ein logisches „aus“-Signal. Ist der Schalter geschlossen, verbindet dieser die 3,3 V zum Eingangs-Port und liest ein logisches „ein“-Signal. Dieses Mal entspricht der logische Wert vom Eingangs-Port dem des Schalterzustands.

Achtung: Die Ports sind in der Regel nur für Spannungen bis 3,3 V ausgelegt. Einige Ports tolerieren Spannungen bis 5 V. Wie viel welcher Port verträgt, steht im Datenblatt vom Microcontroller.

Code
InputPort buttonPort = new InputPort(FEZCerbuinoBee.Pins.D0, true, Port.ResistorMode.PullDown);

while (true)
{
    bool buttonPortState = buttonPort.Read();

    // Wert am Port entspricht logisch dem Schalterzustand und
    // kann daher direkt übernommen werden.
    var isPressed = buttonPortState;

    if (isPressed)
    {
        Debug.Print("Schalter ist gedrückt");
    }
    else
    {
        Debug.Print("Schalter ist nicht gedrückt");
    }

    Thread.Sleep(100);
}

Der Code ist prinzipiell der gleiche wie oben. Hier wurde jedoch der PullDown-Widerstand aktiviert. Außerdem musste der Wert des Porteingangs nicht negiert werden, weil er bereits logisch dem Zustand des Schalters entspricht.

Schalter über PullDown-Widerstand an .Net-Microcontroller anschließen - Aufbau

 

Andere Bauteile am Port

Natürlich kannst du auch etwas anderes, wie beispielsweise einen Infrarot-Empfänger, anschließen.  Das Grundprinzip ist jedoch immer das Gleiche: Das, was daran angeschlossen ist, zieht den Port auf Masse (Siehe 1) oder es wird eine Spannung angelegt (Siehe 2). Alles Weitere ist Sache der Software.

 

Zusammenfassung

Ich habe erklärt, wie du einen Schalter und andere Bauteile an einen Input-Port anschließen und auslesen kannst. Je nachdem, ob das Bauteil eine Masseverbindung herstellt oder eine Spannung bereitstellt, muss der Port entsprechend beschaltet und konfiguriert werden.

 

Ausblick

Im nächsten Beitrag werde ich Interrupts am InputPort erklären. Wie hier laufend den aktuellen Zustand vom Eingang zu prüfen ist je nach Anwendungsfall nicht sinnvoll. Mit einem Interrupt am InputPort wird das Programm benachrichtigt, sobald sich der Wert am Eingangs-Port ändert.

 


Zurück zum NetMf-Tutorial-Index



Disclaimer

Die hier zusammen gestellten Informationen und Anleitungen habe ich mit bestem Wissen und Gewissen erstellt. Falls sich Fehler eingeschlichen haben oder du Verbesserungsvorschläge hast, schicke mir bitte eine Nachricht oder schreibe einen Kommentar unter den jeweiligen Beitrag. Informiere dich selber wie alles funktioniert. Ein Nachbau erfolgt auf eigene Gefahr. Du allein bist dafür verantwortlich, dass das, was du tust, funktioniert und keine Sach- oder Personenschäden verursacht.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert