es ginge einfacher, wenn du den parallelport benutzt, und du legst einfach alle L298 auf die selben pins (3 stück) und nimmst dann weitere 3 pins zum multiplexen, so dass du mit diesen pins die L298 enablen kannst, oder eben nicht ^^
Martin
Moinsen Jungs,
also ich bin total neu auf dem Gebiet der microcontroller Technik, möchte mir aber einen leistungsfähigen robot bauen.
Doch zunächst habe ich ein Problem in der Ansteuerung von 4 Motoren. Ich möchte zwei L298-Motortreiber benutzen. Da ich diese mit meinem PC steuern will, kann ich ja nicht die Parallele-Schnittstelle benutzen, da diese nur 8-Outports zur Verfügung stellt, und die L298er Pro Motor 3 In-Ports benötigen (PWM, In1, In2). Allerdings kam mir die Idee dieses Problem mit einem Microcontroller (ATMega16?) zu lösen und zwar folgendermaßen:
Der Microcontroller stellt ja genügend IO-Ports zur Verfügung, meine Idee war nun, den MC so zu Programmieren, dass dieser ständig über RS232 an den PC angeschlossen ist und von dort aus 5 mal pro Sekunde eine Folge von 4 mal 8bit Nummern geschickt bekommt die nach folgendem Muster angeordnet sind:
Nummer:
00 00 1000
^^ ^^ ^^^
Motornummer Drehrichtung Geschwindigkeit
Diese Message wird jeweils 4 mal hintereinandergeschickt mit den folgenden Parametern:
- Motornummer 00, 01, 10, 11 um die Motoren 1, 2, 3 und 4 zu
addressiern.
- Drehrichtung ebenfalls 2 Bit, mit 00 für Bremsung, 01 für Vorlauf,
10 für Rücklauf und 11 erneut für bremsung.
- Geschwindigkeit soll eine 4 Bit Zahl sein, die ein emuliertes PWM-
Signal in 16 Stufen (0-15) unterteilt und somit die Geschwindigkeit
regelt
Alles in Allem würde 5 mal pro Sekunde jeder Motor mit Motornummer, Drehrichtung und Geschwindigkeit addressiert geupdated werden.
Ich dachte daran die Regelung mit einem Delphi-Programm zu übernehmen, dass eben 5 mal in der Sekunde diese 4 x 8Bit-Folge an den Controller sendet.
Meine eigentliche Frage ist schlichtweg, was ihr davon haltet, beziehungsweise ob es möglich ist oder ob es einfacher, besser oder effiezienter geht.
Danke sehr.
Grüße aus Wiesbaden
qube
es ginge einfacher, wenn du den parallelport benutzt, und du legst einfach alle L298 auf die selben pins (3 stück) und nimmst dann weitere 3 pins zum multiplexen, so dass du mit diesen pins die L298 enablen kannst, oder eben nicht ^^
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
EIn Microcontroller hat den Vorteil, dass der ja zwischendurch, also dann 200ms lang schritte erzeugen kann, soviele, wie du ihm halt sagst..
Somit hat der µC seine Existenzbereichtigung allemal.
Ansonsten geht es natürlich auch direkt vom PC, z.B. indem du ein oder 2 Latches (z.B: 74HC373) nimmst, und z.B. die Infos für die Drehrichtung (IN-1 und IN-2) dort speicherst, da diese sich ja nicht oft ändern. Dann brauchst du die meiste Zeit nur noch die PWM Leitungen der Motoren zu steuern. Und bei Änderung eben das Latch neu schreiben. Wegen konstanter Taktzeiten kannst du natürlich auch jedesmal das Latch updaten, dann den Rest der Zeit PWM machen...
Sigo
Du könntest auch via serieller die daten an den uC schicken und der AVR nimmt dann die daten entgegen und lässt dann die motoren so laufen. Du müsstest auch nur die abgeänderten daten übertragen, denn die alten bleiben ja im uC gespeichert, bis neue kommen. So hättest du dann auch mehr pins frei, welche du später auch als inputs verwenden kannst (wenn du dann auch daten an den PC schickst).
danke, jetzt hab ich allerdings die frage, wie sende ich daten an den uC, hab ich spezielle Pins, TX und RX? Gibts da ne dll, mit der ich arbeiten kann um mit delphi die daten zu senden? Oder kennt sich jemand mit Delphi aus, wie man das machen kann? Im Moment bin ich nur Theoretiker und habe keinerlei Praxiserfahrung, nur mitm Parallelport... will aber unbedingt den seriellen port freihaben, hab andere sachen mit dem Parallelport frei.
Danke.
qube
Danke
Dann empfehle ich dir mal mit einfachen uC sachen anzufangen. mal ein lauflicht auf einen avr/pic zu programmieren.Zitat von qube
daten an den uC kannst du mit einem terminal (hyperterminal zb) machen. natürlich seriell. aber müsste auch mit parallelen port gehen. man kann ja auch 2 comp mit dem parport verbinden.
am uC hast dann die pins Rx und Tx zur kommunikation. wie du sie verwendest hängt vom compiler ab. mit Bascom dürfte es nicht so schwer werden, auf irgendwelche seriellen befehle zu reagieren.
Wenn Du einem Controller mit Schrittmotor-Endstufen vom PC aus sagen möchtest, wieviel Schritte in welcher Richtung SM Nr. 2 drehen soll oder ob SM 1 seinen Nullpunkt suchen muß, kannst Du etwas 'Vorarbeit' von mir down-loaden, alles mit SMOST = SchrittMOtorSTeuerung.
Und hier wird Hardware dazu angeboten.
MfG Karl-Heinz
HobbyElektronik hier klicken ....
moin, x-ryder - was bist du den für ein LOL, wenn ich 4 motoren unabhängig voneinander steuern will, geht das mit sicherheit nicht nach deiner Vorstellung.
Ich denke mal, ich werde die 4x8Bit jetzt über die Parallelschnittstelle senden, da ich die RS232 nicht raffe... zumindest unter delphi nicht. na ja, egal...
mfg
qube
ehm ma ne frage, hast du dir das angeschaut, aufgrund der trägheit des eisenkerns werden die motoren einfach weiterdrehen, der parallelpost arbeitet schnell, wenn die programmierung auch gut ist...
damit lässt sich wohl ne recht gute motorsteuerung bauen, du kannst das ganze sogar noch mit nem zähler verbinden, dann lassen noch mehr motoren anbringen, aber wenn du die lösung nicht verstehst iss das auch ok.
aber es wäre noch freundlich, die, die dir helfen wollen nicht zu beleidigen, nur mal son tipp
Martin
Linus Torvalds, Entwickler von LinuxIch will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
Lesezeichen