PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Schrittmotorsteuerung / Schritte auf LCD anzeigen



Matth1as
06.02.2008, 18:13
Hallo Leute!

Bin mit der Microcontrollerprogramierung noch ganz am Anfang.
Ich habe mir eine Schrittmotorsteuerung L297/L297 aufgebaut.
Diese wird mit einem Mega32 gesteuert.

Habe mir mal ein kleines Programm zum austesten der Funktionen geschrieben. Funktioniert auch alles. Jetzt möchte ich mir gerne die Schritte des Schrittmotors auf einem LCD anzeigen lassen.

Nur wo kann ich den Befehl LCD im Programm platzieren?
Wenn ich Ihn in der FOR/NEXT Schleife schreibe wird mein Motor komischerweise langsamer..?
Oder habe ich schon einen grundsätzlichen Fehler gemacht?

Vielleicht kann mir einer ein paar Tipps geben..
Hier mein Code:

$regfile = "m32def.dat"
$crystal = 8000000

Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4
Config Lcdbus = 4


Config Porta = Output
Porta.0 = 0 'Clock Schrittmotorsteuerung
Porta.1 = 1 'Drehrichtungswechsel
Porta.2 = 0 'Half/Full


Dim I As Integer

Do

For I = 0 To 3999
Toggle Porta.0 : Waitus 600
Next
Waitms 500
Toggle Porta.1 'Drehrichtung wechseln
Toggle Porta.2 'Half/Full umschalten

Loop



End
Vielen Dank

Gruß Matthias

sechsrad
06.02.2008, 18:21
das ist doch nicht alles vom code.
meine glaskugel ist kaputt.

Martin.
06.02.2008, 21:27
Ich hab zwar noch nicht so viel erfahrung mit LCDs, aber wenn ich eins über vier Datenleitungen ohne BuisyMode ansteuere, dann dauert es vlt. eine Sekunde bis die Anzeige komplett ausgefüllt ist. Durch diese Trägheit/Verzögerung könnte unter Umständen dein langsam Werden zu Stande kommen. Eine Lösung dafür hab ich leider nicht. Müsstest ja in der Art Multitasking machen: Aufs LCD schreiben, während der Motortreiber seine Impulse bekommt.

stefan_Z
07.02.2008, 00:01
LCD braucht relativ viel Zeit glaubich...
Ist aber ne schöne Übung für dich, um weiterzukommen! Ich nenne mal ein paar Stichpunkte für deine Recherche hier im Forum und im Bascom Handbuch:
- Interrupt-Routine (ISR)
- Sub-Routine
- Hardware-Timer für den Clock-Pin

Gento
07.02.2008, 06:41
Hallo Matthias,

Ich hole mal ein wenig tiefer aus.

Einen SM startet man nicht mit von 0 auf 100 ''full Speed'' , weil das kostet Höchgeschwindigkeit.

Dazu benutzt man Rampen die man in Tabellen ablegen kann.

Bascom LCD Ausgaben sind gewollt so langsam, damit auch das übelste LCD noch läuft.

Umgehen könnte man die lahme Anzeige durch Angabe eines anderen Quarzes. (Statt 8 Mhz eben 1 MHz)
Dann sollte man das aber bei Wait & Baud berücksichtigen.

Warum ersetzt Du Deine Waitus 600 = 0,6 mSek nicht durch die LCD Ausgabe ?

Das waren ein paar Ansätze zum Nachdenken.

lg gento