pongi
12.04.2007, 21:52
Hallo!
Ich weiss, es gibt schon hunderte Threads, aber ich weiss jetzt nicht weiter.
Meine Schaltung basiert auf diesem Tutorial: http://www.the-starbearer.de/Roboterelektronik/Schrittmotoren.htm
Also ULN2803 als Treiber.
Die Daten des Motors stehen da: http://www.sly.de/artikeldet.php?suchspeicher=MOTS2&proid=37979&bez=Schrittmotor12VDC%2060mA%20(Winkel%207.5°%20/%2085%20Schritte)&sid=da78dc61278c1faeb1932bec15e74dfc
An die Pins 1-4 vom ULN2803 hab ich PC 0-3 vom Atmega8 angeschlossen, und an die Pins 15-18 die Spulen B2-B1-A2-A1 in diese Reihenfolge. Die Mittelanzapfung liegt auf 12V, und natürlich hat der ULN seine Spannungsversorgung.
Ich kann den Motor schon in Halb- und Vollschritt ansteuern, aber aus irgendeinem Grund dreht er sich nur in eine Richtung. Die Bitfolge für die Ansteuerung habe ich in ein Array gepackt, es wird einmal inkremental und einmal dekremental ausgelesen, der Motor dreht sich aber trotzdem nur in eine Richtung.
Code:
void main(void){
DDRC=0xFF;
const uint8_t steptable[]={1, 3, 2, 6, 4, 12, 8, 9};
uint8_t j=0;
while(j!=11){ //hier solle es in die eine Richtung drehen
uint8_t i=0;
while(i!=8){
PORTC=steptable[i];
i++;
_delay_ms(5);
j++;
}
}
j=0;
while(j!=11){ //und ab hier in die andere
uint8_t i=7;
while(i!=255){
PORTC=steptable[i];
i--;
_delay_ms(5);
j++;
}
}
}
Was mach ich falsch? Liegst an der Software, oder hab ich was falsch angeschlossen?
Der Motor läuft übrigens sehr ruhig, erwärmt sich nicht, und hat ein ordentliches Drehmoment. Ich tippe also auf einen banalen Software- und/oder Verständnisfehler meinerseits, den ich aber beim besten Willen nicht finde...
Danke im Voraus für die Hilfe.
MfG
pongi
Ich weiss, es gibt schon hunderte Threads, aber ich weiss jetzt nicht weiter.
Meine Schaltung basiert auf diesem Tutorial: http://www.the-starbearer.de/Roboterelektronik/Schrittmotoren.htm
Also ULN2803 als Treiber.
Die Daten des Motors stehen da: http://www.sly.de/artikeldet.php?suchspeicher=MOTS2&proid=37979&bez=Schrittmotor12VDC%2060mA%20(Winkel%207.5°%20/%2085%20Schritte)&sid=da78dc61278c1faeb1932bec15e74dfc
An die Pins 1-4 vom ULN2803 hab ich PC 0-3 vom Atmega8 angeschlossen, und an die Pins 15-18 die Spulen B2-B1-A2-A1 in diese Reihenfolge. Die Mittelanzapfung liegt auf 12V, und natürlich hat der ULN seine Spannungsversorgung.
Ich kann den Motor schon in Halb- und Vollschritt ansteuern, aber aus irgendeinem Grund dreht er sich nur in eine Richtung. Die Bitfolge für die Ansteuerung habe ich in ein Array gepackt, es wird einmal inkremental und einmal dekremental ausgelesen, der Motor dreht sich aber trotzdem nur in eine Richtung.
Code:
void main(void){
DDRC=0xFF;
const uint8_t steptable[]={1, 3, 2, 6, 4, 12, 8, 9};
uint8_t j=0;
while(j!=11){ //hier solle es in die eine Richtung drehen
uint8_t i=0;
while(i!=8){
PORTC=steptable[i];
i++;
_delay_ms(5);
j++;
}
}
j=0;
while(j!=11){ //und ab hier in die andere
uint8_t i=7;
while(i!=255){
PORTC=steptable[i];
i--;
_delay_ms(5);
j++;
}
}
}
Was mach ich falsch? Liegst an der Software, oder hab ich was falsch angeschlossen?
Der Motor läuft übrigens sehr ruhig, erwärmt sich nicht, und hat ein ordentliches Drehmoment. Ich tippe also auf einen banalen Software- und/oder Verständnisfehler meinerseits, den ich aber beim besten Willen nicht finde...
Danke im Voraus für die Hilfe.
MfG
pongi