Aansturen stepper via programma

Arduino specifieke Software
Berichten: 2
Geregistreerd: 24 Nov 2014, 15:29

Aansturen stepper via programma

Berichtdoor Tronneke » 24 Nov 2014, 15:41

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

Advertisement

Berichten: 4079
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Aansturen stepper via programma

Berichtdoor shooter » 25 Nov 2014, 13:51

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.
paul deelen
shooter@home.nl

Berichten: 2
Geregistreerd: 24 Nov 2014, 15:29

Re: Aansturen stepper via programma

Berichtdoor Tronneke » 26 Nov 2014, 13:03

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.

Berichten: 4079
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Aansturen stepper via programma

Berichtdoor shooter » 27 Nov 2014, 10:45

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
paul deelen
shooter@home.nl

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 19 gasten