Gast
#2851046
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


