Mit den digitale Ausgängen kann der Microcontroller etwas logisch ein- und ausschalten. Ich werde in diesem Beitrag eine LED blinken lassen und dazu den benötigten C#-Code und elektronischen Aufbau zeigen.
Die Schaltung
Für dieses Beispiel werde ich eine LED an den Microcontroller anschließen.
Wenn ein Verbraucher an einen Pin des Microcontroller angeschlossen wird, gibt es ein paar Sachen zu beachten:
- Der Verbraucher (in diesem Fall die LED) darf die maximal zulässige Last des Ports nicht überschreiten. Die maximal zulässige Last ist im Datenblatt des Microcontrollers bzw. Boards zu finden. Bei den neueren 3,3V-Microcontrollern liegt die maximal mögliche Last oft nur bei 4 mA. Die meisten LEDs verbrauchen mehr. Ein direkter Anschluss der LED an den Port könnte ihn also beschädigen. Ich habe daher einen Transistor verwendet (NPN: BC547B), der vom Microcontroller-Port angesteuert werden kann. Der Transistor schaltet dann die größere Last der LED. Wichtig ist der Vorwiderstand zwischen dem Output-Pin und der Basis vom Transistor, der den maximalen Strom begrenzt und so den Port schützt.
- LEDs benötigen in der Regel einen Vorwiderstand. Weitere Informationen zur Berechnung des Vorwiderstands gibt’s beim Elektronik-Kompendium. Du kannst dir den passenden Vorwiderstand auch mit dem Rechner auf LED-Rechner.de ermitteln lassen.
- Je nach angeschlossenem Schaltkreis sollte der Port speziell geschützt werden. Schließt man beispielsweise ein Relais an, sollte z. B. eine Schaltung mit Transistor und Freilaufdiode verwendet werden, da es beim Abschalten des Relais zu Spannungsspitzen kommen kann, die den Port beschädigen können.
Schaltplan der Schaltung:
Am Port D0 ist über den Widerstand der Basis-Pin vom Transistor („Q2“) angeschlossen. Wird der Port eingeschaltet, fließt von der Basis (im Schaltplan der linke Anschlusspin vom NPN-Transistor) zum Emitter (unterer Pin) Strom. Dadurch wird die Verbindung vom Kollektor (oberer Pin) zum Emitter leitend. Die LED erhält so die Verbindung zur Masse und fängt an zu leuchten.
Code
public static void Main() { OutputPort ledPort = new OutputPort(FEZCerbuinoBee.Pins.D0, false); while (true) { // LED einschalten und 500 ms warten ledPort.Write(true); Thread.Sleep(500); // LED ausschalten und 500 ms warten ledPort.Write(false); Thread.Sleep(500); } }
Im Code wird zuerst der Port initialisiert. Als ersten Parameter des OutputPort-Konstruktors wird die Port-Nummer erwartet. Die Port-Nummern sind nicht bei allen Boards einheitlich. Daher liefern die Hersteller der Boards Enums mit der Pinbelegung aus. Für das Cerbuino-Bee-Board, das ich benutze, ist dieses Enum unter FEZCerbuinoBee.Pins (im Namespace GHIElectronics.Gadgeteer) aufrufbar.
Die LED wird innerhalb der Endlosschleife mit .Write() angesteuert. Der Parameter bestimmt den Zustand vom Ausgang: true = logisch ein = LED leuchtet.
Zusammenfassung
Eine LED blinken zu lassen ist das Hello-World für Microcontroller. Moderne Microcontroller vertragen keine hohe Last an den Ausgängen, weshalb selbst für diese simple Aufgabe eine kleine Schaltung mit einem Transistor erforderlich ist.
Weitere Informationen
Elektronik-Kompendium: Vorwiderstand berechnen
LED-Rechner.de
Ohmsches Gesetz: Online-Rechner von sengpielaudio.com
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.