Custom drive system? December 19, 2013 06:17PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? December 20, 2013 04:05AM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? December 20, 2013 02:23PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? December 20, 2013 03:25PM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? December 20, 2013 11:44PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? December 21, 2013 03:35AM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? December 23, 2013 06:26PM |
Registered: 10 years ago Posts: 226 |
#elif DRIVE_SYSTEM==6 deltaDiagonalStepsSquared = long(EEPROM::deltaDiagonalRodLength()*axisStepsPerMM[0]); if(deltaDiagonalStepsSquared>46000) { setLargeMachine(true); deltaDiagonalStepsSquaredF = float(deltaDiagonalStepsSquared)*float(deltaDiagonalStepsSquared); } else deltaDiagonalStepsSquared = deltaDiagonalStepsSquared*deltaDiagonalStepsSquared; deltaBPosXSteps = long(EEPROM::deltaDiagonalRodLength()*axisStepsPerMM[0]); xMaxSteps = (long)(axisStepsPerMM[0]*(xMin+xLength)); yMaxSteps = (long)(axisStepsPerMM[1]*yLength); zMaxSteps = (long)(axisStepsPerMM[2]*(zMin+zLength)); xMinSteps = (long)(axisStepsPerMM[0]*xMin); yMinSteps = 0; zMinSteps = (long)(axisStepsPerMM[2]*zMin);3°Printer.cpp Homing WTF 0 comments jaja
#if DRIVE_SYSTEM==6 // Tuga printer homing void Printer::homeXAxis() { long steps; if ((MIN_HARDWARE_ENDSTOP_X && X_MIN_PIN > -1 && X_HOME_DIR==-1 && MIN_HARDWARE_ENDSTOP_Y && Y_MIN_PIN > -1 && Y_HOME_DIR==-1) || (MAX_HARDWARE_ENDSTOP_X && X_MAX_PIN > -1 && X_HOME_DIR==1 && MAX_HARDWARE_ENDSTOP_Y && Y_MAX_PIN > -1 && Y_HOME_DIR==1)) { long offX = 0,offY = 0; #if NUM_EXTRUDER>1 for(uint8_t i=0; i 0) PrintLine::moveRelativeDistanceInSteps(axisStepsPerMM[0]*-ENDSTOP_X_BACK_ON_HOME * X_HOME_DIR,0,0,0,homingFeedrate[0],true,false); // PrintLine::moveRelativeDistanceInSteps(axisStepsPerMM[0]*-ENDSTOP_X_BACK_ON_HOME * X_HOME_DIR,axisStepsPerMM[1]*-ENDSTOP_Y_BACK_ON_HOME * Y_HOME_DIR,0,0,homingFeedrate[0],true,false); #endif currentPositionSteps[X_AXIS] = (X_HOME_DIR == -1) ? xMinSteps-offX : xMaxSteps+offX; currentPositionSteps[Y_AXIS] = 0; //(Y_HOME_DIR == -1) ? yMinSteps-offY : yMaxSteps+offY; coordinateOffset[0] = 0; coordinateOffset[1] = 0; transformCartesianStepsToDeltaSteps(currentPositionSteps, currentDeltaPositionSteps); #if NUM_EXTRUDER>1 PrintLine::moveRelativeDistanceInSteps((Extruder::current->xOffset-offX) * X_HOME_DIR,(Extruder::current->yOffset-offY) * Y_HOME_DIR,0,0,homingFeedrate[X_AXIS],true,false); #endif } } void Printer::homeYAxis() { // Dummy function x and y homing must occur together }4°Printer.cpp ???
#if DRIVE_SYSTEM==6 currentDeltaPositionSteps[2] = currentPositionSteps[2]; #endif5°motion.cpp supposed system transformation but only returns 0 or 1?
#if DRIVE_SYSTEM==4 /** Calculate the delta tower position from a cartesian position @param cartesianPosSteps Array containing cartesian coordinates. @param deltaPosSteps Result array with tower coordinates. @returns 1 if cartesian coordinates have a valid delta tower position 0 if not. X Y * * \ / \ / \ / \/ / / / / * Extruder */ uint8_t transformCartesianStepsToDeltaSteps(long cartesianPosSteps[], long tugaPosSteps[]) { tugaPosSteps[0] = cartesianPosSteps[0]; tugaPosSteps[2] = cartesianPosSteps[2]; long y2 = Printer::deltaBPosXSteps-cartesianPosSteps[1]; if(Printer::isLargeMachine()) { float y2f = (float)y2*(float)y2; float temp = Printer::deltaDiagonalStepsSquaredF - y2f; if(temp<0) return 0; tugaPosSteps[1] = tugaPosSteps[0] + sqrt(temp); } else { y2 = y2*y2; long temp = Printer::deltaDiagonalStepsSquared - y2; if(temp<0) return 0; tugaPosSteps[1] = tugaPosSteps[0] + HAL::integerSqrt(temp); } return 1; } #endif
Re: Custom drive system? December 24, 2013 03:38AM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? December 24, 2013 06:26PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? December 25, 2013 02:44AM |
Registered: 12 years ago Posts: 2,705 |
Quote
Gomez.Marcos
values at currentPositionSteps which steps per mm relation uses? the linear or the nonlinear?
and also currentPositionSteps is position from absolute 0 or from the last position?
transformCartesianStepsToDeltaSteps(currentPositionSteps, currentDeltaPositionSteps);
Re: Custom drive system? January 16, 2014 02:32PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? January 16, 2014 03:32PM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? January 16, 2014 05:54PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? January 17, 2014 03:32AM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? January 23, 2014 07:58PM |
Registered: 10 years ago Posts: 226 |
uint8_t transformCartesianStepsToDeltaSteps(long cartesianPosSteps[], long radPosSteps[]) { radPosSteps[2]=cartesianPosSteps[2]; Com::printFLN(Com::tX,cartesianPosSteps[0]); Com::printFLN(Com::tY,cartesianPosSteps[1]); Com::printFLN(Com::tZ,cartesianPosSteps[2]); Com::printFLN(Com::tZ,Printer::axisStepsPerMM[0],6); Com::printFLN(Com::tZ,Printer::axisStepsPerMM[1],6); float x=(cartesianPosSteps[0]/Printer::axisStepsPerMM[0])-Printer::deltaBPosXSteps; Com::printFLN(Com::tE,x); float y=(cartesianPosSteps[1]/Printer::axisStepsPerMM[1])+Printer::deltaBPosYSteps; Com::printFLN(Com::tF,y); float ang=0; if(x<0){ ang=180+((atan(y/x))*(180/M_PI)); }else if(x>0){ ang=((atan(y/x))*(180/M_PI)); }else if(x==0){ ang=90; } Com::printFLN(Com::tS,ang); float m=pow(x,2)+pow(y,2); Com::printFLN(Com::tP,m); float z=90-(acos((Printer::deltaAPosXSteps-m)/Printer::deltaAPosYSteps)*(180/M_PI)/2); Com::printFLN(Com::tI,z); radPosSteps[0]=(ang-z)*Printer::axisStepsPerMM[0]; radPosSteps[1]=(ang+z)*Printer::axisStepsPerMM[1]; Com::printFLN(Com::tJ,(ang-z)); Com::printFLN(Com::tR,(ang+z)); return 1; }
Re: Custom drive system? January 25, 2014 06:55AM |
Registered: 10 years ago Posts: 150 |
Re: Custom drive system? January 25, 2014 08:12AM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? January 25, 2014 09:34AM |
Registered: 10 years ago Posts: 150 |
Re: Custom drive system? January 25, 2014 09:39AM |
Registered: 12 years ago Posts: 2,705 |
if (virtual_axis_move == 0 && p->delta[E_AXIS] == 0) { if (numLines!=1) Com::printErrorFLN(Com::tDBGDeltaNoMoveinDSegment); return; // Line too short in low precision area }
Re: Custom drive system? January 25, 2014 12:25PM |
Registered: 10 years ago Posts: 150 |
Re: Custom drive system? January 25, 2014 12:36PM |
Registered: 12 years ago Posts: 2,705 |
Re: Custom drive system? January 25, 2014 12:40PM |
Registered: 10 years ago Posts: 150 |
Re: Custom drive system? January 25, 2014 03:10PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? January 26, 2014 03:41AM |
Registered: 12 years ago Posts: 2,705 |
inline uint16_t PrintLine::calculateDeltaSubSegments(uint8_t softEndstop)
Re: Custom drive system? January 26, 2014 03:05PM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? January 27, 2014 01:41AM |
Registered: 10 years ago Posts: 226 |
Connecting...
start
Printer is now online.
Info:External Reset
X65.73
Y194.83
J10125
R30016
Free RAM:1182
X65.73
Y194.83
J10125
R30016
X:0.00 Y:0.00 Z:0.00 E:0.00
SD init fail
ok 0
T:0.00 B:0.00 B@:0 @:0
wait
extruder 0: temp sensor defect
heated bed: temp sensor defect
Error: Printer set into dry run mode until restart!
wait
wait
wait
X+=10mm order, it only moves Y's motor in horary direction, after movement it needs to be disconnected because doesnt receive more movements
ok 0
ok 0
X65.44
Y194.71
J10082
R29997
Z-43
Z-19891
Z0
X65.16
Y194.59
J10038
R29979
Z-44
Z0
Z0
X64.87
Y194.47
J9994
R29959
Z-44
Z0
Z0
X64.59
Y194.34
J9950
R29940
Z-44
Z0
Z0
X64.30
Y194.21
J9906
R29920
Z-44
Z0
Z0
X64.01
Y194.08
J9861
R29900
Z-45
Z0
Z0
X63.72
Y193.95
J9817
R29880
Z-44
Z0
Z0
X63.43
Y193.82
J9772
R29860
Z-45
Z0
Z0
X63.14
Y193.69
J9728
R29839
Z-44
Z0
Z0
X62.85
Y193.55
J9683
R29818
Z-45
Z0
Z0
X62.56
Y193.41
J9638
R29797
Z-45
Z0
Z0
X62.27
Y193.27
J9593
R29775
Z-45
Z0
Z0
X61.97
Y193.13
J9547
R29754
Z-46
Z0
Z0
X61.68
Y192.99
J9502
R29732
Z-45
Z0
Z0
ok 0
wait
wait
wait
X=-10mm:Connecting... start Printer is now online. Info:External Reset X65.73 Y194.83 J10125 R30016 Free RAM:1182 X65.73 Y194.83 J10125 R30016 X:0.00 Y:0.00 Z:0.00 E:0.00 SD init fail ok 0 T:0.00 B:0.00 B@:0 @:0 wait extruder 0: temp sensor defect heated bed: temp sensor defect Errortongue sticking out smileyrinter set into dry run mode until restart! wait wait wait wait ok 0 ok 0 X66.01 Y194.95 J10169 R30035 Z0 Z-19891 Z0 X66.29 Y195.07 J10212 R30053 Z0 Z0 Z0 X66.57 Y195.19 J10256 R30071 Z0 Z0 Z0 X66.85 Y195.30 J10299 R30088 Z0 Z0 Z0 X67.13 Y195.42 J10342 R30106 Z0 Z0 Z0 X67.41 Y195.53 J10385 R30123 Z0 Z0 Z0 X67.69 Y195.64 J10428 R30140 Z0 Z0 Z0 X67.96 Y195.75 J10470 R30157 Z0 Z0 Z0 X68.24 Y195.85 J10513 R30173 Z0 Z0 Z0 X68.52 Y195.96 J10555 R30190 Z0 Z0 Z0 X68.79 Y196.06 J10598 R30206 Z0 Z0 Z0 X69.07 Y196.17 J10640 R30221 Z0 Z0 Z0 X69.34 Y196.27 J10682 R30237 Z0 Z0 Z0 X69.61 Y196.37 J10724 R30252 Z0 Z0 Z0 ok 0 wait wait wait
Re: Custom drive system? January 27, 2014 07:03AM |
Registered: 10 years ago Posts: 150 |
#if DRIVE_SYSTEM==4 // Scott-Russel drive system homing /** ^ Y axis | +------->|SR_XYHOMEDIST | | <-*-> <-*-> ------------+-- Common Linear Guide parallel to X axis |\ / | at a distance = SR_CARTESIAN_Y_HOME | \ / | | \ / | | \/ | | / | SR_CARTESIAN_Y_HOME | / | | / | |/ | ---*-------------------------+--> X Axis Origin */ void Printer::homeXAxis() // In S-R systems, X and Y are homed together { long steps; if ((MIN_HARDWARE_ENDSTOP_X && X_MIN_PIN > -1 && X_HOME_DIR==-1 && MIN_HARDWARE_ENDSTOP_Y && Y_MIN_PIN > -1 && Y_HOME_DIR==-1) || (MAX_HARDWARE_ENDSTOP_X && X_MAX_PIN > -1 && X_HOME_DIR==1 && MAX_HARDWARE_ENDSTOP_Y && Y_MAX_PIN > -1 && Y_HOME_DIR==1)) { long offX = 0,offY = 0; #if NUM_EXTRUDER > 1 for(uint8_t i=0; i < NUM_EXTRUDER; i++) { #if X_HOME_DIR < 0 offX = RMath::max(offX,extruder[ i ].xOffset); offY = RMath::max(offY,extruder[ i ].yOffset); #else offX = RMath::min(offX,extruder[ i ].xOffset); offY = RMath::min(offY,extruder[ i ].yOffset); #endif } // Reposition extruder that way, that all extruders can be selected at home pos. #endif UI_STATUS_UPD(UI_TEXT_HOME_X); steps = (Printer::yMaxSteps-Printer::yMinSteps) * Y_HOME_DIR; //Since Y carriage travel is always greater than X travel in a S-R currentPositionSteps[X_AXIS] = steps; currentPositionSteps[Y_AXIS] = 0; // dummy : no Y movement while traveling, together with X, toward endstops Com::printFLN(PSTR("Homing move begin "),1); // PrintLine::moveRelativeDistanceInSteps(2*steps,0,0,0,homingFeedrate[X_AXIS],true,true); // // Both carriages are now at home position currentPositionSteps[X_AXIS] = (X_HOME_DIR == -1) ? xMinSteps-offX : xMaxSteps+offX; currentPositionSteps[Y_AXIS] = 0; #if NUM_EXTRUDER > 1 PrintLine::moveRelativeDistanceInSteps((Extruder::current->xOffset-offX) * X_HOME_DIR,(Extruder::current->yOffset-offY) * Y_HOME_DIR,0,0,homingFeedrate[X_AXIS],true,false); #endif currentPositionSteps[Z_AXIS] = 1500; // Dummy setting for debugging Printer::updateCurrentPosition(); transformCartesianStepsToDeltaSteps(currentPositionSteps, currentDeltaPositionSteps); Com::printFLN(PSTR("After homing move "),2); // Com::printFLN(PSTR("Dummy move 1 begin "),3); // PrintLine::moveRelativeDistanceInSteps(7500,15000,0,0,homingFeedrate[X_AXIS],false,false); //Dummy move for debugging Com::printFLN(PSTR("Dummy move 2 begin "),4); // PrintLine::moveRelativeDistanceInSteps(12200,6400,0,0,homingFeedrate[X_AXIS],false,false); //Dummy move for debugging Com::printFLN(PSTR("Dummy move ended "),5); // } }
12:23:59.729 : Homing move begin 1 THE PRINTER GOES IMMEDIATLY TO THE HOME POSITION 12:23:59.729 : Seconds:2.23 12:23:59.733 : Segments:155 12:23:59.733 : Num lines:8 12:23:59.733 : segments_per_line:19 12:23:59.737 : Max Delta Steps:34291 12:23:59.737 : Steps Per Segment:34291 12:23:59.741 : Virtual axis steps:651529 12:23:59.741 : Max Delta Steps:446 12:23:59.745 : Steps Per Segment:446 12:23:59.745 : Virtual axis steps:8474 12:23:59.753 : Max Delta Steps:446 12:23:59.757 : Steps Per Segment:446 12:23:59.757 : Virtual axis steps:8474 12:23:59.765 : Max Delta Steps:446 12:23:59.770 : Steps Per Segment:446 12:23:59.770 : Virtual axis steps:8474 12:23:59.782 : Max Delta Steps:446 12:23:59.782 : Steps Per Segment:446 12:23:59.786 : Virtual axis steps:8474 12:23:59.794 : Max Delta Steps:446 12:23:59.794 : Steps Per Segment:446 12:23:59.798 : Virtual axis steps:8474 12:23:59.807 : Max Delta Steps:446 12:23:59.807 : Steps Per Segment:446 12:23:59.810 : Virtual axis steps:8474 12:23:59.818 : Max Delta Steps:446 12:23:59.822 : Steps Per Segment:446 12:23:59.822 : Virtual axis steps:8474 HERE, WE ARE WAITING FOR ABOUT 45 SECONDS, THE PRINTER BEING IN HOME POSITION ! 12:24:44.781 : Missed steps:66898 12:24:44.785 : Step/seg remaining:0 12:24:44.785 : Num Delta Segments:0 12:24:44.789 : Half Step:4 12:24:45.125 : Missed steps:16856 12:24:45.125 : Step/seg remaining:0 12:24:45.129 : Num Delta Segments:0 12:24:45.129 : Half Step:4 12:24:45.436 : Missed steps:16854 12:24:45.436 : Step/seg remaining:0 12:24:45.440 : Num Delta Segments:0 12:24:45.440 : Half Step:4 12:24:45.715 : Missed steps:16888 12:24:45.715 : Step/seg remaining:0 12:24:45.719 : Num Delta Segments:0 12:24:45.719 : Half Step:4 12:24:45.993 : Missed steps:16886 12:24:45.997 : Step/seg remaining:0 12:24:45.997 : Num Delta Segments:0 12:24:45.997 : Half Step:4 12:24:46.271 : Missed steps:16888 12:24:46.276 : Step/seg remaining:0 12:24:46.276 : Num Delta Segments:0 12:24:46.279 : Half Step:4 12:24:46.587 : Missed steps:16886 12:24:46.587 : Step/seg remaining:0 12:24:46.591 : Num Delta Segments:0 12:24:46.591 : Half Step:4 12:24:46.927 : Missed steps:16856 12:24:46.931 : Step/seg remaining:0 12:24:46.931 : Num Delta Segments:0 12:24:46.931 : Half Step:4 12:24:46.935 : After homing move 2 HERE, THE HOME POSITION IS STILL OK 12:24:46.935 : Dummy move 1 begin 3 12:24:46.939 : Seconds:0.55 12:24:46.939 : Segments:38 12:24:46.939 : Num lines:2 12:24:46.943 : segments_per_line:19 12:24:46.943 : Max Delta Steps:1012 12:24:46.947 : Steps Per Segment:1012 12:24:46.947 : Virtual axis steps:19228 12:24:46.951 : Max Delta Steps:577 12:24:46.951 : Steps Per Segment:577 12:24:46.955 : Virtual axis steps:10963 12:24:46.955 : Dummy move 2 begin 4 12:24:46.955 : Seconds:0.45 12:24:46.959 : Segments:31 12:24:46.959 : Num lines:2 12:24:46.959 : segments_per_line:15 12:24:46.963 : Max Delta Steps:526 12:24:46.963 : Steps Per Segment:526 12:24:46.967 : Virtual axis steps:7890 12:24:46.967 : Max Delta Steps:500 12:24:46.972 : Steps Per Segment:500 12:24:46.972 : Virtual axis steps:7500 12:24:46.975 : Dummy move ended 5 BOTH MOVES SEEMS OK, THEN THE PRINTER GOES BACK TO HOME POSITION, WITH AN ERROR 12:24:46.975 : Seconds:1.21 12:24:46.975 : Segments:84 12:24:46.980 : Num lines:4 12:24:46.980 : segments_per_line:21 12:24:46.980 : Max Delta Steps:54275 12:24:46.984 : Steps Per Segment:54275 12:24:46.988 : Virtual axis steps:1139775 12:24:46.988 : Max Delta Steps:0 12:24:46.997 : Error:No move in delta segment with > 1 segment. This should never happen and may cause a problem! 12:26:11.286 : Missed steps:15815 12:26:11.290 : Step/seg remaining:0 12:26:11.290 : Num Delta Segments:0 12:26:11.290 : Half Step:4 THEN, I WAS UNABLE TO MOVE ANY MORE THE PRINTER FROM THE REPETIER HOST PANEL
Re: Custom drive system? January 27, 2014 09:42AM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? January 27, 2014 11:33AM |
Registered: 10 years ago Posts: 226 |
Re: Custom drive system? January 27, 2014 11:55AM |
Registered: 12 years ago Posts: 2,705 |
steps = (Printer::yMaxSteps-Printer::yMinSteps) * Y_HOME_DIR; //Since Y carriage travel is always greater than X travel in a S-R