To get an idea of the bed vertical issue I made some Z measurements on a CR10S pro with a heated glass bed. A dial gauge sat in the center of the bed with the plunger pushing up on the bottom of the 2020 X axis extrusion. This setup is mechanically rigid and repeatable but the digital gauge can’t take the heat so quick measurements are needed when the bed is over 45C.
First test: Heating the 400W bed at the full power starting at 20C and stopping at 40C. This creates a large temperature difference between the top and bottom of the bed causing the bed center to lower 100um. Then with the heater turned off the bed temperature equalizes down to 30C with the final bed center 10um lower than at 20C.
Second test: Bed set to 35C with the bed temperature cycling 0.3C over a 6 second on/off heating cycle. When the heater is on the bed quickly bounces down about 10um then slowly returns.
Third test: Setting the bed temperature to 110C and waiting about 10 minutes. Just before the 110C temperature is reached and the heater is still fully on, the bed is 133um lower. Allowing several hours for thermal equilibrium to be reached inside an insulating corrugated plastic enclosure before the next measurements are made. The warm enclosure air is 45C while the bed heater cycles on for 2 seconds and off for 2 seconds maintaining the bed at 110C and varying 0.1C. The bed height is now 100um lower that at 20C and it still bounces down a further 6um when the heater is on. (I used a current meter on the mains voltage to know when the heater was on and off).
The stock printer has a circuit board style heater bonded to an aluminum plate with an insulating blanket below. Not stock are the glass plate build surface clipped on top of the aluminum and two thin and wide brass sheets located between the aluminum and glass. This is to reduce a trench and improve the overall glass plate surface flatness.
-Peter
Posts made by Peter120
-
RE: Z-Wobble vs temperature instability - Video
-
RE: G30 inductive probe auto nozzle height calibration
After lots of testing I am finally ok with this version.
Turns out the seesaw concept is amazingly accurate for measuring the nozzle tip to probe height offset. The resulting measurement produces single digit micron errors. While this level of accuracy is overkill; all elephant foot is gone.I used a ¼”-28tpi hex bolt and with a hack saw converted it into a T-bolt. The friction (rotation brake) results from ball bearing preload. Two belleville washers (cupped spring washers) axially squeeze the inner bearing races together as the nut is tightened which increases the braking force. The nut also secures the T-bolt to the 2040 extrusion. An aluminum pipe is used as a spacer between the 2040 extrusion and the belleville washer.
The seesaw "board" is bent to lower the T-bolt mounting position on the 2040 extrusion.
A paper clip was formed into a ramp that resets the seesaw height for the next offset probing cycle whenever the Y axis is homed.
For cleaning plastic from the nozzle tip, I used a 614 foil from an old Braun shaver (it didn’t have any big holes when I started). This is effective for cleaning plastic from a HOT nozzle tip over a few mm of Z height but it is not fully finished.
Some parts for a previous design that were not used.
Cheers -Peter
-
RE: G30 inductive probe auto nozzle height calibration
Some testing observations:
Any plastic protruding down or oozing from the nozzle creates an uncompensated offset error which increases the first layer filament thickness. I clean my nozzle tip manually so currently this it’s not very automatic process.
My next seesaw will have something like a rusty hinge or actually a friction clutch. The evolving idea is the seesaw seat under the probe is pushed up, by the nozzle pushing down on the opposite end seat. The probe triggering halts Z and establishes Z zero. Next the probe is lifted and shifted. The rusty hinge keeps the Z height seat difference set at the Z zero probe trigger. Lastly the nozzle pushing down point on the seesaw is probed. The resulting Z height is the difference between the probe trigger to the nozzle tip. The previous need for a printed calibration offset block is eliminated.
Cheers -Peter -
RE: G30 inductive probe auto nozzle height calibration
Frederick thanks for the info. It ain't over till the fat lady sings.
I am continuing to test the seesaw and surrogate offset combo. Mathematically I believe this compensates for 2/3 of the nozzle to bed height change caused by the probe trigger distance varying with temperature. Until there is a way of multiplying the results of probing my approach just can’t achieve 100% compensation. But honestly my first print layer is typically 0.3mm and the resulting skirts are measuring 0.23-0.32mm which is about how flat my glass bed is.
Cheers -Peter
-
RE: G30 inductive probe auto nozzle height calibration
Frederick there is one more complicating bit that I am testing, conceptually a playground style seesaw for the nozzle and probe. The nozzle pushes down on the seesaw using G30 which raises the opposite end of the seesaw until the probe triggers. The seesaw hinge point is the G30 S-3 probing location. The hinge location is 1/3 from the nozzle for a mechanical height advantage of 2 under the probe.
Cheers -Peter
-
RE: G30 inductive probe auto nozzle height calibration
Hi Frederick, this is all about heated chambers and printing the first layer thickness correctly. Before I made a chamber, this was never a problem.
The inductive probe trigger distance has great short-term accuracy but it drifts with temperature and in a heated chamber this becomes a pain in the ass. I wiggle paper under the nozzle like everyone but only when I change nozzles.
My previous heated chamber procedure for starting a print was watching the skirt print then canceling the print. Next I remove the skirt, measure the thickness and correct the nozzle Z offset in config.g G31, save, reboot, and now I am ready to print. I watch the skirt and a perimeter extrude before I walk away. I wanted to automate the nozzle Z offset in config.g G31 over all heated chamber conditions.
If you print a block with a height equal to the nozzle Z offset the printed block can be used as a calibration surrogate object. Probe the bed with G30, move the probe over the top of the block and probe the top with G30 S-3 and the difference from the bottom to top of the block is loaded as the new nozzle Z offset value. The block on the heated build surface is a poor position, it will soften plus it needs to be removed by hand before the start of printing. Locating the block off the build surface became the problem. I printed the block attached to a surface that I called a step as in people walking up stairs and bolted the print to the vertical 2040 extrusion. The step height difference is the nozzle offset surrogate block height. In homeall the first G30 zeros Z on the lower step before the step height difference can be measured with a G30 S-3. The next and last G30 probe command was to change the Z zero reference from the step to the center of the bed.
-Peter -
RE: G30 inductive probe auto nozzle height calibration
I think I understand the root cause of my G30 issue and the fix is above my pay grade.
I called the homez.g code (above) from homeall.g
The homing behavior was the same, did not work, but I could make small testing changes and think I found the issue.The top step Z height after a G30 S-3 becomes the new Z height starting/retraction reference height for any future G30 probing.
After nozzle offset calibration a G1 Zxxx still can put the nozzle on the bed surface or alternately the probe just above the trigger height, however a G30 raises the probe up away from the bed (the Z probing direction is reversed).
On the other hand, if a G1 lifts Z above the top step height prior to G30, it probes down but it stopped before the probe trigger event.In config.g I increased H in the line M558 P4 H3 A3 S-1 F50 T600
With the altered M558 the probe actually homes the bed correctly with a G30 after the nozzle offset calibration routine (homez.g above). The downside is the probing time is so much longer with the 6mm of slow velocity Z probe movement required to trigger the probe on the bed surface that I will probably not use this fix.
Cheers -Peter
-
RE: G30 inductive probe auto nozzle height calibration
Phaedrux I think after a bit more testing the first layer accuracy will be better than +-10um and diminishing returns kick in. The Creality textured glass bed surface has 6um deep holes for first layer grip so…
Hi fcwilt yea it’s not perfect but its reasonably matched to the task. The inductive probe I’m using is the 8mm trigger distance model with an M18x1 threaded body however under the probe I have a 7mm steel ball bearing that physically touches the probed surface. Using averaging the RMS error is 0.003mm powered from the 24V 22A printer supply. It has occurred to me that some power supply electrical noise filtering would improve the trigger stability (another plan B).
I was hoping that you or Phaedrux might know of a software switch so I could merge the homez gcode into homeall.g Not a deal breaker just aesthetics.
For the curious: The step is flipped and printed on its side and the probed surfaces are printed as walls so they can be smooth and have any height difference. Secondly tilt the upper step slightly from the front edge to the back edge so the tilted step probing position provides fine height tweaking of the nozzle offset after the step is printed. Lastly in a heated chamber the filament used needs to have a high service temperature like ABS or something better.
-Peter -
RE: G30 inductive probe auto nozzle height calibration
Hi Phaedrux, honestly I was expecting G30 S-3 would probe three times and average the results like G30 does without the S-3 suffix. The nozzle height measurement error by averaging 2 of the 3 different probe measurements makes this approach substantially more accurate than adjusting Z by eye using 50um baby steps. I built a heated chamber enclosure from a 4x8' clear corrugated plastic sheet $36 Canadian with a $20 Ikea picture frame as a clear plastic door. This resulted in a changing nozzle offset and a big pain.
After many hours of tweaking I could not eliminate the error messages by adjusting Z before the bed probing move or changing the gcode sequence order etc. My guess is a software flag in the homing routine gets in the way of non standard probing.
If anyone plays with this code I suggest probing an empty cardboard filament box placed on the bed as a probing test build surface and have your finger ready on an emergency stop. -
G30 inductive probe auto nozzle height calibration
Automatic nozzle offset calibration is working but not exactly as I wanted.
Quick background: $5 Inductive probes have great 60 second short-term accuracy something like 3um. Turns out time and temperature both change the probe triggering distance and adjusting the first layer nozzle height with baby Z steps gets old fast.
My solution is to calibrate the probe trigger to nozzle height difference followed by probing the bed height. A printed stair with two steps is used for calibration. The height of the printed step is the actual physical probe trigger to nozzle height offset distance.
One issue is I wanted to include the offset calibration in homeall.g but I was unable to probe the bed correctly with G30 after offset calibration. I relocated the probe offset calibration gcode to homez.g which requires a homeall.g before and after probe calibration to correctly set the bed height for the first layer.In config.g the only modified line is
M558 P4 H0.9 A3 S-1 F50 T600 ; probe 3 times and average the results.My modified homez.g below only calibrates the nozzle offset
G31 ; report initial nozzle offset
G1 X14 ; move above low step
G31 Z0.0 ; set probe trigger to nozzle offset to zero
G31 ; report the nozzle offset is 0
G30 ; probe low step 3 times and set average height of trigger events =0
G1 Z5 ; raise nozzle 5mm
G1 X0 ; move above high step
G30 S-3 ; probe then set the nozzle offset height difference
G1 Z5 ; raise nozzle
G31 ; report calibrated nozzle offset
M140 ; report bed temperatureOddly the G30 S-3 only probes once and then sets the nozzle offset.
Also, if after M140 above I add a G1 to move to the bed center and then a G30 to probe the bed, the Z movement is odd with typical error messages like probe triggered before probe move or did not trigger during probe move. It would be nice if this worked so this routine could be added to homeall.g
Result: Repeated continuous calibration produces an offset result that bounces around by less than +-4um. Over 1 hour the result can drift +- 0.1mm however this change is unimportant because the drift is canceled out if the bed height is probed shortly after the calibration. In for a penny, I printed (not recommended) a 50um thick skirt which printed fine but it measured 38um in thickness.
Cheers -Peter
-
RE: Hot end Temperature PID + (filament volume)/time
It is not a problem but an observation which I have been pondering. Typically, I slice thin layers with a wide paving width using cooler filament temperatures. Recently I Increased the layer thickness to reduce the print time which resulted in a failed print. The surprising and odd bit was the first several layers went down just fine. The thermal mass of the heater block provided lots of extrusion capability at the start but the PID servo loop was not able to keep up. Well it did catch up after the filament was ground free in the extruder and the print failed. I have done PID extruder tuning and the thermal control loop is responsive and seems critically damped but with a slow time constant. Adding the filament E steps would be and instantaneous prediction of a future pending extruder temperature change. Fuzzy logic is a very simple form of artificial intelligence that learns on the job and it is good for controlling nonlinear systems.
-
Hot end Temperature PID + (filament volume)/time
This is rather esoteric math but the hot end temperature is destabilized by the varying filament flow rate. How about rather than just having the PID control loop react to temperature changes the net filament volume per time is added to the control loop.
This is a bit of a slippery slope in that varying fan speeds and other anticipatory variables could also be included in the filament temperature control loop. Ultimately this slippery slope results in a fuzzy logic filament temperature controller with much(?) faster print speeds and more consistent filament flow properties.
Apologies if this has been discussed before.
Cheers
Peter -
RE: Controlling a Cetus3D with Duet3D 0.8.5
A quick simple build and not fancy, honestly it is a prototype that worked fine.
Made from scrap steel 1mm thick that I had laying around. It was cut to size with a hack saw then clamped in a vice and bent using a hammer. The bolts are long because I had them and the bracket is tapped for them. A cordless drill made all the holes. If the sheet metal were a bit thicker say 1.75mm the extra bends I made to stiffen the bracket would not be needed. I cut a 2mm wide slot to the top and bottom filament feed holes so the bracket can be removed to clean the filament drive gear. I used a bunch small washers stacked to make the spacer between the nozzle top to the extruder bottom and for convince glued them together.
Have fun.
-
RE: Controlling a Cetus3D with Duet3D 0.8.5
@skezo
Again no expert but all the slicers that I have tested have quirks.
The Tiertime software environment/slicer is good for beginners and a clever advanced user can work around most limitations. I briefly tested the beta Catfish slicer attempting to get around a bug. Finally reported the bug in detail but it was never fixed. They say Catfish will eventually generate Gcode for other printers but I have moved on.
A good friend who purchased a slicer says don't waste the money.
Tested Cura for two months and was disappointed.
Tested PrusaSlicer for many months. I like it well enough and continue to use it. It is not perfect but believe it currently has the most development momentum.
I design with fusion 360 but have only looked at the fusion 360 slicer. It has the great potential of using finite element analysts to tailor the infill for minimum weight with maximum strength. This is not something that I need but for industrial printed parts this feature would be a winner. -
RE: Controlling a Cetus3D with Duet3D 0.8.5
@skezo
I am no expert just hacked away until I was satisfied.
Switching between stepper driving modes has the potential of a slipped step so I decided to not test changing modes on the fly.The steppers loudness changes depending on the commanded micro step (static) position. It sounds like white noise, my guess is the stepper winding is microphonic and the noise source is the TMC switching driver current. The bed behaves somewhat like a speaker so its stepper is the most noticeable sound. For totally silent printing I would plan on building a heated enclosure.
-
RE: Controlling a Cetus3D with Duet3D 0.8.5
@fotomas
Thanks good tip.If you have some sheet metal capability, an excellent mod is a bracket to stabilize the nozzle cold end to the extruder. This reduces/eliminates any nozzle height change with extrusion pressure caused by filament temperature, layer thickness, filament retraction etc. Missing in my pic is a spacer washer between the cold end top and the printed part bottom.
-
RE: Controlling a Cetus3D with Duet3D 0.8.5
Motor acceleration settings are an accuracy vs vibration trade off and you just pick your poison. The stock Z axis on a Cetus shakes whenever the extruder accelerates. If you add a steel bracket and tie the Z stepper face to the aluminum base it improves dramatically. I upgraded to a 24V power supply and in the config.g below I turn off the steppers when the print finishes. If your Z axis brake/clutch slips fix or increase the stepper idle current so the extruder linear rail does not fall on the print!
The belts have glass cords and they establish the printer motion accuracy together with the steppers so no calibration is even possible aside from axis tramming.; ****** X&Y axis swapped May 6 2020 origin now front left
; General preferences
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves; Network
M550 P"Duet" ; Set machine name
M552 S1 ; Enable network
M587 S"xxxxx" P"xxxxxxxxxxxx" ; Configure access point. 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 S0 ; X Physical drive 0 goes backwards
M569 P1 S1 ; Y Physical drive 1 goes forwards
M569 P2 S1 ; Z Physical drive 2 goes forwards
M569 P3 S1 ; E Physical drive 3 goes forwards
M350 X256 Y256 Z256 E256 I0 ; Configure micro stepping with no interpolation
M92 X1280.00 Y1280.00 Z1280.00 E1650 ; Set steps per mm, extruder calibrated white PLA
M566 X900.00 Y900.00 Z900.00 E120.00 ; set maximum instantaneous speed changes (mm/min), speed threshold for executing next gcode move
M203 X12000.00 Y12000.00 Z12000.00 E7000 ;E1200.00 ; Set maximum speeds (mm/min) about 200mm/s
;M201 X3200.00 Y7000.00 Z3200.00 E12000.00 ; Set accelerations (mm/s^2) for 1Kg,350gr,100gr X skipped a few steps
M201 X1500.00 Y1500.00 Z1500.00 E1000.00 ; Set accelerations(mm/s^2)for 1Kg,350gr,100gr https://wilriker.github.io/maximum-acceleration-calculator/
M906 X450.00 Y450.00 Z450.00 E400.00 I0 ; Set motor currents (mA) and motor idle factor in per cent, Z&Y steppers not quiet at 475ma PSU19.4VM84 S30 ; Set idle timeout
; Axis Limits
M208 X0 Y0 Z0 S1 ; Set axis minima
M208 X190 Y191 Z277 S0 ; reversed X&Y axis May6 2020; Endstops
M574 X1 Y1 Z2 S0 ; reversed X&Y axis May6 2020 X low end, Y low end, Z high end, S0 endstop triggered active low Vout; Z-Probe
M558 P0 H5 F120 T6000 ; disable Z probe but set dive height, probe speed and travel speed
M557 X15:175 Y15:175 S20 ; define mesh grid; Heaters
M307 H0 B0 S0.66 F400 ; disable heater bed bang-bang mode set max PWM, up Hz, 120W peak with extruder heater Amps jumping around
M305 P0 T50000 B2718 R4700 ; set thermistor + ADC parameters for heater 0 50K bed
M143 H0 S122 ; set temperature limit for heater 0 to 122C
M305 P1 X501 R47000 ; configure PT1000 for heater... per dc42 administrator suggestion with cetus PT100
M143 H1 S285 ; set temperature limit for heater 1 to 285C ....can be 300C; Fans
M106 P0 S0.25 I0 F500 H0 T45 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned on bed
M106 P1 S1 I0 F500 H1 T45 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on extruder; 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; 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
-
RE: Controlling a Cetus3D with Duet3D 0.8.5
After a bunch of tuning I converged on a few variables that might be useful to others.
I choose 256 micro stepping without interpolation. Extrusion steps for the original MK2 extruder mechanism that has a filament release lever is 1650 steps/mm. I also have the warranty replacement MK3 style but the prints were just not as good so I eventually repaired the original.
The steps/mm is the iterative result is from a printing nuts and bolts sliced with prusa. It’s like a micrometer in that it measures the clearance between the printed nut and bolt threads. Measuring thread geometry is a good extrusion test and it quickly reveals temperature, layer height, filament brand, colour etc. all change the steps/mm. https://www.thingiverse.com/thing:3983705
The axis motor currents can be 450ma any lower does not improve the print finish and at 475ma they start making noise.
The extruder motor rotor is shorter and scaling the axis motor current you get a drive current of about 333ma. Any lower does not improve the print finish and higher adds an annoying minor washboard texture to the print surface.
I find that with 0.1mm layers the washboard surface texture increases while it is very hard to see when printing with 0.15 and thicker layers.
My 200W 24V silicone bed heater needed a lower duty cycle and higher PWM frequency to not trip the 120W Cetus AC adapter’s internal short detection circuit. M307 H0 B0 S0.45 F200 it heats to 55C at the same time as the nozzle get to 215C. The upper bed temperature is limited to the 80s and after a long warm up using the stock Cetus power supply.All in all a very satisfying conversion.
-Peter -
RE: Controlling a Cetus3D with Duet3D 0.8.5
I designed some parts for my Cetus Duet2 WIFI conversion
https://www.thingiverse.com/thing:4322092
Don’t judge me but I started this about a year ago in the middle of some online configurator tool issues and had to modify the config files the hard way, much easier now.
I choose inductive sensors for homing all the axes. All three of my inductive sensors are stationery requiring Z be homed before Y, however, this keeps the accelerating mass down and the sensor wiring stationary. To interface the inductive sensors output to the Duet I used Schottky diodes. Looking at the numbers I believe the lower forward diode voltage drop meets the worst case Duet input voltage thresholds, regardless it works fine. The diodes are wired so they can only pull down the Duet input pin while the inductive sensor output signal swings from 0.6V to 24V. The homing is done in 2 passes, fast and an extremely slow second pass (F0.1). The resulting trigger position is very repeatable and any faster results in the inductive trigger position having 2 or more nearby but stable values. Could be sensor jitter or CPU capture jitter, anyway it is very repeatable if done extremely slowly.
Cheers
Peter -
RE: More repeatable Homing.
Thanks for the welcome and sharing your thoughts.
My underlying interest is just how accurate can a PLA object be printed or better perhaps is what is limiting print accuracy. Is SLA required for better print accuracy or can FDM be improved.dc42 Point 1 is valid and it was not on my radar. I have a Cetus with a Z axis belt which I can coax it into showing micro stepping errors on selected printing tests. You picked a good printer geometry example. I thought about a springy leadscrew to motor shaft coupler supporting the build platform weight.
Point 2 I did consider but figured that internally the stepper is periodic every 4 steps or in my case 0.8mm and that one could choose a winding and polarity that resulted in some step position margin; however, I was thinking of belts and not screws. Your point 1 using a leadscrew might be hit and miss for Z, but probably not for the X and Y belts.
I found this link where they measured the stepper accuracy and it is obvious why thin Z layers have a problem with belts.
https://www.applied-motion.com/news/2015/10/stepper-motor-accuracy
Between two adjacent bad steps the difference error is 1/10 of a step which is 0.02mm for my belts. This is small until you think about the error as a percentage of a 0.05mm layer. Micro stepping errors would also subtlety vary the extruder nozzle flow rate.deckingman. The interference fringe is sensitive to several printer errors but the trick would be separating out the individual variables and adjusting the printer. I posted an extrusion calibration test that you might like. It is based loosely on a micrometer. You print a nut and bolt and the snug final angular position measures the axial thread clearance which is known for the STL model printed. Flip the nut over and remeasure the angle and you get the overhanging thread sag.
https://www.thingiverse.com/thing:3390910