Ganz einfach: Wartezeit=1/Frequenz
Wenn du also 500Hz erzeugen willst musst du bis zum Umschalten 1/500Hz=2ms=2000µs warten.
Mit C-Programmierung bei µC kenn ich mich allerdings nicht so gut aus.
hallo,
mein Frage ist:
Ein Schrittmotor soll 50 Schritte fahren,danach soll er dir Richtung ändern dann wieder 50 Schritte machen.Wie kann man die frequenz rechnen, womit der Motor drehen soll?
wird das so funktioniern und wenn ja wie kann man die genaue Wartezeit x für _delay_us berechnen.Code:ISR (INT0_vect) //recht fahren { PORTB|=(1<<PB0); // Enable PORTB|=(1<<PB1); // Richtung for(int i=0,i<50,i++) { PORTB|=(1<<PB2) //Clock _delay_us(x) // wie berechnet man die x damit der Motor sauber sich dreht PORTB&=~(1<<PB2) } PORTB&=~(1<<PB0); // Enable löschen } ISR (INT1_vect) //"Mache viele Schritte" { PORTB|=(1<<PB0); // Enable PORTB&=~(1<<PB1); // Richtung for(int i=0,i<50,i++) { PORTB|=(1<<PB2) //Clock _delay_us(x) // wie berechnet man die x damit der Motor sauber sich dreht PORTB&=~(1<<PB2) } PORTB&=~(1<<PB0); // Enable löschen }
Ganz einfach: Wartezeit=1/Frequenz
Wenn du also 500Hz erzeugen willst musst du bis zum Umschalten 1/500Hz=2ms=2000µs warten.
Mit C-Programmierung bei µC kenn ich mich allerdings nicht so gut aus.
hi, ich habe ein Formel bei Nanotec gefunden:
Md= P * z / 6.28 * f; (P = Leistung in W, z = Schritte/ Umdrehung, f = Frequenz in Hz) kann man damit frequenz berechnen?
wenn ich zb den Motor vom Typ(SH4009M0806) mit einer Spg von 6V und 0,8 A betreibe, dann habe ich eine Leistung von 4,8W dann ist die Frequenz: f = Md*6,28/P/z, jetzt kommt die frage wie berechnet man Z(Schritte Pro Umdrehung), mein Motor macht 400 Schritte pro Umdrehung, und ich will das der Motor nur 50 Schritte drehen soll. wie macht man das?
Du gehst an die Sache etwas falsch heran. Der Schrittmotor verhält sich ähnlich wie eine Synchronmaschine, will heißen die Drehzahl ist völlig unabhängig von der Leistung, solange er keine Schritte verliert. Du gibst ihm ja die Schritte mit der Impulsfrequenz vor, an die er sich auch richtet. Je mehr Leistung du draufschaltest desto höher wird das Moment, welches er erzeugt, allerdings beschleunigt er dann nicht, sondern kann einfach nur mehr Kraft übertragen. Die Drehzahl wird von der Pulsfrequenz des Ansteuersignals vorgegeben. Wenn jetzt zB. am Takteingang des L297 im Wechsel je 100ms Low und 100ms High anliegen, dann bewegt sich der Motor alle 200ms um einen Schritt weiter. Mehr gibts da eigentlich nicht zu verstehen. Dann musst du es im µC nur noch so Programmieren, dass er genau 50 Impulse sendet und schon hat es sich erledigt. Die Frequenz und somit die Geschwindigkeit ergibt sich aus den Wartezeiten zwischen den Impulsen.
In Pseudocode:
Wiederhole 50 Mal:
setze Ausgang high
warte Wartezeit
setze Ausgang low
Die Drehzahl ist dann Schritte/Umdrehung geteilt durch die Wartezeit
danke für die Erklärung
Lesezeichen