Firmware 2.03beta2 available
-
I checked that again. I have a beefy wire there, but I can go up a gauge. I also noticed that the ground wire has things running next to it, so I'm suspecting some interference. So my current plan is to move to a different case with the boards side by side instead one on top of the other and a much beefier ground wire. Since pure reboot doesn't solve it, I'm leaning towards some electrical noise built up which clears up on power down.
-
We recently had a report from one of one OEMs that the cables from normally-open endstop switches connected to the endstop inputs on the DueX5 appeared to be picking up interference from extruder cables or elsewhere, and this was triggering I2C errors. So my current advice to users experiencing I2C errors is:
- Make sure there is a short thick ground wire between the VIN- terminals of the Duet and the DueX;
- Try adding the additional I2C pullup resistors that I already described;
- Don't connect normally-open endstop switches to the endstop inputs on the DueX (or if you must, use a 1K pullup resistor to +3.3V and preferably also an RC filter).
-
@kazolar said in Firmware 2.03beta2 available:
I checked that again. I have a beefy wire there, but I can go up a gauge. I also noticed that the ground wire has things running next to it, so I'm suspecting some interference. So my current plan is to move to a different case with the boards side by side instead one on top of the other and a much beefier ground wire. Since pure reboot doesn't solve it, I'm leaning towards some electrical noise built up which clears up on power down.
The beefy ground wire needs to be short as well.
Mounting the boards back-to-back is a good option, because it makes for easy fan cooling and it allows you to use a short thick ground wire between the two VIN terminal blocks.
-
@dc42 so I'll leave the case be. That's easier obviously. I have very good cooling, CPU reported temperature doesn't go above 27c. I'll replace the ground wire, though it's at least an 18 gauge silicone insulated wire, but I can go to 16? Or 14. Wire is short, basically just long enough to jump between the boards. And will add the resistors as you suggested in the other post. It's rather curious that i2c timeouts (not errors although not sure if it's a difference) don't start until several hours of operation. I was calibrating my extruder offsets and checking my z probe etc so I was running homing routine multiple times and lead screw compensation routine,I am using normally closed end stops, I've had issues with normally open in the past. Hopefully I can resolve this and move to the latest firmware since I am presently stuck on rc5 since i2c is a bit more resilient there.
-
18 gauge is only around 0.8mm² the wiki says around 2.5mm² is recommended which is around 13-14 gauge
Dont know if it's a pattern yet but I've read about a few issues with the duex and all those people seem to be running solid core cable.
-
Thanks, will bump up to 14 gauge. I'm using stranded wires crimped in ferrules. I'm guessing, the insufficiently thick ground would the source of my issues. I'm not sure solid core can be crimped, or tightened adequately.
-
Yes completely agree
-
@dc42 I installed a 14 gauge ground wire -- while at it also did the VIN wire. Both are 1/2 the length they were before, couldn't get shorter than this now. I left the 16 gauge(it was 16 not 18 before) going to the PSU, it's coupled in a ferrule together with a very short 14 gauge jumper to duex5. The printer itself with everything on never pulls more than 200w, since my I'm using an AC bed, 16 gauge wire has not been an issue for 24v DC power.
Now the main question is, how do I test the i2c bus for reliability. Under normal conditions it takes a long time for me to start seeing timeouts, is there a test routine, something that would send a bunch of data on i2c which you would expect to produce some errors if the wiring was at issue (I don't mind running some custom firmware to bang on the i2c bus).
Thanks again.
-
Will do later today.
-
@kazolar said in Firmware 2.03beta2 available:
@dc42 I installed a 14 gauge ground wire -- while at it also did the VIN wire. Both are 1/2 the length they were before, couldn't get shorter than this now. I left the 16 gauge(it was 16 not 18 before) going to the PSU, it's coupled in a ferrule together with a very short 14 gauge jumper to duex5. The printer itself with everything on never pulls more than 200w, since my I'm using an AC bed, 16 gauge wire has not been an issue for 24v DC power.
Now the main question is, how do I test the i2c bus for reliability. Under normal conditions it takes a long time for me to start seeing timeouts, is there a test routine, something that would send a bunch of data on i2c which you would expect to produce some errors if the wiring was at issue (I don't mind running some custom firmware to bang on the i2c bus).
Thanks again.
You could try sending repeated commands to change the speed of the DueX fans. Each one will require an I2C transaction.
Here's another possibility: pick one of the DueX servo outputs that corresponds to an unused heater channel, connect the servo control pin of that output to the cathode of a small signal diode, and connect the anode of that diode to one of the DueX endstop inputs. Then use M307 to disable that heater, and M42 to set up 50% PWM on that servo output at a low frequency. Every time the endstop input toggles, the DueX will signal a change to the Duet, and the Duet will do an I2C transaction to find out what changed.
-
Is there a certain resistance that shouldn't be exceeded on the ground connection between the boards? I've got really thick wires running from both boards to the power supply and I measured the resistance to be somewhere around 0.4 Ohms. Since I get the errors extremely rarely, I added an additional, short but significantly thinner wire between the boards, which appeared to halve the resistance. Would this be good enough?
-
@edgars-batna, you should be looking for 0.1 ohms or less. Bear in mind that your multimeter may read greater than zero ohms when you short the leads together, in which case subtract that value from the reading you get between the two terminal blocks. My multimeter reads 0.2 ohms between the ground side screws of the two VIN terminal blocks, and also 0.2 ohms if I short the leads together.
Inductance matters too, which is why the wire must be kept short. The reason is that the stepper motors draw large pulsing currents when they are energised, and this will cause there to be ground noise between the Duet and DueX unless that wire has low resistance and inductance.
-
@dc42 Thanks, it's exactly as you described, so I suppose the value should be good enough now.
-
@dc42 I ran some gcode shifting fan speed for tool 3 (fan on the duex5) repeatedly a few hundred times and no i2c errors or timeouts. Wonder if that means it's solved. I'll try the servo trick. Would adding the resistors hurt any?
-
Adding the resistors won't hurt. We're going to reduce the values of the ones on the DuetX in the next manufacturing batch.
-
Just posting here to confirm that 2.03 beta is working fine on my CoreXY with sensorless homing.
here is my last print (printed in ABS):
it's a sleeping Crimson Behelit. (Berserk fans will know what this is )
-
So after updating to 2.03 b2, my COREXY is now mirrored? before it homed with 0,0 towards the left front of the printer, but now it is the right front?
; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool on Tue Jul 31 2018 15:05:50 GMT+0200 (Centraleuropæisk sommertid) ; General preferences G90 ; Send absolute coordinates... M83 ; ...but relative extruder moves M555 P1 ; Set firmware compatibility to look like RepRapFirmare M667 S1 X-1.0 ; Select CoreXY mode ; Network M550 PD-bot EVO ; Set machine name M551 Psmorum2765 ; Set password M552 S1 ; Enable network M587 S"Egsdal" P"smorum2765" I192.168.1.31 J192.168.0.1 K255.255.255.0 ; Configure access point and IP addresses. You can delete this line once connected M586 P0 S1 ; Enable HTTP M586 P1 S0 ; Disable FTP M586 P2 S0 ; Disable Telnet ; Drives M569 P0 S1 ; Drive 0 goes forwards M569 P1 S0 ; Drive 1 goes backwards M569 P2 S1 ; Drive 2 goes forwards M569 P3 S1 ; Drive 3 goes forwards M569 P4 S1 C65972 ; Drive 4 goes forwards M569 P5 S0 ; Drive 5 goes forwards M569 P6 S1 ; Drive 6 goes forwards M569 P7 S1 ; Drive 7 goes forwards M569 P8 S1 ; Drive 8 goes forwards M569 P9 S1 C65972 ; Drive 9 goes forwards M584 X4 Y9 Z2:1:0 E6:5 ; Apply custom drive mapping M350 X16 Y16 Z16 E16:16 I1 S2 ; Configure microstepping with interpolation M92 X200 Y200 Z800 E2700:2700 ; Set steps per mm M566 X1500 Y1500 Z18 E40:1200 ; Set maximum instantaneous speed changes (mm/min) jerk M203 X8400 Y8400 Z800 E2400:2400 ; Set maximum speeds (mm/min) M201 X500 Y300 Z250 E150:1000 ; Set accelerations (mm/s^2) M906 X1000 Y1000 Z1000 E1100:1100 I40 ; Set motor currents (mA) and motor idle factor in per cent M84 S10 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; Set axis minima M208 X320 Y290 Z500 S0 ; Set axis maxima ; Define the X and Y coordinates of the leadscrews. ; Must come after M584 (Set drive mapping), M667 (Select CoreXY Mode) and M669 (Choosing Kinematics type) ; Motor order: Front left (1), front right (2), rear right (3). ; Snn Maximum correction in mm to apply to each leadscrew (optional, default 1.0) M671 X-50:367.0:367.0 Y177:33:315 S20 P2 F1.25 ; Endstops M574 X1 Y1 S3 ; Set endstops controlled by motor load detection ; Z-Probe M307 H5 A-1 C-1 D-1 ;dissable heater 5 for PWM use M574 Z1 S2 ; Set endstops controlled by probe M558 P9 H5 F500 T5000 ; Set Z probe type to BL touch and the dive height + speeds G31 P25 X0 Y88 Z1.81 ; Set Z probe trigger value, offset and trigger height M557 X50:280 Y70:260 S40 ; Define mesh grid ; Heaters M305 P0 T100000 B4725 C7.06e-8 R4700 H0 ; Set thermistor + ADC parameters for heater 0 M307 H0 B1 A397.7 C1129.5 D15.1 V24.3 ; set bed to bit bang M143 H0 S130 ; Set temperature limit for heater 0 to 80C M305 P4 T100000 B4725 C7.060000e-8 R4700 X5 ; Set thermistor + ADC parameters for heater 1 M143 H4 S360 ; Set temperature limit for heater 1 to 360C M305 P7 T100000 B4725 C7.06e-8 R4700 X3 ; Set thermistor + ADC parameters for heater 2 M143 H7 S360 ; Set temperature limit for heater 2 to 360C ; Fans M106 P5 S0 B0.0 H4:7 T50 L255 C"Water-pump" M106 P6 S0 B0.0 L255 H4:7 T50 C"Radiator fan" M106 P4 S0 B0.0 C"Part fan"; ;LEDS M106 P7 S0 F100 B0.0 C"LED light" ; Tools M563 P0 D1 H4 F4 ; Define tool 0 G10 P0 X-10 Y0 Z0 ; Set tool 0 axis offsets G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C M563 P1 D0 H7 F4 ; Define tool 1 G10 P1 X10 Y0 Z0 ; Set tool 1 axis offsets G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C ; Automatic saving after power loss is not enabled ; Custom settings are not configured ; Miscellaneous M501 ; Load saved parameters from non-volatile memory
and home all:
M400; make sure everything has stopped before we make changes M280 P5 S160 ; M574 X1 Y1 S3 ; M913 X30 Y30 ; XY motors to 30% current M915 X Y H400 S3 R0 F0 ; set X and Y to sensitivity , do nothing when stall, unfiltered ; X axis home G91 ; use relative positioning G1 Z10 F6000 S2 ; lift Z relative to current position G1 S1 X-405 F6000 ; move quickly to X axis endstop and stop there (first pass) G1 X5 F6000 ; go back a few mm G1 S1 X-405 F4000 ; move slowly to X axis endstop once more (second pass) ; Y axis home G1 S1 Y-305 F6000 ; move quickly to Y axis endstop and stop there (first pass) G1 Y5 F6000 ; go back a few mm G1 S1 Y-305 F4000 ; move slowly to Y axis endstop once more (second pass) G90 ; absolute positioning M913 X100 Y100; motor currents back to 100% ; Z-axis M561 ; Clear any bed transform G1 X160 Y130 F6000 G30 G32 ; Start 3-point probe sequence - Bed.g ;M375 P"bareplate.csv" ; Load heightmap ;G1 Z20.0 F6000 ; Move Z to 20 ;G1 X5 Y5 ; Move Head to front left M402;
and bed.g
M561 ; clear any bed transform ;G28 Z; M561; Clear bed height map ; Probe the bed at 3 points G30 P0 X20 Y95 Z-9999; G30 P1 X20 Y270 Z-9999; G30 P2 X260 Y270 Z-9999; G30 P3 X260 Y95 Z-9999; G30 P4 X145 Y135 Z-9999 S3; G1 X20 Y20
Also ruins my auto leveling/3 screw setup
-
@martin1454
In your config.g remove M667 S1 and replace it with M669 K1. That will sort it! -
@chas2706 said in Firmware 2.03beta2 available:
@martin1454
In your config.g remove M667 S1 and replace it with M669 K1. That will sort it!Still mirrored
-
@chas2706 : from which firmware did you upgrade may I ask?
If coming from an older firmware (pre 1.19), the Y motors will need reverse direction. (you can do that in firmware)