Euclid Probe / Railcore frustration. Any advice?
-
Hey all!
I've been running absolutely fine for quite some time, so I decided to make life interesting, and change probes.
I've been reading for days.Running: Board: Duet 2 WiFi (2WiFi)
Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.1.1 (2020-05-19b2)
Duet WiFi Server Version: 1.23I tried about 3 different people's scripting for the euclid, and I still cannot complete a homing cycle.
I was finally pointed to the euclid example firmware files for the probe, and while they get "most of the way there", they continually tell me I have to replace the probe to it's dock manually"
If I post My files, would anyone mind checking to see where I'm going wrong?
Thanks so much!
-Steve; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.1 on Tue Jun 09 2020 01:46:51 GMT-0400 (Eastern Daylight Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"RailCore II ZL" ; set printer name M669 K1 ; select CoreXY mode ;Paneldue M575 P1 B57600 S1 ; paneldue comms parameters ; Network M552 S1 M557 S"Lynch WiFi Main" P"internet4u" M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ;Filament Sensor M591 D0 P1 C"e0_stop" S1 D0; Simple Filament sensor for extruder drive 0 is connected to E0 endstop input, enabled, M591 D0 ; display filament sensor parameters for extruder drive 0 ;Leadscrew locations M671 X-16.22:-16.22:290 Y23:274:150 S10 ;Front left,(-10,22.5) Rear Left (-10.,227.5) , Right (333,160) S7.5 is the max correction - measure your own offsets, to the bolt for the yoke of each leadscrew ; Drives M569 P0 S0 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes backwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S0 ; physical drive 3 goes backwards M569 P5 S0 ; Drive 5 goes backwards Front Left Z M569 P6 S0 ; Drive 6 goes backwards Rear Left Z M569 P7 S0 ; Drive 7 goes backwards Right Z M584 X0 Y1 Z5:6:7 E3 ; set drive mapping M350 ; configure microstepping without interpolation M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X201.50 Y201.50 Z800.00 E386 ; set steps per mm M566 X900.00 Y900.00 Z12.00 E120.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z180.00 E1200.00 ; set maximum speeds (mm/min) M201 X3000.00 Y3000.00 Z500.00 E1200.00 ; set accelerations (mm/s^2) M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X320 Y320 Z280 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop" ; configure active-low endstop for low end on X via pin xstop M574 Y1 S1 P"ystop" ; configure active-low endstop for low end on Y via pin ystop ; EUCLID Probe M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; M558 K0 P5 C"^zprobe.in" H8 F300 60 T9000 A3 S0.01 ; K0 for probe 0, P5 for NC switch, C for input pin, ; ^ for enabling the native pullup resistor on Duet 2 ; hardware running RRF3 ; H dive height of 8mm, F300 probing speed 6mm/sec, ; T9000 travel speed 150mm/sec, ; A3 number of probes 1, S0.01 max tolerance of 0.01 ; G31 K0 P500 X-16.4 Y-29.4 Z0.90 ; CHECK for LOOSE things first! set Z probe trigger ; value, offset and trigger height. Higher numbers ; makes nozzle closer to bed ; switch plunger is 16.4mm to the LEFT and 29.27mm in ; FRONT of the nozzle. Switch triggers 0.9mm BELOW nozzle ; ; if you have to move the nozzle away from the bed, ; decrease the G31 Z value by the amount of baby stepping used. M557 X7:305 Y1:303 S20 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 ;M307 H0 B0 S1.00 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4725 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H0 A240.3 C608.7 D8.2 S1.00 V24.1 B0 ; Bed Heater M307 H1 A270.7 C90.4 D6.7 B0 S1.0 ;Heater 1 model ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S0 H1 T45 ; set fan 1 value. Thermostatic control is turned on ;M950 F2 C"fan1" Q500 ; create fan 2 on pin fan1 and set its frequency ;M106 P2 S1 H1 T45 ; set fan 2 value. Thermostatic control is turned on ; Tools M563 P0 S"Extruder" 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 ; Custom settings are not defined M950 F3 C"duex.fan3" M950 F4 C"duex.fan4" M106 P3 S0.5 ; LED half brightness M106 P4 S0.5 ; LED half brightness ; Miscellaneous T0 ; select first tool
; *********************************************************** ; Euclid Probe Fixed Dock M401 Deploy Probe Macro ; RRF3.X Firmware Example ; saveas system/deployprobe.g ; comments and echo statements throughout are provided for convenience ; *********************************************************** ; echo "Running deployprobe.g" ; if !move.axes[0].homed || !move.axes[1].homed ; If the printer hasn't been homed, home it ; M98 P"0:/sys/homexy.g" ; uncomment next line to echo the probe deploy state echo "Object Model deployuser token =" ^sensors.probes[0].deployedByUser M564 H1 S0 ; Allow movement BEYOND axes boundaries (for Y to reach probe dock) G91 ; relative positioning echo "Lift Z in advance of deploy" G1 H2 Z15 F3000 ; move Z 15 for clearance above dock. ; ; need to figure out some safety check on this G90 ; absolute positioning ; echo "Probe Value =" ^sensors.probes[0].value[0] if sensors.probes[0].value[0]!=1000 ; if sensor is value other than 1000 do this ; uncomment next line to echo the probe deploy state ; echo "deployuser token = " ^sensors.probes[0].deployedByUser ; echo "Probe State = " ^sensors.probes[0].value[0] abort "deployprobe start value Probe already picked up. Manually return probe to the dock" ; if we're here we know it's becasue the above is true which I assume is because you have an NC switch as a probe. ; echo "Passed first logic test to deploy probe" ;G1 x17 y292 ; Stow Clear point ;G1 x17 Y295 ; Stow Home Point ;G1 X48 Y295 ; Stow Enter Point G1 x17 y292 F6000 ; move adjacent to probe dock location M400 ; wait for moves to finish ; echo "Probe Pickup while loop running" ; uncomment next line to echo the probe deplot state ; echo "Object Model Deployuser token (before while loop) = " ^sensors.probes[0].deployedByUser while sensors.probes[0].value[0]=1000 G1 x17 Y295 F3000 ; move over dock G4 S1 ; pause for pickup echo "Probe Value =" ^sensors.probes[0].value[0] G1 X48 Y295 F1200 ; slide probe out of dock - slowly M400 ; G4 S1 ; pause 1 seconds ; the following check is to halt the while loop from repeating after 1 try at deploying the probe echo "Iteration = " ^iterations if iterations=1 break echo "Probe Pickup while loop complete" ; uncomment to echo the probe deplot state ; echo "Object Model Deployuser token (after while loop) = " ^sensors.probes[0].deployedByUser G90 ; absolute positioning G1 X150 Y150 Z10 F3000 ; move bed to clear probe from build surface M400 ; wait for moves to finish if sensors.probes[0].value[0]!=0 ; uncomment to echo the probe deploy state echo "Object Model Deployuser token (in abort if section)= " ^sensors.probes[0].deployedByUser abort "Deployprobe endvalue not 0 Probe not picked up! Deploy cancelled." M564 H1 S1 ; Restrict movement to within axes boundaries (for normal Y movement) echo "Macro deployprobe.g complete"
; *********************************************************** ; Euclid Probe homez.g Example Macro ; RRF3.X Firmware Example ; saveas system/homez.g ; comments and echo statements throughout are provided for convenience ; *********************************************************** if !move.axes[0].homed || !move.axes[1].homed ; If the printer hasn't been homed, home it M98 P"0:/sys/homexy.g" M561 ; clear any bed transform M290 S0 R0 ; clear baby steps per Wes C G91 ; relative positioning M400 ; G1 H2 Z6 F6000 ; lift Z relative to current position G90 ; absolute positioning ; echo "Call deployprobe.g macro" M401 P0 ; This runs macro file deployprobe ; echo "Return" G1 X145 Y162.5 F9000 ; go to first probe point M400 ; echo "G30 S-2 Command" G30 -2 G1 Z10 M400 G4 P500 ; echo "Call bed.g macro" M98 P"0:/sys/bed.g" ; tram bed ; echo "Return" G1 X145 Y165 F9000 ; go back to the first probe point and reprobe 0 in case it moved G30 ; echo "Call retractprobe.g macro" M402 P0 ; retract probe ; echo "Return" G1 Z10 F600 ; lift Z relative to current position G90 ; absolute positioning M564 S1 H0 ; G1 X150 Y0 F9000 ; move carraige to center front
-
Euclid provides a 4 point bed leveling example, I have a railcore, which uses 3 point tramming, so I pointed the script to My Bed.g script.
I assume that is correct?
sorry for the huge post.
-
This is the error I keep getting....
1/15/2022, 9:23:15 PM deployprobe start value Probe already picked up. Manually return probe to the dock
Error: Homing failedI was told that the script setup as I have it, should be able to tell whether or not the probe is already picked up, and simply act accordingly.
That does not appear to be the case.
Using the three wires, My probe lights are on all of the time, and turn off when it probes.
Normal probe state shows "not triggered" and changes if I hit the micro switch.
My homeall.g is the only script that runs all the way through.
If I try to home only Z, it defaults to the above error.
-
Can you please re-submit your code from your first5 post but using the code insert function of the forum? (The button looks like </>).
I have a sneaking suspicion that your code is not indented properly so your if commands are not working properly so it is just aborting instead of jumping past the abort.
-
@steve-lynch said in Euclid Probe / Railcore frustration. Any advice?:
; echo "Probe State = " ^sensors.probes[0].value[0]
Have you tried to uncomment this? It will tell you what switch value the duet sees before it aborts.
; echo "Probe State = " ^sensors.probes[0].value[0]
Also, in the DWC dashboard, the probe value should be 1000 when the Euclid is not attached to the head and 0 when it is (and 1000 if it is attached to the head and you press the switch).
-
This post is deleted! -
@alex-cr My apologies... I didn't even know that was a thing.... I fixed it! I can see where this makes it much easier.. again, sorry about that.
-
@zapta Probe value is reading properly as you asked.
This is what it's showing for probe value in console:
1/16/2022, 12:48:55 AM G28
Object Model deployuser token =false
Lift Z in advance of deploy1/16/2022, 12:49:00 AM Probe Value =0
deployprobe start value Probe already picked up. Manually return probe to the dock
Object Model deployuser token =true
Lift Z in advance of deploy1/16/2022, 12:49:05 AM Probe Value =0
deployprobe start value Probe already picked up. Manually return probe to the dock
Error: Homing failed -
@alex-cr said in Euclid Probe / Railcore frustration. Any advice?:
Can you please re-submit your code from your first5 post but using the code insert function of the forum? (The button looks like </>).
Fixed! Submitted as requested.
I have a sneaking suspicion that your code is not indented properly so your if commands are not working properly so it is just aborting instead of jumping past the abort.
This is the 2nd time someone has mentioned indentation today... I'm not clear as to what the rules are for indent.
-
@steve-lynch
No worries. Just makes it obvious when dealing with meta commands.Ill take another look now.
-
This post is deleted! -
@arnold_r_clark said in Euclid Probe / Railcore frustration. Any advice?:
no conditional g code required
@Arnold_R_Clark, your code looks clean and easy to read. One reason people add conditional gcode is for extra safety. For example, what will happen with your code if something will go wrong with placing the probe away and it will stay on the head? Will it then crash when you will try to print?
-
@zapta Thanks for the second set of eyes on this dude!
That's kind of where I'm at... I can make the machine move anywhere I want, moves are easy... it's the conditional code as you guys call it, that's got me twisted. I understand that it's supposed to be an "If This, Then That" type of flow, but That's kind of above My pay grade. I'm not finding much in the manual to outline how that type of code works.
Like I always do, I'll at least document, and share My working code with others if I ever get it sorted.
I'm almost 100% certain that My problem is that I need to either uncomment, or change variables in the conditional stuff. The problem is, the example scripts provided by Euclid don't really make it clear to a non-coder like me, what variables are there for reference, and which ones should be changed.
-
@arnold_r_clark
Thank you very much! The conditional code is what I'm struggling with. I'm concerned about it crashing if it doesn't get stowed before it gets turned off, or if a print fails, and I re-start it remotely, or whatever.
Your code is basically how I started off.... Just a series of movements.
Then everyone started telling me that I was going to destroy my machine, and I had to set it up to detect the presence of the probe.
I think at 48 years old, considering that I've never stepped in front of a moving train, or fallen off a building, or anything like that, It's probably safe to say that I'm capable of checking the head before I start a print..
It would just be nice to have the safety of the code.
-
@steve-lynch, this is how I check after the probe was supposed to drop.
M400 G4 P250 ; Wait 250ms if {sensors.probes[0].value[0]} < 750 echo "Error: Clickey not dropped. Value: " ^ {sensors.probes[0].value[0]} M112 ; Emergency stop.
-
This post is deleted! -
@steve-lynch the conditional gcode checks in the Euclid examples ARE safety checks. You don't need extra devices or sensors or anything. The change in probe state is reliable.
If you dont want conditional gcode checks then use the Euclid RRF2 macro examples. Those are tried and true. The developement of Euclid was done under RRF2.
Where have you been soliciting advice from? I do not see any questions or requests for help either at the Euclid discord channel, or in the Railcore discord. The Euclid discord is primary support venue.
As to the answers to some of your questions- which are hard because of the deleted posts along the way-
-
You can probe more than 3 points to calculate 3 point leveling.
-
If your LED's are on with the probe half disconnected then you have mis-wired the device.
-
condiotnal gcode documentation- I am not a coder either but the documentation here in the conditional gcode forum and the dozuki are where I learned what I needed to know and implement.
https://duet3d.dozuki.com/Wiki/GCode_Meta_Commands -
As to whether or not the checks are required- I think that they are worth having. As all things mechanical, nothing is foolproof, only small probablilities. You'd be surprised how quick an errant screw or nozzle clearing needle will find its way to the magnets and complete the circuit.
If you need more specific help, come join us at the Discord channel linked in the docs.
-
-
I'm not a discord user, I mean, I occasionally log in if I have to, but I can't stand the platform. I have been seeking help in the railcore group, and a couple other 3d printing groups. I didn't know there was an official support discord.
My probe is behaving as it should. Probe value is zero if it's connected, and 1000 if button is depressed, or probe is removed.
I actually want to use the conditional code, I just don't understand it. I have the example .g files you provide, but I don't know what to uncomment, or any of that.
I build CNC tool changers, I'm quite aware that errant debris can cause huge problems in devices. I realize a probe will probably just break, or fall off, but I'm used to a 3 LB razor blade going 25,000 rpm.... one of those gets away from you, and it's a real shit show. So I'm a big fan of safety checks.
I'll follow your link for the meta commands.
If I can't sort it out, I'll bite the bullet, and hop on discord I guess.
-
@steve-lynch I watch the Euclid channel and some of the other printer channels there. It the least of the evils...
To confirm, what is the issue you are trying to wrangle?
I assume that you are using fixed dock setup.
To confirm, you are using the examples from either the euclidprobe.com or git.io/euclid repo. They should be the same.
As far as the echo statements, and which need to or are are commented out, you should not have to touch them. There are really debug statements to aid users in tracking what is going on. you can comment them all out if you want.
I put them in and left them because of all the effort to figure out the proper syntax. I felt it was easier to keep in and comment it out in case someone down the road needed them.
For example in the deployprobe.g, the "Probe Value =" is the token that is displayed on the DWC interface.
; *********************************************************** ; Euclid Probe Fixed Dock M401 Deploy Probe Macro ; RRF3.X Firmware Example ; saveas system/deployprobe.g ; comments and echo statements throughout are provided for convenience ; *********************************************************** ; echo "Running deployprobe.g" ; if !move.axes[0].homed || !move.axes[1].homed ; If the printer hasn't been homed, home it ; M98 P"0:/sys/homexy.g" ; uncomment next line to echo the probe deploy state echo "Object Model Deployuser token =" ^sensors.probes[0].deployedByUser M564 H1 S0 ; Allow movement BEYOND axes boundaries (for Y to reach probe dock) G91 ; relative positioning echo "Lift Z in advance of deploy" G1 H2 Z15 F3000 ; move Z 15 for clearance above dock. ; ; need to figure out some safety check on this G90 ; absolute positioning ; uncomment next line to echo the probe value ; echo "Probe Value =" ^sensors.probes[0].value[0] if sensors.probes[0].value[0]!=1000 ; if sensor is value other than 1000 do this ; uncomment next line to echo the probe deploy state ; echo "deployuser token = " ^sensors.probes[0].deployedByUser ; echo "Probe State = " ^sensors.probes[0].value[0] abort "deployprobe start value Probe already picked up. Manually return probe to the dock" ; if we're here we know it's becasue the above is true which I assume is because you have an NC switch as a probe. ; echo "Passed first logic test to deploy probe" ; Dock side position is at X0 Y30 ; Docked probe postion is at X0 Y0 ; Dock exit point is at X65 Y0 G1 X5.0 Y30 F6000 ; move adjacent to probe dock location M400 ; wait for moves to finish ; echo "Probe Pickup macro running" ; uncomment next line to echo the probe deplot state ; echo "Object Model Deployuser token (before while loop) = " ^sensors.probes[0].deployedByUser G1 X0 Y0 F3000 ; move over dock G4 S1 ; pause 1.0 sec for pickup ; uncomment next line to echo the probe value ; echo "Probe Value =" ^sensors.probes[0].value[0] G1 X65 Y0 F1200 ; slide probe out of dock - slowly M400 G4 P500 ; pause 0.5 seconds echo "Probe Pickup complete" ; uncomment to echo the probe deploy state ; echo "Object Model Deployuser token (after while loop) = " ^sensors.probes[0].deployedByUser G90 ; absolute positioning G1 X150 Y150 G3000 ; move to the center of the bed M400 ; wait for moves to finish if sensors.probes[0].value[0]!=0 ; uncomment to echo the probe deploy state echo "Object Model Deployuser token (in abort if section)= " ^sensors.probes[0].deployedByUser abort "Deployprobe endvalue not 0 Probe not picked up! Deployt cancelled." M564 H1 S1 ; Restrict movement to within axes boundaries (for normal Y movement) echo "Macro deployprobe.g complete"
-
@arnold_r_clark said in Euclid Probe / Railcore frustration. Any advice?:
conditional g code is NOT required for that to process to occur.
This practice is called 'defensive programming'. That's having a gracefully handling also for conditions that 'can never occur'.