Core XY movement issues
This a follow up on this post:
https://forum.duet3d.com/topic/4958/y-axis-moves-when-only-x-is-commanded (16 Apr 2018, 14:30)
Most of the responses said that I had not gotten the belts right or the axis were miss aligned. So I assumed that I made a mistake.
I took the carriage apart and put it back together. I put the Y axis together using a fixed length bar to set them as parallel as I could. I measured the distance between the ends and came up with less than .001" using an inside mic. I marked the belts that I took off and was off by 2 teeth in the length. I marked both belts so I could have them to be the same. I marked the same groove of the belt on 3 sides as to make a centerline to mate with the adjusters at the print-head mount. I tightened the belts and measured from a fixed point on both rails of the Y axis to get the X orthogonal to the Y axis. I am pretty confident that the X axis is square to the Y axis.
To date here is what I have done and tried.
Followed the checks and passed on the configuring of a CoreXY system. The motors run in the correct direction as per the documentation.
Moved the X by using the PanelDue screen and using the DuetWeb both moving by using the X+100 and the gcode G1 X300 F3000. The Y moves in the Y+ by about 3mm. So that is the same as in the previous post.
I started searching (google and on the Duet3D forum) and came up with this post:
After reading this post I began to wonder if that might be the problem that I was having. I purchased the board Jan 21, 2018 from Filastruder. I started playing with the steps per MM and lo and behold, My problem seems to have gone away. The poster’s settings were M92 X320 Y298 Z1000 E420 ; Set steps per mm. Mine are M92 X320 Y319 z4100 . They are different from mine. But now the machine seems to operate like it should.
I know that the warrantee is only 6 months from the date of the purchase. But this seems to be a problem with the board, that on and off since April I have been trying to fix, thinking that it was something that I did wrong. I do not have another board that I can plug in to confirm this, so that is not an option. This is a problem that was noticed when I got the machine finally to the point of testing in late March. This is my first printer so it has been a learning curve. I did post in April about this. I am willing to send it to the factory or where ever for testing. What do you think?
On a corexy your x and y stepping should be the same unless you have different motor pulleys. They should be calculated not measured. And they depend on the microstepping and belt/pulley size
Why do you have M92 xy different?
Did you look at the first post I linked to? I changed the M92 values to see if it cured the issue of the y axis moving , when I moved the X axis. If did G90 X100, the Y axis would move about 3 mm during the time X was moving. In that first post everyone that replied said that the belts were off or my X was not at 90 degrees to the Y. I found the 2nd post that I linked to, with a gentleman that was having the same problem. I just did what he did to see to see if that was what was going on with my system. I bought the pulleys on ebay, a pack of 3 along with the belt, based on recommendations on various forums. I am not saying that it might not be a difference in a pulley, but I did look at them before I installed them and they looked good. I have thought about buying pulleys and changing them out to see if that is it. But based on the issues that the guy in the 2nd link had and DC42 recommended that they replace his board. I bought mine at the same time, so its possible that the board has issues. I am open to any suggestions. I would like to be able to use this, I have a lot of time and money in it.
There has to be something wrong. Whether it's a configuration issue, a wiring issue, or a hardware/drive fault I can't say but altering the steps per mm for X in relation to Y is merely papering over the cracks. However, in you first post the issue seemed to be much more severe than what you are seeing now. The difference between 320 and 319 isn't anything like enough to cure the problem that you first had. I'd look for bad crimp on a wire or some such.
I did not read the post it was tldr. You should not mess with the stepping on XYZ - They should all be calculated and leve it be. Never calibrated only for E you do this
Check your inverting settings and wiring and if those are right set M92 to the calculated steps/mm and do nothing else other than change direction of one motor at the time
@deckingman I completely agree with you on this. You replied to me on my first post about this issue, see the first link.
There is something wrong. I have gone over both X and Y axis. I re tension ed the belts to square the X to the Y. The Y rails are with in less than .001" according to the measurements I have taken. In frustration I took to searching for answers and found the problem in the 2nd link. DC42 replied after a lot of questions and such that maybe the board timing might be off. So that is why I tried changing the steps between the X and the Y. I started with the values that the poster had used in his config.g file. At one point my y axis stopped moving using the M92 configuration I posted. I know that is a patch and not the fix. Thats why I am posting trying to find out if Maybe I have an board issue as well. The poster and I bought our boards about the same time. I have the same motors , the same pulleys from the same manufacturer. I am going to pull the motors off and mic the pulleys and count the teeth..just to be sure. Maybe DC42 will chime in here.
JoergS5 last edited by
I would try exclude the first possibility that the steppers or controllers behave differently. In CoreXY there are commands to send A and B (the steppers itself) movements instead of X Y, then you can measure the belt movements and compare exactly (G92 set same).
Documentation to move the steppers is at
last part commissioning.
If they behave differently, there could be reasons like one motor not getting enough current or is defect, loose pulley etc.
I went through that and my results were
G91 G1 S2 X100 F3000 ; MOVES X+ AND Y+ ABOUT THE SAME DISTANCE at a 45 degree angle
G91 G1 S2 Y100 F3000 ; MOVES X+ AND Y- ABOUT THE SAME DISTANCE at a 45 degree angle.
According to the docs, that is what they are supposed to do. Now going to the bottom the page and the first command is
G91 ; relative mode (a cut and paste from the page)
G1 S2 X10 ; move the X motor forward 10mm.... Can you tell me the difference, besides the amount of move? One should assume that the X should move by itself (no Y movement) . I tried the command both with the feed parameter and the results were the same. MOVES X+ AND Y+ ABOUT THE SAME DISTANCE at a 45 degree angle. I am getting flustered here. If I am doing something wrong, I can't see it..
JoergS5 last edited by
@fxxtoo I meant it in another sense. Not the result of the X and Y movements, but the belt movement itself *), so e.g. the belt at the left and right edges. Because those movements are independent of your printer build (parallel or not etc.).
Please use this long belt lengths, as the difference is about 10% and you need a good measurement.
*) X and Y is the movement of the hotend in X and Y direction, A and B is the movement of the stepper (how many turns, the angle, belt move). The special commands are to check A and B. The blog is a bit unexact in this respect, should use A and B to differentiate.
A and B translates into X=A+B, Y=A-B, so a difference between the steppers is hard to analyze, if you only look to X and Y.
Did you reset the G92 to the default same lengths first?
I've just read through all your other posts and all those that you linked to. It does seem to me that it might be the same issue as the other guy, which seemed to be fixed by a replacement board. When you run the tests for each individual motor, it'll tell you that it's turning and in the right direction but not necessary at the right speed. On a CoreXY, for pure X movement both motors turn in the same direction and for pure Y, both motors turn but in opposite directions (or it might be the other way round). Therefore it follows that if one motor turns at a different speed to the other, then there will be some movement in Y when doing pure X, and/or some movement in X when doing pure Y, which is what you are seeing. It seems that you have eliminated any mechanical build inaccuracies. So the cause could be wiring (a bad crimp as one user found in one of those threads), or maybe a faulty board that is causing one motor to skip steps , or a faulty motor (have you tried swapping each A and B motor with say the Z motor?)
TBH, I don't know how you go about proving to your supplier that it's a faulty board rather than on of the other possible causes. Maybe DC or Tony will step in here. I guess you could email your supplier and point them to this thread. Maybe they'll let you have another board on a sale or return basis?
Thanks Ian, I really appreciate you taking the time to help me out. I have been playing with for over a month now. I will contact Filastruder about getting a replacement. again many thanks for helping. I was hoping that DC42 would chime in about this..
I think you are talking about measuring the length that each belt travels? I could do that. I have done motion control stuff before, mostly with ball screws and Nothing like a coreXY for sure. I am not sure what you mean with the G92, is that not for setting a position, like an offset?
My problem has been that all of the tests on the docs show that I have everything hooked up. When I give the command G90 X100, the Y position would change about 3 mm. I took everything apart and started over and checked and rechecked the Y and X to be to the best of my skillset, correct. It wasn't until changed (knowing that it was not correct) the M92 settings, did the head move as it should. I think there is an issue in the board, but I am going to post my config.g file as maybe someone can show me if I have goofed up. Thanks for your time in trying to help, I do appreciate it! and the food for thought on the belts.
Here is my config.g file (or most of what I have left...I started over)
; Configuration file for Duet WiFi
; (firmware version 1.20 or newer)
; executed by the firmware on start-up
; generated by RepRapFirmware Configuration Tool on MODDED 7.12.18
; General preferences
M111 S0 ;DEBUGGING OFF
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves
M555 P2 ; Set firmware compatibility to look like MARLIN
M667 S1 ; Select CoreXY mode
M550 PRJPRINT ; Set machine name
;M552 S1 ; Enable network
M552 S1 P192.168.1.99 ;SET IP ADDRESS
M553 P255.255.255.0 ;SET SUBNET MASK
M586 P0 S1 ; Enable HTTP
M586 P1 S0 ; Disable FTP
M586 P2 S0 ; Disable Telnet
; Axis Limits
M208 X325 Y415 Z0 S0 ; Set axis maxima
M208 X0 Y0 Z-600 S1 ; Set axis minima
; Drives M569: Set motor driver direction, enable polarity and step pulse timing Parameters
M569 P0 S1 ; Drive 0 goes FORWARDS Rnnn Driver enable polarity: 0 = active low, 1 = active high (default 0)
M569 P1 S1 ; Drive 1 goes forwards
M569 P2 S0 ; Drive 2 goes forwards
;M569 P3 S1 ; Drive 3 goes forwards
M350 X64 Y64 Z128 E16 I1 ; Configure microstepping with interpolation
;M92 X80 Y80 Z175 E420 ; Set steps per mm
;M92 Y320 Y320 Z1400 E420 ;mod to test 64 micro stepping
M92 X320 Y319 z1400 E420 ; to test to see if it corrects the speed of both motors
M566 X600 Y600 Z100 E120 ; Set maximum instantaneous speed changes (mm/min)
M203 X6000 Y6000 Z4000 E1200 ; Set maximum speeds (mm/min) CHANGED FROM 6000 TO 600 Z NO CHG
M201 X500 Y500 Z250 E250 ; Set accelerations (mm/s^2)
M906 X1500 Y1500 Z1500 E800 I40 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout
M574 Z1 S0 ; Set active low endstops
M574 X1 Y1 Z2 S0
;M574 X1 Y1 S3 ; Set endstops controlled by motor load detection
;M558 P0 H5 F120 T6000 ; Set Z probe type to switch and the dive height + speeds
;G31 P600 X0 Y0 Z2.5 ; Set Z probe trigger value, offset and trigger height
M557 X15:327.9 Y15:391 S20 ; Define mesh grid
M140 H1 ; Remap heated bed to heater 1
M301 H1 P-1 ; Set heater 1 to bang-bang mode
M305 P0 X200 ; Configure thermocouple for heater 0
M143 H0 S120 ; Set temperature limit for heater 0 to 120C
M305 P1 X201 ; Configure thermocouple for heater 1
M143 H1 S280 ; Set temperature limit for heater 1 to 280C
M106 P0 S1 I0 F500 H1 T45 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned on
M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
M563 P0 D0 H0 ; 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
; Automatic power saving
M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss
; Custom settings are not configured
You can not have M92 X different from Y... It will then move wrong Please set those the same and then do the tests
No I didn't try swapping the steppers . I bought the steppers new from a local supplier for another job. I stripped them off the previous application to use them on the printer. I have others. I will check out how to swap the motor to another driver.. maybe that will work thanks!
Thanks for the reply. I did have them set at being equal. After rebuilding it and making sure that I was parallel and the X was 90 degrees to the Y. I had exactly the same issue as before. If I did the test, it show the correct movement. When I did G90 x100, it would move about 3 mm as well. Which tells me that one motor is Not moving at the same speed as the other. It stopped when I changed the M92 . I am pretty confident that mechanically I am correct. That leaves an issue with the Duet card.
JoergS5 last edited by JoergS5
@fxxtoo First sorry, I meant M92, not G92. I meant resetting to same settings for both steppers.
The test I propose is to check the steppers and controllers themself, described in the commissioning part. Belt movement is measuring the stepper moves exactly. Looking at X and Y movements can have several reasons if they are not correct.
I had a new idea: your steppers are set to 1.5 A. Please check your steppers if they are types to have 2 A max current or more. If your steppers have less, this can lead to problems.
The steppers nema 23 and are 1.8 amps per phase. I am thinking of how to measure the belt movement. I am taking the motors off to measure the pulley, just in case. I am hoping it is something simple. Thanks!
JoergS5 last edited by JoergS5
@fxxtoo I thought about the pulleys slipping. This depends on the tension you have on the belts.
1.5 A seems to be ok for 1.8 steppers. There is some valuable information in
Nema23 has more torque than 17er, so you might not notice the slip.
You can file into the shaft, but I prefer nondestructive means like loctite 221.
I think you should up your accel a little. 500 is very low - I dont know if it will help but you could try 1000 as I see you have 10 in jerk
Thanks! I have been trying to figure this belt, timing or driver issue out and haven't got into the finer tweaks yet. I will try that.
IMO, higher acceleration is likely to make things worse. Start slow, get everything working, then increase speed and acceleration in small steps.
Try this. Do a longish move in X, say 100 mm and measure the Y distance and direction. Then swap the A and B motors (the ones that do X and Y). Repeat the X move. If the movement in Y changes direction, then it's an issue with the motor. At least that will eliminate one variable.
FxxToo last edited by FxxToo
Excellent I will try that. I was just starting to pull the Duet board out. Wiil try that right after lunch. and Post the results.
Do you mean remap the motors or physically swap the motors?
@fxxtoo I would think to physically swap them.