Kör Accelstepper snabbare - koden HodgePodging för en snabbare maximal steg hastighet (1 / 3 steg)
Steg 1: Låt oss tala grunderna! Vad gör jag, varför?
Jag använder många ord för att beskriva min metod, men jag har också respekt för att alla skulle närma sig detta från en annan plats. Om du är erfaren, ledsen för de extra ord, men om du inte är bekant med arduino och vill köra en stegmotor snabbare än du kan för närvarande med accelstepper, sedan fråga några frågor alls.
Planen:
Accelstepper använder en icke-linjär acceleration profil, att gradvis öka din stegmotor steg. Det gör detta på ett mycket abstrakt sätt under stepper.run() samtalet, som är en funktion (ungefärlig uppfattning) kontrollerar om du är för ett nytt steg, som om du är, kliver föraren och beräknar när nästa steg beror. Du behöver ringa det ofta, men du kan göra andra saker under den kontrollerar kretsar. Så här kan till exempel du se:
Samtidigt (digitalRead(someSensor)==high) {
göra saker
göra mer saker
stepper.Run();
}
Så länge som "saker" inte tar lång tid, stepper.run() körs mycket vanligt, och du har släta stepper drift. Men stepper.run() är inte en mycket snabb funktion, och någon gång är det den begränsande faktorn! Sedan, detta medan slinga tar för lång tid.
Så är mitt förslag och metod att göra följande:
Start från det icke-rörliga läget
While(Condition) {
göra saker
stepper.Run();
om (stepper. Speed()==maxAccelstepperSpeed) {
< extraFastMode();
Extrafast läge är en enkel linjär acceleration program. Inte så trevlig som stepper.run(), men mycket snabbare.
bryta; Låt oss få ut av detta medan loop!
}
extraFastMode() psuedo-koden:
beräkna en start stepdelay baserat på vilken hastighet du övergången från det accelstepper biblioteket.
Den nya metoden av att kliva blir bara:
While(condition) {"
"Saker / kolla extra om uttalanden
Ta ett steg
vänta manuellt med en fördröjning
lägga till en räknare
om räknaren träffar flera utlösare, och du inte på din slutliga målet hastighet,
sedan minska din fördröjning [som ökar din motor hastighet"
} //loop tillbaka till toppen
Är detta vettigt? Nästa steg, låt oss dyka in min lika ordrik kommenterade kod och komma tillbaka om det finns några frågor.