@mrehorstdmd @dc42 Thank you for your help. I solved the problem by increasing the current through the driver. I will replace the belt based on your advice. I'm putting the wrench there for luck.
Posts made by rutku
-
RE: Nema 34 Z axis shakes and does not move
-
RE: Nema 34 Z axis shakes and does not move
@mrehorstdmd
It worked very nicely on Mach3 cnc software. I don't think there is a problem with drivers either. Printer printing area is 1.5mx1m.
From which value will I start the current values? -
Nema 34 Z axis shakes and does not move
Hello there,
I built a large corexy printer. I used Nema 34 for x, y and z axes. I used LeadShine M880 drivers. Movement in the x and y axes is excellent. But there is constant shaking in the Z axis and I can move it up by hand. I used 4 ballscrews and 4 nema 34 in the Z axis. How do you think I can solve this problem?config.g
; Configuration file for Duet WiFi (firmware version 2.03) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Tue Apr 06 2021 20:07:03 GMT+0300 (DoÄŸu Avrupa Yaz Saati) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"SAN-ART" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P5 R1 T2.5:2.5:5:5 S1 ; physical drive 5 goes forwards (X) M569 P6 R1 T2.5:2.5:5:5 S1 ; physical drive 6 goes forwards (Y) M569 P7 R1 T2.5:2.5:2.5:2.5 S1 ; physical drive 8 goes forwards (Z) M569 P3 S0 ; physical drive 3 goes forwards M584 X5 Y6 Z7 E3 ; set drive mapping ;M569 P0 S1 ; physical drive 0 goes forwards ;M569 P1 S1 ; physical drive 1 goes forwards ;M569 P2 S1 ; physical drive 2 goes forwards ;M584 X0 Y1 Z2 E3 ; set drive mapping M350 X256 Y256 Z16 E16 I1 ; configure microstepping with interpolation M92 X14.00 Y14.00 Z357.00 E420.00 ; set steps per mm M566 X8000.00 Y8000.00 Z60.00 E1000.00 ; set maximum instantaneous speed changes (mm/min) M203 X8000.00 Y8000.00 Z500.00 E1000.00 ; set maximum speeds (mm/min) M201 X2000.00 Y2000.00 Z500.00 E1000.00 ; set accelerations (mm/s^2) M906 X1800 Y1800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X900 Y900 Z1000 S0 ; set axis maxima ; Endstops M574 X1 Y1 Z1 S1 ; set active high endstops ; Z-Probe M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed M557 X15:215 Y15:195 S20 ; define mesh grid ; Heaters M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M305 P0 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M305 P1 T100000 B4138 R4700 ; set thermistor + ADC parameters for heater 1 M143 H1 S280 ; set temperature limit for heater 1 to 280C ; Fans M106 P0 S0 I0 F500 H-1 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off M106 P1 S1 I0 F500 H1 T45 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on ; Tools M563 P0 D0 H1 F0 ; define tool 0 G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C ; Custom settings are not defined
-
RE: Five bar Parallel SCARA print area problem
@joergs5 said in Five bar Parallel SCARA print area problem:
The imperfection is IMHO due to reasons like swinging arms, hinge backlash (play which has negative results if you change direction) and similar reasons.
Yes, I will include the bearing on the hinges. The friction will be on the bearing.
The somewhat wobbly line will be due to the resistance of the pen on the surface, a kind of slip stick effect. A felt-tip pen on foil will probably work better, or using fine grained paper.
I want to place hotend. I want to fix it with 3D prints.
0,0 is not accessible due to singularity (distal arms are in opposite, straight line), this is not solvable. You can change offset by setting the X and Y coordinates of the actuators to other values (eg instead of X -95,95 set to 5,195), but this doesn't help, the singularity remains (is then at X100,Y0). Singularity are unprintable areas.
So how are we going to escape this singularity? How do we create a square or circle printing area?
one hint I wanted to add: when you approach singularity areas, you will often experience that the stepper has more work to do. This may lead to lost steps, you may hear the sound of it. Result is, the firmware and actual position of the steppers doesn't fit any more. You must run homing again to set the positions right then. Lost steps often result in layer shifts, but in case of Scara the algorithm will be at the wrong place and the result wrong additionally.
Is it logical to use the closed loop stepper? I took my printer to the office. I will review the codes you are writing. I will try to add things.
-
RE: Five bar Parallel SCARA print area problem
@joergs5 Nice development. X and Y axis No access to points 0. How do I do offset?
-
RE: Five bar Parallel SCARA print area problem
@joergs5 I have changed the way you say. I have achieved the square shape after changing the direction of the arms. I guess codes don't have hard trouble. It remains to arrange the print area.
-
RE: Five bar Parallel SCARA print area problem
@joergs5 I plotted the square about right. How to Calibration from this process step? There are spaces in the part of the pen. I will fix them and do drawing again.
square.gcode
G90 G1 X0 Y150 G1 X0 Y200 G1 X50 Y200 G1 X50 Y150 G1 X0 Y150
-
RE: Five bar Parallel SCARA print area problem
config.g
M669 K9 L1 X-95:93 Y0:0 P126:133 D210:213:0:0 B51:90 A15:165:0:360:0:360 C-80:260:-80:260
debug
G28 MotorStepsToCartesian => thetaL:220.74=MotorPosX:204064.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:220.74=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-190.46,yL:-82.23,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -190.46 firstY: -82.23 secondX: 93.00 secondY: 133.00 getTurn => turn:-40677.33 = (x2:-119.27 - x1:-190.46) * (y3:133.00 - y1:-82.23) - (y2:115.33 - y1:-82.23) * (x3:93.00 - x1:-190.46) getTurn => turn:40677.32 = (x2:18.96 - x1:-190.46) * (y3:133.00 - y1:-82.23) - (y2:-66.72 - y1:-82.23) * (x3:93.00 - x1:-190.46) getTurn => turn:-13005.09 = (x2:-190.46 - x1:-95.00) * (y3:115.33 - y1:0.00) - (y2:-82.23 - y1:0.00) * (x3:-119.27 - x1:-95.00) getTurn => turn:28231.32 = (x2:93.00 - x1:93.00) * (y3:115.33 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-119.27 - x1:93.00) getForwad => workmode:1 turnLeft:-13005.09 turnRight:28231.32 MotorStepsToCartesian => MachinePosX:nan MachinePosY:nan XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 93.00 secondY: 133.00 getTurn => turn:-23253.28 = (x2:-29.16 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:307.49 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:23253.28 = (x2:95.88 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:-79.98 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getForwad => workmode:1 turnLeft:17934.62 turnRight:16246.89 MotorStepsToCartesian => MachinePosX:-29.16 MachinePosY:307.49 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 93.00 secondY: 133.00 getTurn => turn:-23253.28 = (x2:-29.16 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:307.49 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:23253.28 = (x2:95.88 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:-79.98 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getForwad => workmode:1 turnLeft:17934.62 turnRight:16246.89 MotorStepsToCartesian => MachinePosX:-29.16 MachinePosY:307.49 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:49.00=MotorPosX:45298.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:49.00=MotorPosY:81351.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-12.34,yL:95.09,xR:97.64,yR:132.92) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -12.34 firstY: 95.09 secondX: 97.64 secondY: 132.92 getTurn => turn:-23641.96 = (x2:-28.62 - x1:-12.34) * (y3:132.92 - y1:95.09) - (y2:304.46 - y1:95.09) * (x3:97.64 - x1:-12.34) getTurn => turn:23641.95 = (x2:103.61 - x1:-12.34) * (y3:132.92 - y1:95.09) - (y2:-80.00 - y1:95.09) * (x3:97.64 - x1:-12.34) getTurn => turn:18855.43 = (x2:-12.34 - x1:-95.00) * (y3:304.46 - y1:0.00) - (y2:95.09 - y1:0.00) * (x3:-28.62 - x1:-95.00) getTurn => turn:17578.94 = (x2:97.64 - x1:93.00) * (y3:304.46 - y1:0.00) - (y2:132.92 - y1:0.00) * (x3:-28.62 - x1:93.00) getForwad => workmode:1 turnLeft:18855.43 turnRight:17578.94 MotorStepsToCartesian => MachinePosX:-28.62 MachinePosY:304.46 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:81351.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:97.64,yR:132.92) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 97.64 secondY: 132.92 getTurn => turn:-24075.32 = (x2:-24.02 - x1:-15.71) * (y3:132.92 - y1:97.92) - (y2:307.76 - y1:97.92) * (x3:97.64 - x1:-15.71) getTurn => turn:24075.33 = (x2:95.73 - x1:-15.71) * (y3:132.92 - y1:97.92) - (y2:-80.07 - y1:97.92) * (x3:97.64 - x1:-15.71) getTurn => turn:17452.44 = (x2:-15.71 - x1:-95.00) * (y3:307.76 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-24.02 - x1:-95.00) getTurn => turn:16982.36 = (x2:97.64 - x1:93.00) * (y3:307.76 - y1:0.00) - (y2:132.92 - y1:0.00) * (x3:-24.02 - x1:93.00) getForwad => workmode:1 turnLeft:17452.44 turnRight:16982.36 MotorStepsToCartesian => MachinePosX:-24.02 MachinePosY:307.76 XYZ_AXES:3 numVisibleAxes:3 MotorStepsToCartesian => thetaL:51.00=MotorPosX:47147.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:51.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-15.71,yL:97.92,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -15.71 firstY: 97.92 secondX: 93.00 secondY: 133.00 getTurn => turn:-23253.28 = (x2:-29.16 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:307.49 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:23253.28 = (x2:95.88 - x1:-15.71) * (y3:133.00 - y1:97.92) - (y2:-79.98 - y1:97.92) * (x3:93.00 - x1:-15.71) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getForwad => workmode:1 turnLeft:17934.62 turnRight:16246.89 MotorStepsToCartesian => MachinePosX:-29.16 MachinePosY:307.49 XYZ_AXES:3 numVisibleAxes:3 constraintsOK => cachedInvalid:0 cachedX0:0.00 cachedY0:0.00 getInverse => not cantilevered proximalL:126.00 distalL:210.00 xOrigL:-95.00 yOrigL:0.00 x_0:-29.16 y_0:307.49 getIntersec firstRadius: 126.00 secondRadius: 210.00 firstX: -95.00 firstY: 0.00 secondX: -29.16 secondY: 307.49 getTurn => turn:-17934.62 = (x2:-127.24 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:121.80 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTurn => turn:17934.62 = (x2:-15.71 - x1:-95.00) * (y3:307.49 - y1:0.00) - (y2:97.92 - y1:0.00) * (x3:-29.16 - x1:-95.00) getTheta => workmode: 1 thetaA:104.83 thetaB:51.00 proxturnA:-17934.62 proxturnB:-17934.62 getTheta => use: 2 x2: -15.71 y2: 97.92 thetaB: 51.00 x1: -127.24 y1: 121.80 thetaA: 104.83 getInverse => not cantilevered proximalR:133.00 distalR:213.00 xOrigR:93.00 yOrigR:0.00 x_0:-29.16 y_0:307.49 getIntersec firstRadius: 133.00 secondRadius: 213.00 firstX: 93.00 firstY: 0.00 secondX: -29.16 secondY: 307.49 getTurn => turn:-16246.89 = (x2:1.73 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:96.74 - y1:0.00) * (x3:-29.16 - x1:93.00) getTurn => turn:16246.89 = (x2:93.00 - x1:93.00) * (y3:307.49 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-29.16 - x1:93.00) getTheta => workmode: 1 thetaA:133.33 thetaB:90.00 proxturnA:-16246.89 proxturnB:-16246.89 getTheta => use: 2 x2: 93.00 y2: 133.00 thetaB: 90.00 x1: 1.73 y1: 96.74 thetaA: 133.33 getInverse => value thetaL:51.00 getInverse => value thetaR:90.00 getInverse => cachedInvalid 0 cachedX0:-29.16 cachedY0:307.49 cachedX1:-29.16 cachedY1:307.49 getInverse => cachedXL:-15.71 cachedYL:97.92 cachedXR:93.00 cachedYR:133.00 cachedThetaR:90.00 cachedXR:93.00 getInverse => cachedYR:133.00 cachedThetaL:51.00 cachedXL:-15.71 cachedYL:97.92 getInverse => cachedInvalid:0 x_0:-29.16 y_0:307.49 xL:-15.71 yL:97.92 thetaL:51.00 xR:93.00 yR:133.00 thetaR:90.00 x1:-29.16 y1:307.49 constraintsOK => cachedInvalid:0 actuatorAngleLMin:-80.00<0 && thetaL:51.00>actuatorAngleLMax:260.00 constraintsOK => cachedInvalid:0 thetaL:51.00 < actuatorAngleLMin:-80.00 || thetaL:51.00 > actuatorAngleLMax:260.00 return false constraintsOK => cachedInvalid:0 actuatorAngleRMin:-80.00<0 && thetaR:90.00>actuatorAngleRMax:260.00 constraintsOK => cachedInvalid:0 thetaR:90.00 < actuatorAngleRMin:-80.00 || thetaR:90.00 > actuatorAngleRMax:260.00 return false getAngle => x1:-15.71 y1:97.92 x2:-29.16 y2:307.49 x3:93.00 y3:133.00 getAngle => angle:31.32 = angle2:305.00 - angle1:273.67 constraintsOK => achedInvalid:0 headAngle:31.32 < headAngleMin:15.00 || headAngle:31.32 > headAngleMax:165.00 isnan(headAngle):0 return false getAngle => x1:-95.00 y1:0.00 x2:-15.71 y2:97.92 x3:-29.16 y3:307.49 getAngle => angle:222.67 = 360 + angle2:93.67 - angle1:231.00 constraintsOK => cachedInvalid:0 angleProxDistL:222.67 < proxDistLAngleMin:0.00 || angleProxDistL:222.67 > proxDistLAngleMax:360.00 isnan(angleProxDistL):0 return false getAngle => x1:93.00 y1:0.00 x2:93.00 y2:133.00 x3:-29.16 y3:307.49 getAngle => angle:215.00 = 360 + angle2:125.00 - angle1:270.00 constraintsOK => cachedInvalid:0 angleProxDistR:215.00 < proxDistRAngleMin:0.00 || angleProxDistR:215.00 > proxDistRAngleMax:360.00 isnan(angleProxDistR):0 return false constraintsOK => cachedInvalid:0 cachedX0:-29.16 cachedY0:307.49 CartesianToMotorSteps => motorPosX = cachedThetaL:51.00 * stespPermm[X_AXIS]924.44 motorPosY = cachedThetaR:90.00 * stepsPermm[Y_AXIS]924.44 CartesianToMotorSteps => machinePos[0]:-29.16 machinePos[1]:307.49 motorPosX:0.00 motorPosY:924.44 CartesianToMotorSteps => XYZ_AXES:3 numVisibleAxes:3 constraintsOK => cachedInvalid:0 cachedX0:-29.16 cachedY0:307.49 CartesianToMotorSteps => motorPosX = cachedThetaL:51.00 * stespPermm[X_AXIS]924.44 motorPosY = cachedThetaR:90.00 * stepsPermm[Y_AXIS]924.44 CartesianToMotorSteps => machinePos[0]:-29.16 machinePos[1]:307.49 motorPosX:0.00 motorPosY:924.44 CartesianToMotorSteps => XYZ_AXES:3 numVisibleAxes:3ok WiFi module is connected to access point Utku, IP address 192.168.1.12 M114 X:-29.157 Y:307.490 Z:0.000 E:0.000 E0:0.0 Count 47147 83200 0 Machine -29.157 307.490 0.000 Bed comp 0.000 ok G90 G1 H2 Y90 F200 ok G90 G1 H2 X90 F200 MotorStepsToCartesian => thetaL:90.00=MotorPosX:83200.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:90.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-95.00,yL:126.00,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -95.00 firstY: 126.00 secondX: 93.00 secondY: 133.00 getTurn => turn:-35633.12 = (x2:-11.42 - x1:-95.00) * (y3:133.00 - y1:126.00) - (y2:318.65 - y1:126.00) * (x3:93.00 - x1:-95.00) getTurn => turn:35633.12 = (x2:2.68 - x1:-95.00) * (y3:133.00 - y1:126.00) - (y2:-59.90 - y1:126.00) * (x3:93.00 - x1:-95.00) getTurn => turn:-10531.36 = (x2:-95.00 - x1:-95.00) * (y3:318.65 - y1:0.00) - (y2:126.00 - y1:0.00) * (x3:-11.42 - x1:-95.00) getTurn => turn:13887.57 = (x2:93.00 - x1:93.00) * (y3:318.65 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-11.42 - x1:93.00) getForwad => workmode:1 turnLeft:-10531.36 turnRight:13887.57 MotorStepsToCartesian => MachinePosX:nan MachinePosY:nan XYZ_AXES:3 numVisibleAxes:3ok MotorStepsToCartesian => thetaL:90.00=MotorPosX:83200.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:90.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-95.00,yL:126.00,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -95.00 firstY: 126.00 secondX: 93.00 secondY: 133.00 getTurn => turn:-35633.12 = (x2:-11.42 - x1:-95.00) * (y3:133.00 - y1:126.00) - (y2:318.65 - y1:126.00) * (x3:93.00 - x1:-95.00) getTurn => turn:35633.12 = (x2:2.68 - x1:-95.00) * (y3:133.00 - y1:126.00) - (y2:-59.90 - y1:126.00) * (x3:93.00 - x1:-95.00) getTurn => turn:-10531.36 = (x2:-95.00 - x1:-95.00) * (y3:318.65 - y1:0.00) - (y2:126.00 - y1:0.00) * (x3:-11.42 - x1:-95.00) getTurn => turn:13887.57 = (x2:93.00 - x1:93.00) * (y3:318.65 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-11.42 - x1:93.00) getForwad => workmode:1 turnLeft:-10531.36 turnRight:13887.57 MotorStepsToCartesian => MachinePosX:nan MachinePosY:nan XYZ_AXES:3 numVisibleAxes:3
Unfortunately something has not changed. Still in an unknown area.
-
RE: Five bar Parallel SCARA print area problem
@joergs5 said in Five bar Parallel SCARA print area problem:
@rutku I thought about merging work modes. This is difficult, because while changing the mode, the position of the hotend changes and during the change and rotations, time is lost. So it must be while not printing and should probably be placed in the slicer, not the firmware. If the firmware decides, it will break the print process at places one doesn't wish.
It doesn't matter. I will think of something in the future. My priority is the work of the 3d printer. After working, I will understand better the codes you wrote.
@joergs5 said in Five bar Parallel SCARA print area problem:
I concentrate on code verification, i.e. whether the code is correct for work mode 1 for your test scenario (later for the other modes too), and improve the existing code like I describe in the other thread.
Yes, I'm looking forward to the result. My 11 month old baby started breaking my 3d printer. I can only debug on my small laptop. My eyes are dying. Tomorrow I will take my 3d printer to my office. I'm going to review your actions on the big monitor in my office. My eyes will be relieved. Have a nice day...
-
RE: Five bar Parallel SCARA print area problem
@joergs5 I'm following the topic. I'll be happy to test new updates. Thanks, I'll continue with the other thread.
-
RE: Five bar Parallel SCARA print area problem
@joergs5 An excellent idea. I was thinking about this idea. I didn't mean to do that without running the system. Also are not required offset for X and Y axes?
-
RE: Five bar Parallel SCARA print area problem
@joergs5 said in Five bar Parallel SCARA print area problem:
Please give me your config.g content and the current homing file. Please tell me which firmware version you use. I'll setup a printer like yours. Give me a few days please until thursday.
Ok I'm waiting for you. Thank you so much.
m115 FIRMWARE_NAME: RepRapFirmware for STM32F4 based Boards FIRMWARE_VERSION: 3.2.2_2 ELECTRONICS: STM32F4 FIRMWARE_DATE: 2021-05-02 ok
config.g
; General preferences G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves M552 S1 ; Turn network on M586 P0 S1 ; Enable HTTP M586 P1 S0 ; Enable FTP M586 P2 S0 ; Enable Telnet ; Drives M569 P0 S0 ; Drive 0 (X) goes forwards M569 P1 S0 ; Drive 1 (Y) goes forwards ;M569 P2 S1 ; Drive 2 (Z) goes forwards ;M569 P3 S1 ; Drive 3 (E0) goes forwards M584 X0 Y1 ; set drive mapping M350 X128 Y128 I1 ;S3 ; Configure microstepping with interpolation M669 K9 L1 X-95:93 Y0:0 P126:133 D210:213:0:0 B51:90 A15:165:0:360:0:360 C-90:270:-90:270 M92 X924.444444 Y924.444444 ; Set steps per mm M203 X10000 Y10000 ; maximum speeds mm/minute M566 X15 Y15 ; Set maximum instantaneous speed changes (mm/min) M201 X40 Y40 ; Set accelerations (mm/s^2) M906 X1200 Y1200 ; Set motor currents (mA) and motor idle factor in per cent M84 S0 ; Set idle timeout ; Axis Limits M208 X-1000:1000 Y-1000:1000 ; set axis minima and maxima ; Endstops M574 X1 S1 P"xstop" ; X min active high endstop switch M574 Y2 S1 P"ystop" ; Y min active high endstop switch ;M574 Z0 S1 P"zstop" ; Z min active high endstop switch
home5barscara.g
G91 ; relative positioning G1 H1 X100 Y300 F400 ; move quickly to endstop and stop there (first pass) G1 H1 X300 F400 G1 H1 Y300 F400 G1 H2 X-2 Y-2 F400 ; go back a few degrees G1 H1 X100 F90 ; move slowly to endstop once more (second pass) G1 H1 Y100 F90 ; move slowly to endstop once more (second pass) ;G1 H2 X-5 Y-5 F400 ; go back a few degrees G92 Z0 G90 ; absolute positioning ;G0 X0 Y90 ; move to a reasonable position
-
RE: Five bar Parallel SCARA print area problem
@joergs5 said in Five bar Parallel SCARA print area problem:
Step 3 (check for curved line)
homing✓
run G90 G1 H2 X90 F200 and G90 G1 H2 Y90 F200 and verify that both arms are 90 degree and the hotend is on the X0 line✓
run G90 G1 X0 Y100 F200 and verify that arm 1 rotated counterclockwise by about 10 degree and arm 2 rotated clockwise by about 10 degreeThis command is very strange sounds. I repeat the same action four times. The same sound continued to go out.
Strange Sounds
debug
G90 G1 X0 Y100 F200 constraintsOK => cachedInvalid:0 cachedX0:-29.16 cachedY0:307.49 getInverse => not cantilevered proximalL:126.00 distalL:210.00 xOrigL:-95.00 yOrigL:0.00 x_0:0.00 y_0:100.00 getIntersec firstRadius: 126.00 secondRadius: 210.00 firstX: -95.00 firstY: 0.00 secondX: 0.00 secondY: 100.00 getTurn => turn:-16759.64 = (x2:-206.06 - x1:-95.00) * (y3:100.00 - y1:0.00) - (y2:59.51 - y1:0.00) * (x3:0.00 - x1:-95.00) getTurn => turn:16759.64 = (x2:-29.87 - x1:-95.00) * (y3:100.00 - y1:0.00) - (y2:-107.86 - y1:0.00) * (x3:0.00 - x1:-95.00) getTheta => workmode: 1 thetaA:151.82 thetaB:301.12 proxturnA:-16759.64 proxturnB:-16759.64 getTheta => use: 2 x2: -29.87 y2: -107.86 thetaB: 301.12 x1: -206.06 y1: 59.51 thetaA: 151.82 getInverse => not cantilevered proximalR:133.00 distalR:213.00 xOrigR:93.00 yOrigR:0.00 x_0:0.00 y_0:100.00 getIntersec firstRadius: 133.00 secondRadius: 213.00 firstX: 93.00 firstY: 0.00 secondX: 0.00 secondY: 100.00 getTurn => turn:-17592.40 = (x2:21.18 - x1:93.00) * (y3:100.00 - y1:0.00) - (y2:-111.94 - y1:0.00) * (x3:0.00 - x1:93.00) getTurn => turn:17592.40 = (x2:209.85 - x1:93.00) * (y3:100.00 - y1:0.00) - (y2:63.52 - y1:0.00) * (x3:0.00 - x1:93.00) getTheta => workmode: 1 thetaA:237.32 thetaB:28.53 proxturnA:-17592.40 proxturnB:-17592.40 getTheta => use: 2 x2: 209.85 y2: 63.52 thetaB: 28.53 x1: 21.18 y1: -111.94 thetaA: 237.32 getInverse => cachedInvalid 0 cachedX0:0.00 cachedY0:100.00 cachedX1:0.00 cachedY1:100.00 getInverse => cachedXL:-29.87 cachedYL:-107.86 cachedXR:209.85 cachedYR:63.52 cachedThetaR:28.53 cachedXR:209.85 getInverse => cachedYR:63.52 cachedThetaL:301.12 cachedXL:-29.87 cachedYL:-107.86 getInverse => cachedInvalid:0 x_0:0.00 y_0:100.00 xL:-29.87 yL:-107.86 thetaL:301.12 xR:209.85 yR:63.52 thetaR:28.53 x1:0.00 y1:100.00 constraintsOK => cachedInvalid:0 actuatorAngleLMin:-90.00<0 && thetaL:301.12>actuatorAngleLMax:270.00 constraintsOK => thetaL(-58.88) -=360 constraintsOK => cachedInvalid:0 thetaL:-58.88 < actuatorAngleLMin:-90.00 || thetaL:-58.88 > actuatorAngleLMax:270.00 return false constraintsOK => cachedInvalid:0 actuatorAngleRMin:-90.00<0 && thetaR:28.53>actuatorAngleRMax:270.00 constraintsOK => cachedInvalid:0 thetaR:28.53 < actuatorAngleRMin:-90.00 || thetaR:28.53 > actuatorAngleRMax:270.00 return false getAngle => x1:-29.87 y1:-107.86 x2:0.00 y2:100.00 x3:209.85 y3:63.52 getAngle => angle:88.32 = angle2:350.14 - angle1:261.82 constraintsOK => achedInvalid:0 headAngle:88.32 < headAngleMin:15.00 || headAngle:88.32 > headAngleMax:165.00 isnan(headAngle):0 return false getAngle => x1:-95.00 y1:0.00 x2:-29.87 y2:-107.86 x3:0.00 y3:100.00 getAngle => angle:320.70 = 360 + angle2:81.82 - angle1:121.12 constraintsOK => cachedInvalid:0 angleProxDistL:320.70 < proxDistLAngleMin:0.00 || angleProxDistL:320.70 > proxDistLAngleMax:360.00 isnan(angleProxDistL):0 return false getAngle => x1:93.00 y1:0.00 x2:209.85 y2:63.52 x3:0.00 y3:100.00 getAngle => angle:321.61 = 360 + angle2:170.14 - angle1:208.53 constraintsOK => cachedInvalid:0 angleProxDistR:321.61 < proxDistRAngleMin:0.00 || angleProxDistR:321.61 > proxDistRAngleMax:360.00 isnan(angleProxDistR):0 return false constraintsOK => cachedInvalid:0 cachedX0:0.00 cachedY0:100.00 CartesianToMotorSteps => motorPosX = cachedThetaL:301.12 * stespPermm[X_AXIS]924.44 motorPosY = cachedThetaR:28.53 * stepsPermm[Y_AXIS]924.44 CartesianToMotorSteps => machinePos[0]:0.00 machinePos[1]:100.00 motorPosX:0.00 motorPosY:924.44 CartesianToMotorSteps => XYZ_AXES:3 numVisibleAxes:3ok
-
RE: Five bar Parallel SCARA print area problem
@joergs5 said in Five bar Parallel SCARA print area problem:
which means the arms 1 and 2 cannot have an angle greater than 90 degree. The Step 3 and 4 tests will not work, because they need bigger angles. Please set the C parameter to C-90:180:-90:180. Even your Step 2 test is at the boundary of the 90 degree limit, maybe this is the reason for the M114 9999.9 values.
I did what you said. but gave the same mistake. I wrote 270 degrees, gave the same mistake.
config.g
M669 K9 L1 X-95:93 Y0:0 P126:133 D210:213:0:0 B51:90 A15:165:0:360:0:360 C-90:270:-90:270 M208 X-1000:1000 Y-1000:1000 ; set axis minima and maxima
m114
M114 X:9999.900 Y:9999.900 Z:0.000 E:0.000 E0:0.0 Count 101689 64711 0 Machine 9999.900 9999.900 0.000 Bed comp 0.000 ok
I'm going on by skipping the M114 command.
-
RE: Five bar Parallel SCARA print area problem
@joergs5 said in Five bar Parallel SCARA print area problem:
You're still using 128 microsteps, so please add F200 to all the following G1 commands, so the processor has more time to calculate values and to generate the steps. Hiccups (= lost steps) will probably not being reported by your hardware.
Step1: (check direction and M92)
- run homing, arm 1 shall be 53 degree, arm 2 90 degree arm 1 = new 51 degree
- run G90 G1 H2 X90 F200 and verify that arm 1 is 90 degree now and rotated counterclockwise ✓
- run G90 G1 H2 Y70 F200 and verify that arm 2 is 70 degree now and rotated clockwise ✓
If one or both arms rotated wrong, change S0 to S1 or S1 to S0 for the corresponding stepper (P0, P1) and redo the test until the arms rotate as expected. If the resulting degree is wrong, search the reason. One possible reason is if the belts have too low tension. Another one is too much play in the hinges.
Step 2: (check X0 symmetry)
- homing ✓
- run G90 G1 H2 X90 F200 and G90 G1 H2 Y90 F200 and verify that both arms are 90 degree and the hotend is on the X0 line ✓
- run M114 and note X and Y positions. X should be near 0, Y somewhere at 140
m114
M114 X:9999.900 Y:9999.900 Z:0.000 E:0.000 E0:0.0 Count 83200 83200 0 Machine 9999.900 9999.900 0.000 Bed comp 0.000 ok
The M114 command does not give X and Y positions for some reason. Your help is thanks.
-
RE: Five bar Parallel SCARA print area problem
@joergs5 Hi, yes the problem is solved. Completed the movement as you say. But when I want to draw a square, the machine works on the back section.
@joergs5 said in Five bar Parallel SCARA print area problem:
M569 P0 S1 ; Drive 0 (X) goes forwards
sqaure.gcode
G90 G1 X0 Y90 G1 X0 Y140 G1 X50 Y140 G1 X50 Y90 G1 X0 Y90
SQUARE VIDEO
@joergs5 said in Five bar Parallel SCARA print area problem:
on the image the arm rotated to position 141, but it should be 143, so you can make the M92 value a bit higher. But I don't know the reason, can be some error in arm length or hinge play.
There is some curvature in angle gauge. showing two degrees missing.
-
RE: Five bar Parallel SCARA print area problem
@joergs5 Hi, I have done the steps you say. But I have received different results.
m122
m122 === Diagnostics === RepRapFirmware for STM32F4 based Boards version 3.2.2_2 running on STM32F4 Used output buffers: 1 of 40 (11 max) === RTOS === Static ram: 32296 Dynamic ram: 60988 of which 380 recycled Never used RAM 18200, free system stack 214 words Tasks: NETWORK(ready,144) HEAT(blocked,369) MAIN(running,572) IDLE(ready,19) Owned mutexes: WiFi(NETWORK) USB(MAIN) === Platform === Last reset 00:11:55 ago, cause: [power on/off] Last software reset at 2021-05-19 00:16, reason: User, GCodes spinning, available RAM 18200, slot 2 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00454000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 0,134218187,134218187 MCU temperature: min 31.6, current 42.0, max 42.5 Driver 0: position 48996, standstill, SG min/max 0/32, error r/w 0/0, ifcnt 16, cnt r/w 61932/16, timeout 0, failedOp 0xff Driver 1: position 83200, standstill, SG min/max 0/40, error r/w 0/0, ifcnt 17, cnt r/w 61931/17, timeout 0, failedOp 0xff Driver 2: position 0, standstill, SG min/max 0/0, error r/w 0/0, ifcnt 9, cnt r/w 61938/9, timeout 0, failedOp 0xff Driver 3: position 0, standstill, SG min/max 0/0, error r/w 0/0, ifcnt 9, cnt r/w 61938/9, timeout 0, failedOp 0xff Driver 4: position 0 Driver 5: position 0 Driver 6: position 0 Driver 7: position 0 Driver 8: position 0 Driver 9: position 0 Driver 10: position 0 Date/time: 2021-05-29 13:37:04 Slowest loop: 17.76ms; fastest: 0.07ms === Storage === Free file entries: 10 SD card 0 detected SD card longest read time 2.8ms, write time 0.0ms, max retries 0 === Move === DMs created 83, maxWait 328438ms, bed compensation in use: none, comp offset 0.000 === DDARing === Scheduled moves 6, completed moves 6, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = -1, chamberHeaters = -1 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 File is idle in state(s) 0 USB is ready with "m122" in state(s) 0 Aux is idle in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 7.11ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.25-01S-D WiFi MAC address 50:78:b3:f3:41:84 WiFi Vcc 3.38, reset reason Turned on by main processor WiFi flash size 4194304, free heap 36832 WiFi IP address 192.168.1.20 WiFi signal strength -73dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00004002 Socket states: 0 0 0 0 0 0 0 0 ok
config.g
M350 X128 Y128 I1 ;S3 ; Configure microstepping with interpolation M669 K9 L1 X-95:93 Y0:0 P126:133 D210:213:0:0 B53:90 A15:165:0:360:0:360 C-90:90:-90:90 M92 X924.444444 Y924.444444 ; Set steps per mm
m114
m114 X:-24.654 Y:310.557 Z:0.000 E:0.000 E0:0.0 Count 48996 83200 0 Machine -24.654 310.557 0.000 Bed comp 0.000 ok
924.444444 * 53 = 48.995,55532 OK....!
G91 G1 H2 X90
G91 G1 H2 X90 MotorStepsToCartesian => thetaL:143.00=MotorPosX:132196.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:143.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-195.63,yL:75.83,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -195.63 firstY: 75.83 secondX: 93.00 secondY: 133.00 getTurn => turn:-44706.59 = (x2:-82.95 - x1:-195.63) * (y3:133.00 - y1:75.83) - (y2:253.04 - y1:75.83) * (x3:93.00 - x1:-195.63) getTurn => turn:44706.59 = (x2:-23.91 - x1:-195.63) * (y3:133.00 - y1:75.83) - (y2:-45.05 - y1:75.83) * (x3:93.00 - x1:-195.63) getTurn => turn:-26376.60 = (x2:-195.63 - x1:-95.00) * (y3:253.04 - y1:0.00) - (y2:75.83 - y1:0.00) * (x3:-82.95 - x1:-95.00) getTurn => turn:23401.72 = (x2:93.00 - x1:93.00) * (y3:253.04 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-82.95 - x1:93.00) getForwad => workmode:1 turnLeft:-26376.60 turnRight:23401.72 MotorStepsToCartesian => MachinePosX:nan MachinePosY:nan XYZ_AXES:3 numVisibleAxes:3ok MotorStepsToCartesian => thetaL:143.00=MotorPosX:132196.00/StepsPermmX:924.44 MotorStepsToCartesian => thetaR:143.00=MotorPosY:83200.00/StepsPermmY:924.44 getForwad => getIntersec(distalL:210.00,distalR:213.00,xL:-195.63,yL:75.83,xR:93.00,yR:133.00) getIntersec firstRadius: 210.00 secondRadius: 213.00 firstX: -195.63 firstY: 75.83 secondX: 93.00 secondY: 133.00 getTurn => turn:-44706.59 = (x2:-82.95 - x1:-195.63) * (y3:133.00 - y1:75.83) - (y2:253.04 - y1:75.83) * (x3:93.00 - x1:-195.63) getTurn => turn:44706.59 = (x2:-23.91 - x1:-195.63) * (y3:133.00 - y1:75.83) - (y2:-45.05 - y1:75.83) * (x3:93.00 - x1:-195.63) getTurn => turn:-26376.60 = (x2:-195.63 - x1:-95.00) * (y3:253.04 - y1:0.00) - (y2:75.83 - y1:0.00) * (x3:-82.95 - x1:-95.00) getTurn => turn:23401.72 = (x2:93.00 - x1:93.00) * (y3:253.04 - y1:0.00) - (y2:133.00 - y1:0.00) * (x3:-82.95 - x1:93.00) getForwad => workmode:1 turnLeft:-26376.60 turnRight:23401.72 MotorStepsToCartesian => MachinePosX:nan MachinePosY:nan XYZ_AXES:3 numVisibleAxes:3
m114
m114 X:9999.900 Y:9999.900 Z:0.000 E:0.000 E0:0.0 Count 132196 83200 0 Machine 9999.900 9999.900 0.000 Bed comp 0.000 ok
132196 / 924.44444 = 143,0004814567331 degree .Why?
-
RE: Five bar Parallel SCARA print area problem
microsteps = 128
stepper Degree = 1.8
Teeth bigwheel = 260
Teeth smallwheel = 20M92 = (128/1.8) * (260/20) = 924.444444
square.gcode
G90 G1 X0 Y90 G1 X0 Y140 G1 X50 Y140 G1 X50 Y90 G1 X0 Y90
-
RE: Five bar Parallel SCARA print area problem
@joergs5 @o_lampe
Hi, I didn't get the calibration. I've been dealing with a week calibration but draws the same shapes. @bondus had not shared a detail about calibration. I didn't mean to bother @JoergS5 on that.I didn't understand the "Step Calibration" portion in the file where the bond is shared.