Hallo, ich versuche vergeblich mit einem AtMega8 über einen L6219 einen bipolaren Schrittmotor im Vollschritt zu steuern. Die Schaltung entspricht dem Logikplan (s. Anlage) und die Dimensionierung der Bauteile sollte zu dem von mir verwendeten Motor (s. Anlage) passen, da ein mir bekannter Entwickler die Variante Motor <-> L6219 auch so in seinen Produkten verwendet. Die Funktionstabelle (s. Anlage) habe ich für den Vollschritt in Assembler folgendermaßen umgesetzt. .include "m8def.inc" Start: ldi r16,low(ramend) ldi r17,high(ramend) ;Adresse vom RAM-Ende laden out spl,r16 ;Stackpointer auf out sph,r17 ;RAM-Ende setzen ; Port B&D als Ausgang setzen ; Port D schaltet den Motor ; Port B schalten Kontroll LED'S ldi r16,0xff out DDRB,r16 out DDRD,r16 ;Port B&D alle Augänge = LOW ldi r16,0x00 ; out portb, r16 out portd, r16 ldi r16, 0x18 ; Schrittzahl definieren (0x18 = 24 Schritte) MotorLoopVw: ; Drehen vorwärts ; FULL STEP 1 I01 | I11 | Ph1 | Ph2 | I02 | I12 ; LOW |LOW |LOW |LOW |LOW |LOW ldi r21, 0x00 out portb, r21 out portd, r21 rcall wait ; FULL STEP 2 I01 | I11 | Ph1 | Ph2 | I02 | I12 ; LOW |LOW |HIGH |LOW |LOW |LOW ldi r21, 0x04 out portb, r21 out portd, r21 rcall wait ; FULL STEP 3 I01 | I11 | Ph1 | Ph2 | I02 | I12 ; LOW |LOW |HIGH |HIGH |LOW |LOW ldi r21, 0x0C out portb, r21 out portd, r21 rcall wait ; FULL STEP 4 I01 | I11 | Ph1 | Ph2 | I02 | I12 ; LOW |LOW |LOW |HIGH |LOW |LOW ldi r21, 0x08 out portb, r21 out portd, r21 rcall wait dec r16 brne MotorLoopVw ;0 erreicht? nein -> Schleife ;Ende Port B&D alle Augänge = LOW ldi r16,0x00 ; out portb, r16 out portd, r21 ende: rjmp ende wait: ldi r19,1 ;r19,r18,r17 -> 3-Byte-Zähler ca 500ms bei r19 = 10 clr r18 ;höchstes Byte = 10, restliche clr r17 ;Bytes = 0 wait1: dec r17 ;niedrigstes Byte -1 brne wait1 ;0 erreicht? nein -> Schleife dec r18 ;mittleres Byte -1 brne wait1 ;0 erreicht? nein -> Schleife dec r19 ;höchstes Byte -1 brne wait1 ;0 erreicht? nein -> Schleife ret ;Schleifenende, Rückkehr Am Port B prüfe ich mit Hilfe von LED’s die Schaltfolge der Pins, Port D schaltet den Motortreiber. Leider macht der Motor keinen Mucks, obwohl die LED’S sich entsprechend der Schaltfolge verhalten. Den Motor habe entsprechend des Schaltplans geschaltet. Zwischen Braun und Schwarz, bzw. Gelb und Orange messe ich 7 Ohm. Die Spannungen am L6219 sind alle vorhanden, am Port 11 und 15 liegen über den Spannungsteiler 3,5 Volt an. Der Mikrokontroller ist auf einem Evaluierungsplatine stabil verankert, die Schaltung aus dem Logikplan habe ich auf einem Steckbrett gesteckt. Ich bin mittlerweile ratlos und hoffe, dass Euch noch was auffällt. Gruß, Smarki
Ich würde zunächst mal schauen, ob der Motor ein spürbares Haltemoment entwickelt. Ein Bild der Platine bzw. des Aufbaus wäre für weitere Tipps hilfreich. Die Implementierung kann man deutlich eleganter gestalten. Man kann die Bitmuster für die Schrittausgabe z.B. in einer Tabelle ablegen, und für die Schrittausgabe immer einen Wert aus der Tabelle holen. Mann muss dann je nach Drehrichtung nur den Zeiger erhöhen oder erniedrigen (und natürlich die Grenzen der Tabelle beachten). Bei Vollschritt ist das noch egal, aber wenn du so ein Projekt mit Mikroschritt programmierst, verlierst du sehr schnell den Überblick. Mit freundlichen Grüßen Thorsten Ostermann
Thorsten Ostermann schrieb: > Ich würde zunächst mal schauen, ob der Motor ein spürbares Haltemoment > > entwickelt. Hallo Thorsten, bei einem Bitmuster 0x00 (alle Ports auf Low) an PortD müsste der Motor die Position halten, oder wie teste ich das Haltemoment? Gruß, Smarki
Ja, z.B. Falls der uC gesockelt ist könntest du den auch erstmal entfernen, und die Leitungen hart auf Masse oder +5V ziehen. Dann könntest du auch die Schrittsequenz manuell durchsteppen. Du brauchst ja erstmal nur die beiden Phase-Lines, die anderen 4 Leitungen können alle auf Masse bleiben. Mit freundlichen Grüßen Thorsten Ostermann
Hallo, ich habe heute nochmal den L6219-Teil der Schaltung komplett neu gesteckt und siehe da, die Schaltung funktioniert doch. War mal wieder ein blöder Verdrahtungsfehler, aber zum optimieren der Arbeitspunkte ist man halt manchmal auf das Steckboard angewiesen.... Sorry, war nur falscher Alarm. Schönes Wochenende.....
Hier ist noch ein sehr kostengünstiger Schrittmotor mit Getriebe der perfekt mit dem oben gelinkten Logikplan funktioniert: http://www.pollin.de/shop/dt/MzE1OTg2OTk-/Motoren/Schrittmotoren/Getriebe_Schrittmotor_NMB_MAT_PG35L_048_USC0.html
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.