Aansturen stepper via programma
4 berichten
• Pagina 1 van 1
Aansturen stepper via programma
Beste forumgangers,
Sinds een week heb ik een Arduino aangeschaft en ben aan het stoeien met het aansturen van een stepper motor voor een draaitafel.
Maar helaas heb ik niet de programmeer ervaring om een programma te schrijven die kan communiceren met Arduino.
Het programma stuurt via de com poort data volgens onderstaand protocol.
De arduino zou dus moeten communiceren volgens dat protocol en dan de steppermotor aansturen.
Ik heb een Easydriver met een Ardruino Trinket Pro (lekker klein!)
Het is me wel gelukt om een reactie te sturen (^R1R2R3R4) op de input V die van de PC afkomt. Hierdoor geeft het programma een hele reeks seriele data door welke gebaseerd is op onderstaand protocol. Helaas kom ik met mijn geringe kennis van programmeren niet verder.
Het PROTOCOL
General Rotary Communication Protocol
All commands sent to the rotary table are in simple character format including the motor numbers. Only the parts marked as xxx passed to the table as byte data. For example if you want table 1 rotate 4 steps instead of passing "I1M004" you pass "I1M" + (char)0 + (char)0 + (char)4
In general all commands get a reply in the form of: ^XXXXXX
Commands
V
Request the status of the rotary table. Usual reply would be ^R1R2R3R4 indicating rotary 1 ready, rotary 2 ready, etc. ^B1xxxR2R3R4 means rotary 1 is busy where xxx are 3 bytes indicates how many steps the rotary still has to perform.
SmMxxx
Sets the speed of the motor m to xxx, where xxx is a 3 bytes of data indicating the speed. Example code: port.Write("S1M" + (char)0 + (char)6 + (char)255); // set motor 1 to speed 1791. The standard speed range of our rotary table is: 0x000001 to 0x0012FF (1 to 4863). Controller will respond with ^mxx mirroring the motor number and 2 last bytes of speed setting.
ImMxxx
Turns motor m xxx number of steps. Controller will acknowledge with ^Bmxxx
DmCWLO
Set motor number m to rotate clockwise (So each consecutive command to rotate the motor m will rotate it clockwise).
DmCWHi
Sets rotary m to rotate counterclockwise.
EmHALT
Rotary m stop.
Rotary Sample Command Sequence
Motor numbers are passed as characters but the number of steps and speed are passed as 3 bytes of binary for simplicity.
send: V reply: ^R1R2R3R4
send: S1M1791 reply: ^191
send: D1CWLO reply: ^
send: I1M100 reply: ^B1100
Sinds een week heb ik een Arduino aangeschaft en ben aan het stoeien met het aansturen van een stepper motor voor een draaitafel.
Maar helaas heb ik niet de programmeer ervaring om een programma te schrijven die kan communiceren met Arduino.
Het programma stuurt via de com poort data volgens onderstaand protocol.
De arduino zou dus moeten communiceren volgens dat protocol en dan de steppermotor aansturen.
Ik heb een Easydriver met een Ardruino Trinket Pro (lekker klein!)
Het is me wel gelukt om een reactie te sturen (^R1R2R3R4) op de input V die van de PC afkomt. Hierdoor geeft het programma een hele reeks seriele data door welke gebaseerd is op onderstaand protocol. Helaas kom ik met mijn geringe kennis van programmeren niet verder.
Het PROTOCOL
General Rotary Communication Protocol
All commands sent to the rotary table are in simple character format including the motor numbers. Only the parts marked as xxx passed to the table as byte data. For example if you want table 1 rotate 4 steps instead of passing "I1M004" you pass "I1M" + (char)0 + (char)0 + (char)4
In general all commands get a reply in the form of: ^XXXXXX
Commands
V
Request the status of the rotary table. Usual reply would be ^R1R2R3R4 indicating rotary 1 ready, rotary 2 ready, etc. ^B1xxxR2R3R4 means rotary 1 is busy where xxx are 3 bytes indicates how many steps the rotary still has to perform.
SmMxxx
Sets the speed of the motor m to xxx, where xxx is a 3 bytes of data indicating the speed. Example code: port.Write("S1M" + (char)0 + (char)6 + (char)255); // set motor 1 to speed 1791. The standard speed range of our rotary table is: 0x000001 to 0x0012FF (1 to 4863). Controller will respond with ^mxx mirroring the motor number and 2 last bytes of speed setting.
ImMxxx
Turns motor m xxx number of steps. Controller will acknowledge with ^Bmxxx
DmCWLO
Set motor number m to rotate clockwise (So each consecutive command to rotate the motor m will rotate it clockwise).
DmCWHi
Sets rotary m to rotate counterclockwise.
EmHALT
Rotary m stop.
Rotary Sample Command Sequence
Motor numbers are passed as characters but the number of steps and speed are passed as 3 bytes of binary for simplicity.
send: V reply: ^R1R2R3R4
send: S1M1791 reply: ^191
send: D1CWLO reply: ^
send: I1M100 reply: ^B1100
Advertisement
Re: Aansturen stepper via programma
allereerst de vraag welk voltage de draaitafel uitgeeft, als dit ouderwets rs232 is, dan blaas je de trinket op dus even oppassen wat je doet.
maak eens een simpel programma en Serial.print "Hello" op de serial monitor van de PC.
je hebt te maken met baudrate(snelheid) , aantal bits etc.
als eerste schrijf je dan je programma die een 'V' naar je draaitafel stuurt, en dan net zolang rommelen tot je de gewenste string terugkrijgt.
maak eens een simpel programma en Serial.print "Hello" op de serial monitor van de PC.
je hebt te maken met baudrate(snelheid) , aantal bits etc.
als eerste schrijf je dan je programma die een 'V' naar je draaitafel stuurt, en dan net zolang rommelen tot je de gewenste string terugkrijgt.
paul deelen
shooter@home.nl
shooter@home.nl
Re: Aansturen stepper via programma
Beste Shooter,
Het programma dat de V verstuurd is een windows programma. Het lukt me wel om de Arduino te laten reageren op deze V zodat het windows programma weer een code naar de Arduino stuurd.
Maar daarna heb ik te weinig programmeer ervaring om het probleem verder op te lossen zodat het protocol gevolgd kan worden.
De Trinket stuurt de draaitafel niet rechtstreeks aan, daar zit een stepperdriver tussen. De stepperdriver heeft een aparte voeding voor de motor.
Het programma dat de V verstuurd is een windows programma. Het lukt me wel om de Arduino te laten reageren op deze V zodat het windows programma weer een code naar de Arduino stuurd.
Maar daarna heb ik te weinig programmeer ervaring om het probleem verder op te lossen zodat het protocol gevolgd kan worden.
De Trinket stuurt de draaitafel niet rechtstreeks aan, daar zit een stepperdriver tussen. De stepperdriver heeft een aparte voeding voor de motor.
Re: Aansturen stepper via programma
dan snap ik even niet wat die trinket moet gaan doen.
je ontvangt een V van de PC, en jij moet dan een stukje tekst terugsturen naar de PC met je trinket? als simulatie
of jij stuurt een V met je trinket naar je draaitafel en krijgt dan een reeks terug uit de driver? zodat je geen PC nodig hebt.
daarna volgt uiteraard de rest van de commandos
je ontvangt een V van de PC, en jij moet dan een stukje tekst terugsturen naar de PC met je trinket? als simulatie
of jij stuurt een V met je trinket naar je draaitafel en krijgt dan een reeks terug uit de driver? zodat je geen PC nodig hebt.
daarna volgt uiteraard de rest van de commandos
paul deelen
shooter@home.nl
shooter@home.nl
4 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Google [Bot], waawuyazuel en 26 gasten