Kleiner PIC - Was tun?


zurück zu Input/Output , PIC-Grundlagen , PIC-Prozessoren , Elektronik , Homepage

Hat ein PIC zu wenig Pins
Tasten
LEDs
Multiplexen


Hat ein PIC zu wenig Pins?

Das hängt ganz von der Anwendung und vom Geldbeutel ab. Die preislich attraktiven PICs im 8-poligen oder 18-poligen Gehäuse besitzen sicherlich nicht genug Ausgänge, um direkt eine große Modelleisenbahnanlage steuern zu können. Mit ein wenig Phantasie lassen sich die vorhandenen Pins jedoch ökonomisch nutzen.


Tasten
Als Beispiel dient mit der Anschluss von möglichst vielen Tasten an das 8-pinnige Port B.
 
Die einfachste Lösung ist das Anschließen von jeweils einer Taste an ein Pin des PIC. Werden beim Port B die internen pull-up-Widerstände aktiviert, dann liegen die Pins des Port B auf High-Pegel. Durch Drücken einer Taste wird ein Pin auf Low gezogen.

Die softwareseitige Auswertung der Tastendrücke ist einfach.
Gleichzeitiges Drücken mehrerer Tasten stellt kein Problem dar.
Die Tasten 4..7 eignen sich auch, um den PIC aus dem SLEEP-Modus aufzuwecken.

Die Anzahl der Tasten ist aber reichlich klein.

Doppelt soviele Tasten lassen sich anschließen, wenn man die Tasten in einer Matrix anordnet. Das ist deshalb auch die üblichste Art der Tastenverwaltung. RB0..3 sind Ausgänge, wären RB4..7 Eingänge sind.
Die Auswertung (erkennen welche der Tasten gedrückt ist) ist etwas komplizierter, aber immer noch recht einfach. In den Lernbeispielen habe ich solche Lösungen beschrieben.

Die zusätzlichen Widerstände sind nötig, um Kurzschlüsse der Pins RB0..3 zu vermeiden, wenn mehrere Tasten gleichzeitig gedrückt werden. 
Wenn mehrere Tasten gleichzeitig gedrückt werden, ist spätestens ab 3 gleichzeitig gedrückten Tasten eine exakte Auswertung nicht mehr möglich.

Positiv ist, das alle Tasten dazu geeignet sind, den PIC aus dem SLEEP-Mode aufzuwecken.

Es lassen sich aber auch 56 Tasten anschließen und auswerten. Während der Auswertung wird nacheinander von jedem Pin aus überprüft, ob (durch einen gedrückten Taster) Verbindung zu einem der anderen 7 Pins besteht. Dadurch ist ein ständiges Umschalten der Pins von Eingang auf Ausgang und wieder auf Eingang nötig.

Es gibt für jedes Pinpaar immer zwei Taster, die die Pins verbinden können. Die Schalter in der unteren linken Hälfte verbinden die Pins bidirektional, während die Schalter in der oberen rechten Hälfte nur in eine Richtung leiten (Dioden). Dadurch lassen sie sich auseinander halten, und alle 56 Taster eindeutig identifizieren.

Zum Wecken aus dem Sleep-Mode eignen sich nur die grün nummerierten Tasten, sollen sie dazu verwendet werden, sind zusätzlich 1 kOhm-Widerstände in die Leitungen der Pins RB0..3 einzufügen.

nach oben

LEDs
 
Am einfachsten lassen sich LEDs ansteuern, wenn man jeder LED ein eigenes Pin spendiert. Leider ist die Zahl der Pins sehr begrenzt.
Ist man bereit, einen höheren Softwareaufwand zu betreiben, lassen sich auch 16 LEDs mit 8 Pins ansteuern. Allerdings muss man hier mit einem Zeitmultiplexverfahren arbeiten, um alle LEDs unabhängig voneinander ansteuern zu können.

In einem festen Takt (z.B. per Timer-Interrupt gesteuert) werden reihum die Pins RB0 bis RB3 einzeln auf Low-gelegt. Dann werden die zu den aktiven LEDs gehörenden Pins RB4..7 auf High gelegt.

Im Durchschnitt ist jede leuchtende LED nur 1/4 der Zeit wirklich eingeschaltet. Dadurch wirkt die LED dunkler. Bei Bedarf lässt sich das durch kleinere Widerstände R3..6 (100..200 Ohm) korrigieren.

Eine zweite LED-Matrix lässt sich parallel betreiben, mit umgekehrten Pegeln an den Ports.
 

Im Durchschnitt ist nun jede leuchtende LED nur 1/8 der Zeit wirklich eingeschaltet. Dadurch wirkt die LED dunkler. Bei Bedarf lässt sich das durch kleinere Widerstände R3..6 korrigieren (100 Ohm).

Um z.B. die LED in der unteren linken Ecke leuchten zu lassen, gibt man an RB0 High und an RB7 Low aus, während man alle anderen Pins auf input schaltet.
Man erkennt, dass es dann diverse Wege für die Elektronen gibt, von RB7 nach RB0 zu fließen, aber nur ein Weg enthält genau eine LED. alle anderen alternativen Wege gehen durch jeweils 3 LEDs in Reihe. Durch den Spannungsabfall über der richtigen LED steht aber nicht genug Spannung für einen Stromfluss durch diese LED-Ketten zur Verfügung.

nach oben

Multiplexen
In einer Schaltung lässt sich oft ein Pin für mehrere Aufgaben nutzen.
 
In mehreren Schaltungen benutze ich z.B. eine Tastatur und ein LCD-Display gemeinsam am PortB. Natürlich muss man dafür Sorge tragen, dass sich die einzelnen am Pin angeschlossenen Schaltungen untereinander nicht behindern. 
  • Die Tastatur ist vom LCD-Display über Widerstände entkoppelt. 
  • Zur Abfrage der Tastatur wird das Display-Interface abgeschaltet.

Ein schönes Beispiel findet sich in der Microchip Applicationnote AN557. Dort werden an einen 16C71 (eine Art Vorläufer des 16F628) eine 4-stellige 7-Segment-LED-Anzeige, eine Tastatur mit 16 Tasten und 4 analoge Eingangsspannungen an die selben Pins angeschlossen.

nach oben

zurück zu Input/Output , PIC-Grundlagen , PIC-Prozessoren , Elektronik , Homepage
Autor: sprut
erstellt: 28.02.2003
letzte Änderung: 05.04.2011