@t3p3tony Excuse me, i saw a bookmark next to my message and wondered what it was and clicked it and it disappeared. I accidentally reported myself after... Woops
Best posts made by Piet
-
RE: Problem when turning on printer
-
RE: Mesh bed leveling without M557
For future reference, this works.
The probe file can be adjusted to allow for different types of probing.if !exists(param.X) || !exists(param.Y) ;if parameter X and Y are given echo "Make sure parameter X and Y are given (C and S optional). Aborting probe move." ;notify user G1 X{param.X} Y{param.Y} Z{sensors.probes[0].diveHeight} F6000 ;move to given X and Y coordinates and predefined diveheight M400 ;wait for moves to finish M98 P"waitForHeaters.g" H01 M568 P0 A0 ;turn the extruder heater off (interference changes sensor reading) G4 S1 ;wait 1 second M98 P"preprobe.g" ;call macro to determine triggervalue and see if it is okay to proceed probing ;M291 R"Probing." P" " S1 if global.proceedProbe = true ;if its okay to proceed probing if exists(param.C) ;if parameter C is given if exists(param.S) ;if parameter S is given G30 X{param.X} Y{param.Y} P{param.C} S{param.S} Z-9999 ;probe move else ;otherwise G30 X{param.X} Y{param.Y} P{param.C} Z-9999 ;probe move elif exists(param.S) ;if parameter S is given G30 X{param.X} Y{param.Y} S{param.S} Z-9999 ;probe move else ;otherwise G30 X{param.X} Y{param.Y} Z-9999 ;probe move elif (global.proceedProbe = false) ;if it isnt okay to proceed probing echo "Aborting probe move" ;notify user ;M292 M568 P0 A1 ;set the extruder heater to standby
if global.bedLeveled == 0 G32 M98 P"probe.g" X525 Y250 echo >"heightmap.csv" "Height map file generated at", state.time echo >>"heightmap.csv" "xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum" echo >>"heightmap.csv" global.xMin,",",global.xMax,",",global.yMin,",",global.yMax, ", -1 ,",global.xSpacing,",",global.ySpacing,",",global.xNum,",",global.yNum var y = global.yMin var i = 0 G90 while var.i < global.yNum var x = global.xMin var j = 0 while var.j < global.xNum M98 P"probe.g" X{var.x} Y{var.y} S-1 M400 if var.j == 0 set global.meshLine = sensors.probes[0].lastStopHeight - sensors.probes[0].triggerHeight else set global.meshLine = global.meshLine ^ "," ^ sensors.probes[0].lastStopHeight - sensors.probes[0].triggerHeight set var.x = var.x + global.xSpacing set var.j = var.j + 1 echo >>"heightmap.csv" global.meshLine set var.y = var.y + global.ySpacing set var.i = var.i + 1
-
RE: Using bed leveling screws with independent z motors
@engikeneer That is my concern, i do also have independent z sensors so i know where every Z-motor is before probing. I think there is something to be said that with a good construction it is most likely redundant but the printer isn't build yet so im just speculating about the best approach to take to make sure it goes well anyways. Thanks for the feedback!
-
RE: Trouble assigning filament sensor after using pin for GPIO
@dc42 Im using version 3.4.0beta3 in SBC mode
-
RE: Failed Duet3 & SBC firmware update (again)
Good to hear, I'm not sure i had the same error message coming from a clean image (Invalid protocol version 6). Read somewhere on the forum that it had to do with dissimilair versions on the pi and duet but I'm not sure.
-
RE: Using bed leveling screws with independent z motors
@Phaedrux Thanks for the help. This thread has got me thinking and for the production run I'll most likely use a different solution (less constrained so motors can do its thing). For the prototype I will see if it is helpfull if necessary at all.
Right now I have it working with 4 adjustment points using the following script:
M561 ; clear any bed transform
M98 P"homexyu.g" ; home the x, y and u axis
T0 P0 ; select tool 0
G1 X51.3 Y75 F5000 ; move to first probe coordinates
G91 ; relative positioning
G30 K0 Z-9999 ; probe bed with tool 0 and set Z=0G90 ; absolute positioning
T1 P0 ; select tool 1
G1 X51.3 Y75 Z12.5 U-7.5 F2000; ; move the bed 7.5mm, and the U axis 15mm down
G91 ; relative positioning
G38.2 Z-9999 P1 ; probe bed with tool 1 and stay at Z=0
M400
G10 L1 P1 X0 Y0 Z{-move.axes[2].machinePosition} ; set Z-offset
M500 P10 ; save offset
M400
G1 Z5 ; move the bed 5mm down
G90 ; absolute positioning
M400
M117 "Z offset for tool 1 is set and saved"T0 ; select tool 0
G30 P0 K0 X51.3 Y75 Z-9999 ; probe above leadscrew
G30 P1 K0 X400 Y448.7 Z-9999 ; probe above leadscrew
G30 P2 K0 X748.7 Y75 Z-9999 S3 ; probe above leadscrew and run compensation -
RE: Tool change offset execution order
@jay_s_uk Thank you, that was very helpful. Im assuming you meant G1 R2 Z0, that worked for me.
Latest posts made by Piet
-
RE: Failed Duet3 & SBC firmware update (again)
That definitely helps! Updating to 3.4 takes around 30min I'd say
-
RE: Failed Duet3 & SBC firmware update (again)
Good to hear, I'm not sure i had the same error message coming from a clean image (Invalid protocol version 6). Read somewhere on the forum that it had to do with dissimilair versions on the pi and duet but I'm not sure.
-
RE: Failed Duet3 & SBC firmware update (again)
@rushmere3d I had the same thing with a fresh DuetPi installation.
Can you check what it posts if you type sudo journalctl -u duetcontrolserver into putty.
For me i think it had to do with dissimilair firmware versions on the RPi and duet but i'm not sure. When i updated to the newest stable release (3.4) it started working again. -
Skip desktop view in SBC mode
Hi all,
I was wondering if there is a way to skip the desktop screen when starting up my printer using an RPi. Right now when it boots up it shows the desktop screen off the RPi for a couple seconds before starting DWC.
Thanks in advance,
Piet. -
Website DWC does not work
Hi all,
I'm running in SBC mode.
Yesterday i accidentally deleted a directory from my SD card which made it so the UI wouldn't show on the rpi screen. I opted to go for a new install so I flashed a new image of duetpi and updated RRF to 3.4RC2.
Now it does not show the web interface in the browser (I am using the right IP). I can connect to it using SSH and it does show the interface on the rpi screen just not in the browser. Strange thing is normally when i scan for IPs using advanced IP scanner I can see a dropdown arrow which shows the webpage however now that's not the case.
I've uploaded the new 3.3 DWC files to the /www folder but it's still not working.
Does anyone have any idea?
Thanks in advance, Piet.
-
RE: Mesh bed leveling without M557
For future reference, this works.
The probe file can be adjusted to allow for different types of probing.if !exists(param.X) || !exists(param.Y) ;if parameter X and Y are given echo "Make sure parameter X and Y are given (C and S optional). Aborting probe move." ;notify user G1 X{param.X} Y{param.Y} Z{sensors.probes[0].diveHeight} F6000 ;move to given X and Y coordinates and predefined diveheight M400 ;wait for moves to finish M98 P"waitForHeaters.g" H01 M568 P0 A0 ;turn the extruder heater off (interference changes sensor reading) G4 S1 ;wait 1 second M98 P"preprobe.g" ;call macro to determine triggervalue and see if it is okay to proceed probing ;M291 R"Probing." P" " S1 if global.proceedProbe = true ;if its okay to proceed probing if exists(param.C) ;if parameter C is given if exists(param.S) ;if parameter S is given G30 X{param.X} Y{param.Y} P{param.C} S{param.S} Z-9999 ;probe move else ;otherwise G30 X{param.X} Y{param.Y} P{param.C} Z-9999 ;probe move elif exists(param.S) ;if parameter S is given G30 X{param.X} Y{param.Y} S{param.S} Z-9999 ;probe move else ;otherwise G30 X{param.X} Y{param.Y} Z-9999 ;probe move elif (global.proceedProbe = false) ;if it isnt okay to proceed probing echo "Aborting probe move" ;notify user ;M292 M568 P0 A1 ;set the extruder heater to standby
if global.bedLeveled == 0 G32 M98 P"probe.g" X525 Y250 echo >"heightmap.csv" "Height map file generated at", state.time echo >>"heightmap.csv" "xmin,xmax,ymin,ymax,radius,xspacing,yspacing,xnum,ynum" echo >>"heightmap.csv" global.xMin,",",global.xMax,",",global.yMin,",",global.yMax, ", -1 ,",global.xSpacing,",",global.ySpacing,",",global.xNum,",",global.yNum var y = global.yMin var i = 0 G90 while var.i < global.yNum var x = global.xMin var j = 0 while var.j < global.xNum M98 P"probe.g" X{var.x} Y{var.y} S-1 M400 if var.j == 0 set global.meshLine = sensors.probes[0].lastStopHeight - sensors.probes[0].triggerHeight else set global.meshLine = global.meshLine ^ "," ^ sensors.probes[0].lastStopHeight - sensors.probes[0].triggerHeight set var.x = var.x + global.xSpacing set var.j = var.j + 1 echo >>"heightmap.csv" global.meshLine set var.y = var.y + global.ySpacing set var.i = var.i + 1
-
Writing M122 to file
Dear users,
I'm wondering if there is a way to write the diagnostics output of the M122 command to a text file using meta Gcode.
Thanks in advance, Piet.
-
RE: Mesh bed leveling without M557
@t3p3tony Smart! I don't have a heightmap saved, do you by any chance have an example so i can see how it's formatted?
-
Mesh bed leveling without M557
Dear users,
I noticed there is a possibility to create a mesh.g file and I'm wondering if i can use it to do the following. (I'm not totally sure how to use it so please enlighten me)
I have some hysteresis in my Z-probe. This means that if I run the G29 command and automatically probe all the predefined points, the value starts to shift to a point that the mesh is unusable. Normally before probing I measure the analog value of the probe and set a new threshold by adding a value to that measured value. Is there a way I can set a new threshold to trigger before every probe move in the mesh.g. I already have this code set up for regular bed leveling but I'm assuming I can't use the G30 command to do mesh bed leveling. Is this correct?
This is the code i already use:
probe.gif !exists(param.X) || !exists(param.Y) ;if parameter X and Y are given echo "Make sure parameter X and Y are given (C and S optional). Aborting probe move." ;notify user G1 X{param.X} Y{param.Y} Z{sensors.probes[0].diveHeight} F6000 ;move to given X and Y coordinates and predefined diveheight M400 ;wait for moves to finish M291 R"Waiting for extruder." P" " S1 M116 P0 S2 ;wait for extruder to reach temperature M568 P0 A0 ;turn the extruder heater off (interference changes sensor reading) G4 S1 ;wait 1 second M98 P"preprobe.g" ;call macro to determine triggervalue and see if it is okay to proceed probing M292 M291 R"Probing." P" " S1 if global.proceedProbe = true ;if its okay to proceed probing if exists(param.C) ;if parameter C is given if exists(param.S) ;if parameter S is given G30 X{param.X} Y{param.Y} P{param.C} S{param.S} Z-9999 ;probe move else ;otherwise G30 X{param.X} Y{param.Y} P{param.C} Z-9999 ;probe move elif exists(param.S) ;if parameter S is given G30 X{param.X} Y{param.Y} S{param.S} Z-9999 ;probe move else ;otherwise G30 X{param.X} Y{param.Y} Z-9999 ;probe move elif (global.proceedProbe = false) ;if it isnt okay to proceed probing echo "Aborting probe move" ;notify user M292 M568 P0 A1 ;set the extruder heater to standby
preprobe.g
if !exists(global.proceedProbe) ;if variable doesnt exist yet global proceedProbe = false ;initialize variable if exists(global.triggerVal) ;if a triggervalue has been defined if sensors.probes[0].value[0] <= 922 && sensors.probes[0].value[0] >= 200 ;if the sensorvalue is within acceptable range var measuredVal = {sensors.probes[0].value[0]} ;measure the sensor value G31 P{var.measuredVal + global.triggerVal} ;set the triggervalue to the measured value + the triggervalue ;echo "Measured sensor value is", {var.measuredVal}, ". Triggervalue has been set to", {sensors.probes[0].threshold}, "." ;notify user set global.proceedProbe = true ;set variable so probing can proceed else ;otherwise echo "Measured sensor voltage is out of range at ", {(var.measuredVal * 5)/1024}, "V." ;notify user set global.proceedProbe = false ;set variable so probing wont proceed else ;otherwise echo "The variable triggerVal has not been declared in the config.g file (default = 100)" ;notify user set global.proceedProbe = false ;set variable so probing wont proceed
So instead of using the G30 command to probe i use M98 P"probe.g".