Hallo zusammen,
ich habe vor kurzem angefangen mich mit Assembler zu beschäftigen.
Nun möchte ich über einen Atmega8515L diesen Schrittmotor ansteuern:
http://www.reichelt.de/Schrittmotore...c4cc51250383f2
Als Treiber habe ich den L6205 genommen und die Schaltung aus dem Datenblatt aufgebaut. (Siehe Anhang)
Als Versorgungsspannung dient ein 12V Netzteil.
Der ATMEGA8515L ist noch auf einem STK500, die 4 Ausgänge des PORT B habe ich auf die Eingänge des L6205 geführt.
Vollgendes Programm läuft auf dem ATMEGA
.include "8515def.inc"
.DEF Ausgabe = R16
.DEF Counter1 = R17
.DEF Counter2 = R18
.DEF Sensor = R19
RJMP main
main:
LDI Ausgabe,0b11111111
OUT DDRB,Ausgabe
Vor:
LDI Ausgabe,0b00001001 ;Schritt 1
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten1:
dec Counter1
brne Warten1
Warten2:
LDI Counter1, 0b11111111
dec Counter2
brne Warten1
LDI Ausgabe,0b00000101 ;Schritt 2
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten3:
dec Counter1
brne Warten3
Warten4:
LDI Counter1, 0b11111111
dec Counter2
brne Warten3
LDI Ausgabe,0b00000110 ;Schritt 3
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten5:
dec Counter1
brne Warten5
Warten6:
LDI Counter1, 0b11111111
dec Counter2
brne Warten5
LDI Ausgabe,0b00001010 ;Schritt 4
OUT PORTB,Ausgabe
LDI Counter1, 0b11111111
LDI Counter2, 0b00010100
Warten7:
dec Counter1
brne Warten7
Warten8:
LDI Counter1, 0b11111111
dec Counter2
brne Warten7
RJMP vor
Das ganze funktioniert auch soweit und der Motor dreht sich ungefähr mit einer Umdrehung pro Sekunde.
Nur leider läuft er nicht ruhig und vibriert.
Hat jemand eine Idee wieso der Motor vibriert?
Gruß Coni
Lesezeichen