zoals bij sommige bekend ben ik bezig met een wat groter project, waarin meerdere steppers zitten met ieder een eigen stepper driver.
de assen werken al wel, maar zijn zodanig geprogrameerd dat er maar 1 as tegelijk kan draaien. het is voor nu nog geen echte noodzaak, maar ik denk wel dat ik later meerdere assen tegelijk moet kunnen laten draaien.
dus ik ben aan het nadenken hoe dit te doen.
nou heeft daar in een ander topic, stijnos al eens ooit hier iets over gezegd, wat ik hier onder dus quote.
vraag is eigenlijk hoe gaat het dan met de acc en deceleratie.
of hoe worden normaal gesproken meerdere assen aan gestuurd inclusief acc en deceleratie ?
Je hebt een homing sensor dus bij de init loop je terug naar de aanslag en dan ben je op positie 0. Vanaf daar hou je het aantal stappen bij en weet je altijd waar je zou moeten zitten (er vanuit gaan de dat je geen slip hebt)
Een 2e tip is als je hiervoor openstaat het zo te maken dat de functie MoveNumberOfSteps enkel een variabele richting en aantal stappen zet, maar niet zelf de pulsen voor de stepper gaat maken.
Ik heb je stepper driver bekeken en ik snap eigenlijk niet waarom jouw 1 Mhz uberhaubt van belang is. Jouw stepper driver bepaald het aantal stappen en 1 stap is gewoon een vaste verplaatsing van afstand.
Dus als je hem 1000 pulsen geeft ongeacht op welke snelheid dan verplaatst de motor zich even ver.Ik zou een interrupt maken met je timer 1 op bijvoorbeeld 500uS of misschien wat sneller als dat toelaat.
En die interrupt controlleert of het aantal stappen is gemaakt en zo niet dan doet hij de een keer de pulse pin hoog maken en de andere keer de pulse pin laag.
Meer niet.
Als je dit aan het doen bent zet je een vlaggetje (beter een enum met status) STEPPER_IS_MOVING en heb je het aantal stappen bereikt in je interrupt dan zet je deze status op STEPPER_IN_POSITIONIn je main loop hoef je dan enkel een gewenste positie te schrijven en parallel op de achtergrond gaat die stepper wel naar de positie die jij wilt. Ondertussen doe je van alles tot de status meld STEPPER_IN_POSITION.
Op deze manier kun je in de main 10 of 100 verschillende taken doen en doet die stepper etc zijn ding wel, waar jij niet op hoeft te wachten.
Goed genoeg tips
Doe ermee wat je wilt, maar neem van mij aan, als je straks tegen issues aanloopt dat het niet werkt of niet meer wilt werken dan zat hier je fout. Het design, de schaalbaarheid en het overzicht. Dat zijn dingen die je later niet nog even doet of aanpast.