Forum: Mikrocontroller und Digitale Elektronik Atmega8/32 mit L293D


von Katta K. (katta) Benutzerseite


Lesenswert?

hallo,
hat jemand Grundschaltung von Atmega8/32 mit  Motorentreiber L293D und 2 
motoren....?


katta

von Flo (Gast)


Lesenswert?

der Prozessor kriegt die Standardbeschaltung mit Resetpullup, 
Abblockkondensatoren und Programmierschnittstelle, 4 Pins von 
irgendeinem Port werden mit den 4 Inputs verbunden, die beiden enable 
auf high(5V), außer du willst darüber die PWM regeln, dann brauchste 
PWM-Ausgänge des Prozessors dran.
Pin 8 beim L293D ist Versorgungsspannung der Motoren, Pin 4,5,12,13 sind 
Masse.
Motorausgänge dann 3,6, 11,14.
Noch die Logikspannung (=Prozessorspannung = 5V) an Pin 16.

Ein paar Kondensatoren gegen Spannungseinbrüche runden das Ganze ab.

Übrigens gibts zu dem L293D ein Datenblatt, in dem sogar die Beschaltung 
beschrieben ist, also einfach mal suchen
;-)

von Ephraim H. (ephi)


Lesenswert?

wo ist das problem? Motoren an die Außgänge, Eingänge an die µC outs, 
für Drehzalregelung die Enable leitung an einen PWM Ausgang hängen...

von Katta K. (katta) Benutzerseite


Lesenswert?

danke ,ich versuch mal diese Schaltung mit Eagle zuzeichnen.aber was 
meinst du mit  Kondensatoren gegen Spannungseinbrüche...oder wo muss ich 
ganz genau die Kondensatoren anlegen???

von Ephraim H. (ephi)


Lesenswert?

zwischen GND und Logikspannung, kann ein 100nF Kerko zur entstörung 
nicht schaden. Die Pufferelkos für die Motoren dann zwischen Masse und 
Lastspannung (Vcc2) hängen.

von Katta K. (katta) Benutzerseite


Angehängte Dateien:

Lesenswert?

ich hab diesen Schaltp,lan gezeichnt , aber ich weiß nicht , ob alles 
richtig ist oder falsch...???
die andere Datei  (r.sch) mit Eagle.

von Ephraim H. (ephi)


Lesenswert?

du willst mit dem L293D nicht wirklich LEDs treiben !?

und wozu sollen die PWM header dienen?
Die Enable anschlüsse des L293D solltest du auch beschalten. Wenn du die 
Motoren in der Drehzahl regeln willst mit je einem PWM Ausgang des AVR.

Und Vcc1 des L293D kannst du auch noch 100nF gönnen...

von Katta K. (katta) Benutzerseite


Lesenswert?

ich versuche mal etwas für den Einstieg machen, was leicht und einfach 
ist .
ich will eigentlich einen kleinen Roboter mit 2 motoren und CNY70 
aufbauen,wobei der Roboter in C programmiert werden kann.
aber für mich finde ich lieber zuerst die Motoren  mit je einem PWM 
Ausgang des AVR zu steuren ,dann kann ich cny70 anlegen.

von Katta K. (katta) Benutzerseite


Lesenswert?

Hallo,
kann jemand mir helfen, was muss ich mit dieser Schaltung machen...???

von Ephraim H. (ephi)


Lesenswert?

im zweifelsfall die LCD routienen komplett für schieberegister 
umschreiben. Wenn deine Schieberegister Ansteuerung läuft, und die 
originale Ansteuerung als vorlage verwendest sollte das eigentlich ganz 
gut machbar sein.

von Katta K. (katta) Benutzerseite


Lesenswert?

ich will nur die motoren steuren, aber vielleicht es fehlt nor in dieser 
Schaltung  Pins 1, 9 von L293D, für die PWM und
PWM-Ausgänge des Prozessors oder...!!!
ich soll vielleicht Pins 1,9 von L293D mit Pins 23, 24 von Prozessor 
verbinden.

von Karl H. (kbuchegg)


Lesenswert?

Katta Katta schrieb:
> ich versuche mal etwas für den Einstieg machen, was leicht und einfach
> ist .

Dann fang mit der Standardbeschaltung aus dem avr-tutorial an.
Bring deine LED zum Blinken und frag Taster ab, so wie alle Anfänger, 
die es nach einiger Zeit geschafft haben mit dem µC auf Du-und-Du zu 
kommen.

Dann noch ein LCD dran, die LEDs anstatt blinken mittels PWM dimmen und 
dann kannst du dich um Motoren kümmern.

von Katta K. (katta) Benutzerseite


Lesenswert?

ich versuch mal das zu probieren. danke für Hilfe...   :)

von Karl H. (kbuchegg)


Lesenswert?

Katta Katta schrieb:
> ich versuch mal das zu probieren. danke für Hilfe...   :)

Worum gehst?
Es geht darum, dass du in Übung kommst. Wenn du dich für LCD nicht 
interessierst, dann machst du eben kein LCD. Das ist ja nicht der 
springende Punkt (*)

In deinem ersten Ansatz lässt du dich in einen Mehrfrontenkrieg ein. Du 
versuchst gleichzeitig
 eine relativ komplexe Hardware
 gepaart mit den Problemen der Anfänge der Programmierung
 gepaart mit den speziellen Problemen der AVR-Programmierung
 ohne Debugwerkzeuge
 ...

in den Griff zu kriegen und das ist einfach zuviel auf einmal.
zb können dir Motoren wunderbare Effekte auf der Versorgungsspannung 
verursachen, die deinen AVR zu allen möglichen lustigen Effekten 
veranlassen. Du weißt dann nie, hab ich einen Programmfehler oder ist 
das wieder einmal eine Motoreneinstreung.

Wenns für den Einstieg einfach sein soll, dann bau eine 
Standardbeschaltung auf, häng eine Handvoll LED dran und arbeite mit 
diesen. Es geht nicht darum, dass x-te Lauflicht möglichst optimal zu 
implementieren. Es geht darum, dass du überhaupt programmierst und zwar 
ohne dass du auf 100-tausend Sachen nebenher auch noch aufpassen musst. 
Die Lernkurve ist gerade am Anfang extrem steil, man müsste alles 
gleichzeitig lernen und das geht nun mal nicht. Also heißt es abspecken 
und mit simpelsten Aufgabenstellungen anfangen, sich dort die notwendige 
Übung zu holen und sich sukzessive immer weiter hochzuarbeiten.

(*) Obwohl ich mitlerweile soweit bin, zu einem LCD zu raten. Während 
der Programmentwicklung bist du immer wieder in der Situation eine 
Ausgabemöglichkeit zu benötigen.

von Katta K. (katta) Benutzerseite


Lesenswert?

ja du hast natürlich recht, ich finde im moment noch ganz viele 
Schwierigkeiten , hab  ich schon   eine Standardbeschaltung mit Atmega32 
aufgebaut ,mit ein paar LEDs ohne Timer nur mit DELAY gesteuert.
Und wie du gesagt hast  "in den Griff zu kriegen und das ist einfach 
zuviel auf einmal", dasswegwn hab ich LCD später zu progrmmieren bis ich 
zuerst die DC-Motoren steuren kann.
ich weiss nicht, ob ich zuerst LEDs mit timer programmieren soll, weil 
timer wichtig   für L293D ist oder nicht ...!!!
danke für Beratug...

von Karl H. (kbuchegg)


Lesenswert?

Katta Katta schrieb:
> ja du hast natürlich recht, ich finde im moment noch ganz viele
> Schwierigkeiten , hab  ich schon   eine Standardbeschaltung mit Atmega32
> aufgebaut ,mit ein paar LEDs ohne Timer nur mit DELAY gesteuert.
> Und wie du gesagt hast  "in den Griff zu kriegen und das ist einfach
> zuviel auf einmal", dasswegwn hab ich LCD später zu progrmmieren bis ich
> zuerst die DC-Motoren steuren kann.
> ich weiss nicht, ob ich zuerst LEDs mit timer programmieren soll, weil
> timer wichtig   für L293D ist oder nicht ...!!!
> danke für Beratug...

Das Schwierigste ist das Auswählen der Reihenfolge, in der man sich in 
das nächste Abenteuer stürzt :-)

Grundsätzlich rate ich dir: zieh alles vor, was dir eine 
Ausgabe/Anzeigemöglichkeit bietet und verschiebe alles nach hinten, was 
das nicht tut.

Warum?
Eines der großen Probleme in der Programmierung lautet:
Wenns nicht tut, woran liegts?

Wenn du eine Ausgabemöglichkeit hast, und seien es nur ein paar Led, 
dann kannst du diese Ausgabemöglichkeit dazu nutzen, damit dir dein 
Programm selber hilft, zu verstehen was im Programm vor sich geht (und 
worin sich das von dem unterscheidet was du dir vorstellst das 
eigentlich passieren sollte).
Das kann sein, dass man an strategischen Stellen im Programm eine LED 
einschaltet. Das kann sein, dass man die LED mit unterschiedlichen 
Frequenzen blinken lässt und so aus der Frequenz die 'Nachricht' des 
Programms ruasliest "Ich bin jetzt hier; ich bin jetzt da; Variable i 
hat den Wert kleiner 100; ..." Aber dazu brauchst du irgendeine 
Möglichkeit, mit der sich das Porgramm bemerkbar machen kann. Insofern 
ist ein LCD super, weil es deinem Programm die Möglichkeit gibt, 
Zwischenwerte oder sonstige Dinge im Klartext auszugeben, so dass du als 
Programmierer sie gut lesen kannst. Es macht nun mal einen Unterschied, 
ob du dir zb ein von der UART empfangenes Zeichen direkt im Klartext 
irgendwo anzeigen lassen kannst, oder ob du das Zeichen auf 8 LED binär 
rausgibst und du als Programmierer, bewaffnet mit einer ASCII Tabelle, 
den Code entschlüsselst. Oder denk an den Analog/Digital Wandler. Wie 
kontrollierst du, was der gerade eingelesen hat? Led mit einer Frequenz 
proportional zum Wert ist natürlich eine Möglichkeit, aber auf einem LCD 
schreib ich den Wert im Klartext raus und kann dann mit Taschenrechner 
den Wert in eine Spannung umrechnen um zu kontrollieren, ob das stimmen 
kann.

Also: Ausgabemöglichkeiten sind wichtig. Sie ermöglichen es dir ein 
'Fenster' zu deinem Programm zu öffnen, so dass dir das Programm selber 
hilft zu verstehen, wo du dich vertan hast.

Und natürlich müssen die dazu notwendigen Techniken sitzen. Soweit 
sitzen, dass du nicht lange zögern musst, um sie einzusetzen. Wenn dein 
Motor nicht anläuft, oder der PID Regler zur Geschwindigkeitsregelung 
des Motors schwingt, dann sind diese Ausgabemöglichkeiten dein 'Fuss in 
der Tür', mit der du am Problem arbeiten kannst.

von Katta K. (katta) Benutzerseite


Lesenswert?

danke, ich  hab ganz genau vestanden ,was du meinst, und bestimmt, LCD 
macht viel Spaß, wenn man das lernt.
 ich find , dass man mit strategischen Ansätze am Ende schaffen kann.

Auf jeden Fall , ich beginne Schritt für Schritt zu lernen .

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.