Programme schreiben und an den AVR schicken ist eine Sache, eine andere ist, ob der AVR auch das tut, was man von ihm erwartet. Der Controller muss sich also irgendwie äußern können, was er gerade tut oder getan hat. Dazu gibt es mehrere Wege wie LCD-Displays, RS232-Schnittstelle, und im einfachsten Fall LEDs.
Damit man auch "Befehle" an den AVR senden kann, hat die hier besprochene IO-Platine auch noch drei Taster zu bieten. Die kann der Controller abfragen und dann als Reaktion verschiedene Dinge tun.
Abb. 1: Die einfache Schaltung der Platine und das Layout
Abb. 2: Bestückungsseite der IO-Platine
Die Herstellung der Platine erfolgt wie üblich mit der Bügelmethode. Als Vorlage kann man das Layout aus Abb. 1 nehmen. Die Platine kann sehr einfach getestet werden, indem man die Tastasturbuchsen mit 0,6 mm Drähtchen mit den Eingängen A, B, C und D wahlweise verbindet. Bei Tastendruck muss die entsprechende LED leuchten.
Die Widerstände in den LED-Leitungen und in den Taster-Kanälen haben unterschiedliche Bedeutung. Bevor ich darauf eingehe ein Hinweis zur Farbcodiereung auf den Widerständen.
Bei den LEDs: braun grün braun gold
steht für 1 5 eine 0 und 5% Toleranz also 150 Ohm +/- 5%
Bei den Tastern: braun schwarz orange gold
steht für 1 0 und drei Nullen, dann wieder 5% also 10000 Ohm = 10 kOhm
+/- 5%
Hier findest du eine Übersetzungstabelle für die Codes.
Die Widerstände in den LED-Leitungen haben die Aufgabe, die Spannung an der LED von 5V auf die für rote LEDs übliche von 1,6V bis 2,2 V zu begrenzen und damit den Strom auf höchstens 20 mA zu beschränken. Die Spannungswerte für die LEDs hängen von der Lichtfarbe ab, es ist die Spannung, ab der die LED beginnt leitend zu werden, ich habe hier 2,2 V verwendet. Die Stromstärke ist herstellungsbedingt und in der Regel 20 mA. Der Vorwiderstand muss also 2,8 V von den 5,0 V der Versorgungsspannung daran hindern, an die LED zu gelangen, trotzdem aber eine Stromstärke von 20 mA zulassen. Zur Berechnung des Widerstandswerts bemühen wir die Definitionsgleichung für den elektrischen Widerstand R = U / I. Die Spannung U am Widerstand muss 2,8V betragen und die Stromstärke I muss 0,020A sein. Das gibt R = 2,8V / 0,02A = 140 V / A = 140 Ohm. Diesen Wert kann man als Kohleschichtwiderstand nicht kaufen, also entweder 120 Ohm (da fließt aber zu viel Strom) oder lieber 150 Ohm (damit ist man auf der sicheren Seite).
Der 10k-Widerstand in der Tastenleitung legt den sehr hochohmigen Eingang des AVR auf ein Potential von 5 V, was einer logischen 1 entspricht. Das bleibt so, solange der Taster nicht gedrückt wird. Schließt nämlich der Kontakt, dann gelangt GND-Potenzial an den Eingang und das bedeutet für den AVR eine logische 0. Durch den 10k Widerstand fließ dann naürlich ein geringer Strom von 0,5 mA, denn der Widerstand liegt jetzt an über den Kontakt des Tasters an der vollen Versorgungsspannung von 5 V.
Die hier eingesetzten Schaltungen für "Verbraucher" und Eingangs-Schalter sind typisch für die digitale Elektronik und werden uns in dieser oder leicht abgewandelter Form im weiteren Kurs immer wieder begegnen. Als "Verbraucher" kann statt der LED natürlich auch ein Relais, ein Motor, oder ein anderer Wandler auftreten, der elektrische Energie in andere Formen umwandeln kann. Als Eingangsschalter sind Lichtschranken und ähnliches denkbar.
Für den Einsatz mit einem Controller sind in jedem Fall jeweils die GND untereinander zu verbinden und natürlich ebenso die Vcc = +5V-Pins der Platinen. Soll ein Portpin des AVR eine LED bedienen, dann muss sie dort als Ausgang programmiert werden. Dazu wird in das entsprechende Bit des Datenrichtungsregisters (DDRX) eine 1 geschrieben (X steht für (Port)B oder D). Das korrsespondierende Portbit schaltet dann die LED ein (Portbit auf 1) oder aus (Portbit auf 0). Zur Schalterabfrage wird eine der Schaltbuchsen mit dem Port-Pin des Controllers verbunden. Das entsprechende DDR-Bit muss auf 0 stehen. Der Schalterzustand wird dann durch Lesen des I/O-Registers PIN der Ports dem AVR bekannt gemacht und muss durch eine nachfolgende Abfrage des korrespondierenden Bits festgestellt werden.
Eine Reihe von Testprogrämmchen findet man im Kapitel 8 - Ponyprog einrichten und Gesamttest.