Armins AVR-Buch - Relais_oder_groessere_Verbraucher_am_AVR

Zuletzt geändert am 09.12.2023, 17:23:38

Relais_oder_groessere_Verbraucher_am_AVR


(armin77, 31.01.2013, 15:27:27)

Ein Ausgang des AVR bringt bis zu 40mA Ausgangsstrom bei 5V. Möchte man ein Relais oder Motor ein oder aus
schalten ist das aber viel zu wenig.
Man muß einen Transistor dazwischen schalten.
Damit lassen sich dann auch höhere Spannungen als 5V schalten.
Beim Motor darf man die Freilaufdiode nicht vergessen.
Diese muß mindestens für den Motornennstrom dimensioniert sein.
Hier einige Schaltungsbeispiele mit LED, Motor und Relais.

Bild relais.JPG


Hier der Anschluß von mehreren LED`s an den Port des AVR.
Zuerst mit 5V Betriebsspannug.
   

Bild led.JPG


Bei 12V Betriebsspannung für die LED empfiehlt es sich die LED in Reihe zu schalten,
um die Verlustleitung am Widerstand so klein wie möglich zu halten.
Es ist darauf zu achten das alle GND / Masse miteinander verbunden sind


Bild LED2.JPG

Hier eine Übersicht der Spannungen und des fließenden Stromes.
Habe als Vorwärtsspannung für die LED's 2,5V gewählt. Diesen Wert muß man an die
verwendeten LED's anpassen.

Bild LED3.JPG


ULN 2803



Möchte man viele Relais, LED`s oder kleine Motoren an den AVR anschließen endet das im "Transistorgrab".
Dafür gibt es den ULN2803. Dieser hat 8 Treiber eingebaut die bis zu 500mA nach GND schalten können.
Zusätzlich ist bei jedem Treiber eine Freilaufdiode eingebaut.

Hier ein Bild des ULN2803

Bild ULN2803-1.png


Bild ULN2803-222.png

Auf diesem Bild sieht man die einzellne Verstärkerstufe.
Will man die integrieten Freilaufdioden nutzen, muß man den Pin "COMMON" mit der Versorgungsspannung der Verbraucher
verbinden. Diese darf bis zu 50V betragen.
Da die Darlington-Stufe bereits einen Vorwiderstand besitzt können wir sie direkt an unseren AVR oder anderen IC anschließen, der
mit TTL Pegel arbeitet.





Hier mal ein Beispiel für das Ansteuern von mehreren Relais mit einem ATMega8:

Bild uln1.JPG


Ich habe mir zum Basteln eine Platine mit zwei ULN2803 Treibern gebaut.
Die Ein- und Ausgänge gehen auf Schraubklemmen.
Damit lassen sich sogar kleine Motoren mit dem AVR ein- und ausschalten.

Bild uln_001.jpg


Motortreiber L298



Möchte man einen oder zwei Motoren mit dem AVR steuern bietet sich der L298 an.
Das ist eine sogenannte H-Brücke und kann zwei Motoren mit jeweils 2A Strom steuern.

Hier das Schaltbild des L298.

Bild gleichstromtreiber-L298.GIF

Genaueres könnt ihr im Artikel des Strippenstrolch nachlesen.

http://www.str...eiber-298.html


Diesen gibt es fertig als Modul für kleines Geld zu kaufen.

Bild L298_002.jpg

Was müssen wir denn nun alles und wo anschließen?
Wie funktioniert der L298?


Bild L298_003.jpg


Die Freigabe-Eingänge sind auf dem Modul schon mit Jumpern auf 5V gelegt.
Da müssen wir nichts mehr tun.Werden sie auf 0V gelegt läuft der Motor aus.
Links und rechts auf der Platine können die Motoren angeschlossen werden.
An den Schraubklemmen vorne wird die Motorspannung angeschlossen.
Dieses Modul hat einen 5V Festspannungregler mit dem man den AVR versorgen kann.
Diese 5V liegt auf der rechten Schraubklemme an.
Die Ansteuerung geschieht mit den Stiftleisten.
Dort sind die Inputs 1-4. Diese werden mit dem AVR so angesteuert wie in der Tabelle beschrieben.


Bild tabellel298l29.jpg



Ich habe mir mir mein Projektboard geschnappt und ein kleines Beispielprogramm geschrieben.
Zufällig war ein ATMega 32 drauf. Aber ein ATMega 8 reicht natürlich auch dicke aus.
Ich lasse in dem Programm den Motor zuerst 8 Sekunden nach rechts laufen.
Dann schalte ich ihn aus und warte eine Sekunde bis er wirlich steht.
Danach läuft er 8 Sekunden im Linkslauf. Dann wird er ebensfalls abgeschaltet und eine
Sekunde gewartet bis er steht und das Programm fängt wieder von vorne an.
An Portd.7 und Portc.0 ist eine LED mit Vorwiderstand angeschlossen die anzeigt
in welche Richtung der Motor gerade läuft.


$regfile = "m32def.dat"
$crystal = 1000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Portd.7 = Output
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output


Do
Portc.1 = 1
Portc.2 = 0
Portd.7 = 1 'LED Rechtslauf
Wait 8
Portc.1 = 0
Portc.2 = 0
Portd.7 = 0 'LED Rechtslauf
Wait 1
Portc.1 = 0
Portc.2 = 1
Portc.0 = 1 'LED Linkslauf
Wait 8
Portc.1 = 0
Portc.2 = 0
Portc.0 = 0 'LED Linkslauf
Wait 1
Loop
End

   




Hier ein Bild vom Versuchsaufbau:


Bild L298_001.jpg