After Z probing, print head smashing into bed
-
@fcwilt Thanks Frederick! Its people like you that really go under appreciated in these forums, thanks for your help. I have replied to phaedrux below so we shall see what he says.
-
You mentioned that you use an inductance sensor.
In your probe configuration you have chosen type P1. Does you sensor actually have an analog output like a "smart IR probe"?
I've used many inductive sensors and I have always specified type P8, since the output of the probe is either "on" or "off".
I also would like to share with you what steps I perform when starting a print and why I do them.
But I don't have the time right now - it's 5.00 AM.
Doing the needed things in the correct order at the start of a print is important.
Frederick
-
@fcwilt Hi Fredrick, my inductance sensor is similar to here https://www.aliexpress.com/item/1005004853709100.html?spm=a2g0o.productlist.main.33.60c8l3fwl3fwqS&algo_pvid=6f2ef3f2-1dd9-4b63-a7bd-bb78c1f5cfd8&algo_exp_id=6f2ef3f2-1dd9-4b63-a7bd-bb78c1f5cfd8-16&pdp_npi=4%40dis!GBP!6.68!6.68!!!7.89!!%4021038eda16964986241754812e39f3!12000030753506738!sea!UK!2004704503!&curPageLogUid=BWGfMQ4DwVrl
it has 3 leads, power is connected to my fan header (always on) so i put my z probe signal to my z probe signal header. what does p8 specify?
Thank you.
-
It is fairly typical of Chinese units - a bit short on specs. It says it has fast response but I didn't see a frequency spec. Higher frequency normal yields faster response.
I usually get my units from here:
They have a good selection - for example they list 35 4mm units. And they usually provide full specs. They tend to be more expensive.
Probe type 8 just specifies that the probe sends an signal that is either ON or OFF, which is what these types of probes typically do.
Frederick
-
@fcwilt Hi Frederick,
Yes that makes sense, So should i change my code to:
M558 ***P8*** C"!zprobe.in" H10 F240 T6000 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X35 Y0 Z2.47 ; set Z probe trigger value, offset and trigger height M557 X15:525 Y10:400 S50 ; define mesh grid
What did my P1 previously mean? I am guessing this is frequency specification? As I would be happy for it to work as a switch.
-
@Adam_Sw3 said in After Z probing, print head smashing into bed:
@fcwilt Hi Frederick,
Yes that makes sense, So should i change my code to:
M558 ***P8*** C"!zprobe.in" H10 F240 T6000 ; set Z probe type to unmodulated and the dive height + speeds G31 P500 X35 Y0 Z2.47 ; set Z probe trigger value, offset and trigger height M557 X15:525 Y10:400 S50 ; define mesh grid
What did my P1 previously mean? I am guessing this is frequency specification? As I would be happy for it to work as a switch.
From the documentation for M558 here are the probe types:
P0 indicates that no Z probe is present. Whenever Z probing is commanded, you will be prompted to jog the Z axis until the nozzle is just touching the bed and then signal completion.
P1 specifies an unmodulated or smart IR probe, or any other probe type that emulates one (probe output is an analog signal that rises with decreasing nozzle height above the bed). If there is a control signal to the probe, it is driven high when the probe type is P1.
P2 specifies a simple modulated IR probe, where the modulation is commanded directly by the main board firmware using the control signal to the probe.
P3 is similar to P1 but drives the control signal to the probe low. This may be used to switch between different Z probes.
P5 selects a switch by default (normally closed) for bed probing between the In and Gnd pins of the IO connector (Duet 3) or Z-probe connector (Duet 2).
P8 is as P5 but is unfiltered, for faster response time.
P9 is as P5 but for a BLTouch probe that needs to be retracted and redeployed between probe points.
P10 means use Z motor stall detection as the Z probe trigger.
P11 means a scanning Z probe with an analog output (supported from RRF 3.5.0-beta.4). Such probes must be calibrated before use (see M558.1).Frederick
-
@fcwilt thank you, so I will need to go for a P5/P8 command? To then turn this into a switch.
-
@Adam_Sw3 said in After Z probing, print head smashing into bed:
@fcwilt thank you, so I will need to go for a P5/P8 command? To then turn this into a switch.
P8 should work fine.
Frederick
-
@fcwilt I will have a go now!
-
@fcwilt Hi frederick, That didnt work. i did some googling and it appears i am having the same issue as this guy -> https://forum.duet3d.com/topic/16118/trigger-height-always-changes/9
I am also using the LJ18A3-8-Z/BX sensor found here -> https://cdn.awsli.com.br/945/945993/arquivos/14_PROXIMITY_INDUCTIVE_18BY.pdf
By the way I know this is frustrating and i am ever so greatful for you taking the time to help me.
-
@fcwilt Okay it is semi solved now, I have re done my homeall & home z command to be in the centre of the build plate now and that seems to be working. Therefore this leads me to believe that my z movements / build plate isnt level in some way.
-
@Adam_Sw3 said in After Z probing, print head smashing into bed:
I have re done my homeall & home z command to be in the centre of the build plate now
That kind of makes it sound like the trigger height of the probe was changing depending on where it was on the build plate.
-
@Adam_Sw3 said in After Z probing, print head smashing into bed:
@fcwilt Okay it is semi solved now, I have re done my homeall & home z command to be in the centre of the build plate now and that seems to be working. Therefore this leads me to believe that my z movements / build plate isnt level in some way.
That sensor you linked to seems to be very slow.
Take a quick look at this one which has good specs:
It is a 8mm diameter unit, has a sensing distance of 4mm and switching frequency of 3kHz. That frequency is in the middle of the ranges you can find.
I have tested a few 18mm units but they take up quite a bit of space. I tend to use 8mm for most printers.
I need to write up a summary of how my 5 printers are configured. I have never had the problems you are having.
Frederick
-
@Phaedrux Thats exactly what it sounds like, how would you remedy this?
-
@fcwilt HI Frederick, To be honest I dont really understand why i put the 18mm on haha! Yes please do that it would be interesting to see! potentially because mine is about 500mm cubed printing size but even so.
-
@Adam_Sw3 said in After Z probing, print head smashing into bed:
@fcwilt HI Frederick, To be honest I dont really understand why i put the 18mm on haha! Yes please do that it would be interesting to see! potentially because mine is about 500mm cubed printing size but even so.
I will try to post later today with a outline of my setups.
Frederick
-
@fcwilt Thanks!
-
@Adam_Sw3 said in After Z probing, print head smashing into bed:
@fcwilt Thanks!
OK here is a brief summary of how my printers are configured - I hope it doesn't spook you. Feel free to ask any and all questions
X and Y limits are set so that X=0 and Y=0 are at the center of the bed. For example: M208 X-150:150 Y-100:100
To set the Z=0 Datum I probe at X=0 Y=0. Some folks like to set the Z=0 Datum at one of the grid points used when creating the height map. I don’t know why.
I use an add-on called BtnCmd which allows me to specify the number of points for X and Y when creating the height map. I also can specify a scaling of X and Y so if I want the maximum 21x21 points but only over 50% of the bed I can achieve that.
For printers that have auto bed leveling I run the code in a while loop looking for move.calibration.initial.deviation < 0.02. The "state variable" move.calibration.initial.deviation is a value set by the firmware and is accessible in g-code.
Auto bed leveling should be followed by setting the Z=0 Datum if you want it to be correct.
I don’t use the “filament material catalog” feature of slicers. I use the “filament catalog” feature of the firmware.
I don’t use the slicer to set bed/extruder temperatures. I do that in the required “filament catalog” code that I create. How to prevent the slicer from trying to control temperatures depends on the slicer.
I configure the slicer to generate as little “setup” code as possible as I handle all of that in my own “print begin” file which I call using the slicer feature for calling user code. How you do this depends on the slicer.
Here is the output from the most recent version of Cura:
;Generated with Cura_SteamEngine 5.4.0
T0
M109 S0 ; set extruder temp and wait - notice the temp of 0 which I specified in Cura
M82 ; extruder to absolute mode
M98 P"print_begin.g" ; call my code
M82 ; extruder to absolute mode
M83 ; extruder to relative mode
M83 ; extruder to relative mode - Cura seems to have trouble making up it’s mind
G1 F1800 E-1 ; a bit of retract
M107 ; turn off the fanNotice there is nothing there that will conflict with whatever I do in my code - this is important.
Here is a summary of what my “print begin” code does:
- it loads the height map if that is enabled by a global variable of my creation
- it sets the Z=0 Datum by moving to X=0 Y=0 and doing a G30
- it selects tool 0 by doing T0
- it runs the filament specific config.g file by doing a M703 - I select the desired filament from the Dashboard before starting the print
- it runs a file to do the following - the values used depend on the tool selected and the filament selected
-- activate the bed heater
-- activate the tool heater
-- sets the extruder percentage (usually stays at 100)
-- sets the print speed percentage adjust (usually stays at 100) - it moves the nozzle to the front-center of the bed and drops the bed by 100mm
- it waits for bed/tool temps to reach their set values
- it then primes the extruder
- it then gives you a chance to verify the bed is clear and the extruder appears to be working - it use M291 with a S3 parameter for this.
- if you don’t cancel when replying to the M291 question it does the following:
-- moves the tool to X=0 Y=0
-- moves the bed to Z=5
-- does a bit of extruder retraction
At the point my code has finished and if all is well printing begins.
I also created the needed code for pausing/resuming/canceling/ending the print.
-
@fcwilt Wow thanks for that Frederick, thats very helpful! I would love to learn more about your code and I was wondering if you have discord or some other application where I could message you directly! I can post my name on here if you do just to avoid your username being out there!
Regarding your code it seems alot better to have your actual control board decide all the variables instead of the slicer as it removes a point of error during the printing proccess.
-