Schrittmotor an TB6560 steuern mit Step & Dir


ich habe mir 2 stepper-treiber zum testen gekauft. klein, preiswert und hoffentlich tauglich und kann 3a.
hier eine sehr schöne, ausführliche beschreibung in d dazu:
http://wirbel.htpc-forum.de/cnc/tb6560/index2.html

nun suche ich schon eine weile rum und lese etliche artikel zu libs und im www und finde nichts gescheites.
alles ich bisher hatte, bezieht auf die steuerung einer "nackten" h-bridge oder simplen treiber-chips.
.... oder steuern mit pwm, für mich (grundsätzlich) untauglich ist

klar findet man auch sketches, welche 2 pins benutzen - aber m.m.n. relativ "übel" programmiert sind.
hat man mir boch bisher hier zugetragen, möglichst auf delays zu verzichten - verständlicherweise.
wie macht man's besser ? mit timer(n) ?

bevor ich hier nun in einer kleinen ewigkeit das rad neu erfinde, die frage euch: gipp's schon ? wo ?
elementare codeschnipsel für ein grundgerüst würden mir schon reichen.

zwischendurch:
hab mir mal die cpp's von accelstepper und ah_pololu angesehen.
erster steuert mit 4 pins die h-bridge direkt und berechnet timings intern. (so) nicht brauchbar.
letztere gönnt sich div. delaymicros in summe von min. 400µs. nicht dolle.
beide arbeiten ihre todo-schleife für die anzahl der steps mit dem vergleich von micros ab (blinkled ohne delay).
ok - zwar kein delay, aber die routine hampelt da auch ne weile in eine schleife, ohne das loop zum tragen kommt.

meine idee, die mir seit einiger zeit durch den kopf geht:
1)
man nehme einen timer und setze diesen jeweils auf die doppelt benötigte frequenz/halbe zeit des jeweils aktuell benötigten schrittimpulses.
das absolute maximum läge ca. bei 5000hz/schritte sekunde oder 200 µs - für einen stepper das ist schon reichlich ! entspricht max. 10khz oder 100µs.
das sollte der timer eigentlich problemlos schaffen und selbst bei andauernder "höchstgeschwindigkeitsfahrt" noch genug zeit für's restliche programm lassen.
ich denke, das hier eher selten 2500hz/400µs, bzw. eben 5khz/200µs für den "halbschritt" erreicht werden

2)
ist der timer-intervall auf den gewünschten "halbschritt" eingestellt, wird die callback-routine im passend takt (doppelt schnell) aufgerufen.
mit einer globalen toggle-var setz ich dann einmal einen out auf h, im nächsten durchgang auf l.  ergibt ein schön symetrisches puls-pause-verhältnis mit den gewünschten frequenz.
jeweils vor dem "h-setzen" müsste noch geprüft werden, ob noch impulse mit der gleichen frequenz noch erzeugt werden sollen.
gibts nix mehr ( = 0) zum runterzählen (logo auch global), kehrt die cb-funktion umgehend zurück in die loop. (oder sonstwohin ?!)

3)
in der loop muss dieser "zustand" dann erkannt und geprüft werden, oder weitere (teil-) sequenzen mit anderer richtung & frequenz vorliegen. auch global.
falls ja, entsprecheng den richtungsausgang setzen, timer-intervall neu berechnen und der zählervariablen den passenden wert geben.
der rest geht dann wie vn allein wie unter 2).
gibt's erst mal nix weiter, wird der timer gestoppt.

ich hoffe, hier keinen allzugroßen denkfehler gemacht zu haben.
falls ja, lasst euer "gemecker" auf mich einprasseln ..... aber mit begründung bitte.  :d






Arduino Forum > International > Deutsch (Moderator: uwefed) > Schrittmotor an TB6560 steuern mit Step & Dir


arduino

Comments

Popular posts from this blog

Convierte tu Raspberry en un NAS. Firmware fvdw-sl 15.3 - Raspberry Pi Forums

How to format a Get Request

avrdude: verification error, first mismatch at byte 0x0000 0x0c != 0x62