From 0ba7011f1668201ffc06172f693ac4a038af11b3 Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Sat, 19 Dec 2015 20:15:11 +0100 Subject: [PATCH 1/8] fixed penUpPos and penDownPos values of xybot --- firmwares/xybot/xybot.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index 5de6f5e..468ca56 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -373,8 +373,8 @@ void initRobotSetup() roboSetup.data.height = HEIGHT; roboSetup.data.motorSwitch = 0; roboSetup.data.speed = 80; - roboSetup.data.penUpPos = 160; - roboSetup.data.penDownPos = 90; + roboSetup.data.penUpPos = 90; + roboSetup.data.penDownPos = 130; syncRobotSetup(); } // init motor direction From eb8cdb1c5062cf9015e0c8ebf706e7d41afcd7dc Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Sat, 19 Dec 2015 20:16:27 +0100 Subject: [PATCH 2/8] introduced echo version command for xybot --- firmwares/xybot/xybot.ino | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index 468ca56..0158b00 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -4,6 +4,8 @@ #include #include +const char versionString[] = "1.0"; + // data stored in eeprom static union{ struct{ @@ -224,6 +226,11 @@ void echoEndStop() Serial.println(digitalRead(ylimit_pin2)); } +void echoVersionString() +{ + Serial.println(versionString); +} + void syncRobotSetup() { int i; @@ -320,6 +327,9 @@ void parseMcode(char * cmd) case 11: echoEndStop(); break; + case 115: + echoVersionString(); + break; } } From 235a4b721b5f7e54f3db536debedb3acf17eea26 Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Sat, 19 Dec 2015 20:22:12 +0100 Subject: [PATCH 3/8] fixed inaccurate delay during doMove of xybot --- firmwares/xybot/xybot.ino | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index 0158b00..b9386a9 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -118,7 +118,12 @@ void doMove() } } mDelay=constrain(mDelay+speedDiff,stepdelay_min,stepdelay_max)+stepAuxDelay; - delayMicroseconds(mDelay); + if(mDelay <= 16000) { + delayMicroseconds(mDelay); + } + else { // delayMicroseconds can only produce an accurate delay up to 16383 + delay(mDelay/1000); + } if((maxD-i)<((stepdelay_max-stepdelay_min)/SPEED_STEP)){ speedDiff=SPEED_STEP; } From 8833bdfd1533b921bf038795136b2979ab09d933 Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Sat, 19 Dec 2015 20:29:34 +0100 Subject: [PATCH 4/8] fixed wrap around bug of stepAuxDelay higher than 32ms of xybot --- firmwares/xybot/xybot.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index b9386a9..c634777 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -73,7 +73,7 @@ void stepperMoveB(int dir) /************** calculate movements ******************/ //#define STEPDELAY_MIN 200 // micro second //#define STEPDELAY_MAX 1000 -int stepAuxDelay=0; +long stepAuxDelay=0; // int not sufficient because only supports delay up to 32ms int stepdelay_min=200; int stepdelay_max=1000; #define ACCELERATION 2 // mm/s^2 don't get inertia exceed motor could handle @@ -82,7 +82,7 @@ int stepdelay_max=1000; void doMove() { - int mDelay=stepdelay_max; + long mDelay=stepdelay_max; // int not sufficient because only supports delay up to 32ms int speedDiff = -SPEED_STEP; int dA,dB,maxD; float stepA,stepB,cntA=0,cntB=0; @@ -201,7 +201,7 @@ void parseCordinate(char * cmd) float speed = atof(str+1); tarSpd = speed/60; // mm/min -> mm/s }else if(str[0]=='A'){ - stepAuxDelay = atoi(str+1); + stepAuxDelay = atol(str+1); } } prepareMove(); @@ -270,7 +270,7 @@ void parseAuxDelay(char * cmd) { char * tmp; strtok_r(cmd, " ", &tmp); - stepAuxDelay = atoi(tmp); + stepAuxDelay = atol(tmp); } void parseLaserPower(char * cmd) From c93d3cedba56b07b86a04d98f1880f8521244335 Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Sat, 19 Dec 2015 21:17:07 +0100 Subject: [PATCH 5/8] introduced motorSwitch awareness move for xybot --- firmwares/xybot/xybot.ino | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index c634777..8a71747 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -4,7 +4,7 @@ #include #include -const char versionString[] = "1.0"; +const char versionString[] = "Version1.0"; // data stored in eeprom static union{ @@ -102,8 +102,13 @@ void doMove() cntA+=stepA; if(cntA>=1){ d = dA>0?motorAfw:motorAbk; + if(roboSetup.data.motorSwitch == 0) { + stepperMoveA(d); + } + else { + stepperMoveB(d); + } posA+=(dA>0?1:-1); - stepperMoveA(d); cntA-=1; } } @@ -112,8 +117,13 @@ void doMove() cntB+=stepB; if(cntB>=1){ d = dB>0?motorBfw:motorBbk; + if(roboSetup.data.motorSwitch == 0) { + stepperMoveB(d); + } + else { + stepperMoveA(d); + } posB+=(dB>0?1:-1); - stepperMoveB(d); cntB-=1; } } @@ -162,11 +172,21 @@ void goHome() { // stop on either endstop touches while(digitalRead(xlimit_pin2)==1 && digitalRead(xlimit_pin1)==1){ - stepperMoveB(motorBbk); + if(roboSetup.data.motorSwitch == 0) { + stepperMoveB(motorBbk); + } + else { + stepperMoveA(motorAbk); + } delayMicroseconds(stepdelay_min); } while(digitalRead(ylimit_pin2)==1 && digitalRead(ylimit_pin1)==1){ - stepperMoveA(motorAbk); + if(roboSetup.data.motorSwitch == 0) { + stepperMoveA(motorAbk); + } + else { + stepperMoveB(motorBbk); + } delayMicroseconds(stepdelay_min); } posA = 0; From 0b2d63ff0e528050f1fb9e8abe588a52b0c169a7 Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Sat, 19 Dec 2015 21:42:13 +0100 Subject: [PATCH 6/8] added limit switch check for move of xybot --- firmwares/xybot/xybot.ino | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index 8a71747..1825850 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -102,11 +102,13 @@ void doMove() cntA+=stepA; if(cntA>=1){ d = dA>0?motorAfw:motorAbk; - if(roboSetup.data.motorSwitch == 0) { - stepperMoveA(d); - } - else { - stepperMoveB(d); + if(d>0 && digitalRead(ylimit_pin2)==1 || d<0 && digitalRead(ylimit_pin1)==1) { + if(roboSetup.data.motorSwitch == 0) { + stepperMoveA(d); + } + else { + stepperMoveB(d); + } } posA+=(dA>0?1:-1); cntA-=1; @@ -117,11 +119,13 @@ void doMove() cntB+=stepB; if(cntB>=1){ d = dB>0?motorBfw:motorBbk; - if(roboSetup.data.motorSwitch == 0) { - stepperMoveB(d); - } - else { - stepperMoveA(d); + if(d>0 && digitalRead(xlimit_pin2)==1 || d<0 && digitalRead(xlimit_pin1)==1) { + if(roboSetup.data.motorSwitch == 0) { + stepperMoveB(d); + } + else { + stepperMoveA(d); + } } posB+=(dB>0?1:-1); cntB-=1; From cfcb86b1085bcb26233c3f1b0c694ad30c447c5d Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Mon, 21 Dec 2015 12:33:12 +0100 Subject: [PATCH 7/8] added laserpower delay for xybot --- firmwares/xybot/xybot.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index 1825850..fd7a982 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -303,6 +303,7 @@ void parseLaserPower(char * cmd) strtok_r(cmd, " ", &tmp); int pwm = atoi(tmp); laser.run(pwm); + delay(100); } void parsePen(char * cmd) From 3d5d877cc3387b4035ef1163779901c3ea3b7b8b Mon Sep 17 00:00:00 2001 From: Sven Jung Date: Mon, 21 Dec 2015 17:37:48 +0100 Subject: [PATCH 8/8] added penpos change delay for xybot --- firmwares/xybot/xybot.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/firmwares/xybot/xybot.ino b/firmwares/xybot/xybot.ino index fd7a982..1cbf0cf 100644 --- a/firmwares/xybot/xybot.ino +++ b/firmwares/xybot/xybot.ino @@ -312,6 +312,7 @@ void parsePen(char * cmd) strtok_r(cmd, " ", &tmp); int pos = atoi(tmp); servoPen.write(pos); + delay(100); } void parsePenPosSetup(char * cmd)