***NOTE*** I've since applied Bill's fix and it works great for reaching the switch beyond the firmware's normal range limits... so see his answer below!
I use the Creality 3 V2 and one issue I've run across with the BLTouch leveling firmware I am using is that it limits x and y axis travel to 220 mm and yet the BLTouch leveling routine slews to the extremes of both x and y axis, thus interfering with the switch used to control filament changes.
Given that bed leveling routine is only done at the start of a print I figured one alternative to trying to find and/or compile another version of the firmware with extended limits would be to put a momentary push to open bypass switch inline with the green wire from the limit switch. I generally observe the first layer being printed anyways and so it wouldn't be that big of a deal to press a button that disconnects the signal wire (green) returning from the switch during the bed leveling routine.
Anyways, that was my thought on how to get past the issue. I may need a high value pull-up resistor between the red and green wire and perhaps a small capacitor to avoid a floating signal line and switch bounce.
Has anyone else running a BLTouch used this method?
Edit: Think I may have a similar yet more elegant solution that uses a single momentary SPDT switch and cutting the Normally Open connection on the bigtree-tech switch board. That way I'm reusing the existing pull-up resistor and capacitor on their board. I'll take some photos of the mod when I have it complete.
Oh, I understand what you're saying... I didn't catch that you're using my hack. If you're only able to print at 220, why not just put the switch at 223 instead... no need to go all the way to the end if you can't actually print there. Then you can use our default settings... of 220... which will stop at 217... then you double it, which when we move to 220, will actually go to 223. The switch mount included with the kit will work there.
The other option is to upgrade the firmware to the TH3D or Community versions which allow full travel.
Bill
I believe one of us is confused, likely me...
My switch with that same switch mount is at Y231. Note my Y15.5 move was after moving to a holding position and doubling the steps/mm.
Firmware won't allow machine to move to 231, stops me at 220.
All you need to do is enter the button location into the GCode Generator and it'll insert it into the proper place in the tool change gcode it creates.
(The GCode Generator is In the menu at the top of our web page.)
I'm not sure how you have a button at Y of 15.5 on the Ender 3 V2... it should be on the front of the printer, which is at Y227 on my machine. Y of 15.5 indicates it's at the back of the printer... but would interfere with homing at that location, I suspect.
I've linked to our Ender 3 V2 profile here: https://1drv.ms/u/s!Av2Y103sCRZ3ms4iOuVwaczn5SPK8Q
And here is the mount I use: https://cdn.thingiverse.com/assets/fb/5d/82/3c/31/3DChameleon_Ender_3V2_Endstop_Mount.stl
Finally, here's a pic of how mine is mounted:
Bill
I'm scratching my head on where to put this. I've got the Ender3v2, button is sitting at 231 via the switchplate from Thingiverse.
These work from console to manually force it to touch the button, just don't know where to put them in the tool change code.
g28 y ;home Y
g90 ;absolute positioning
m92 y80 ;default steps
g0 x55 y200 ;move short of button
m92 y160 ;double steps
g91 ;relative positioning
g0 x0 y15.5 f2000 ;touch button
g0 x0 y-1.5 f2000 ;back-off
Cool trick! I'll give it a go!
So... if I understand this correctly... my firmware is currently set up such that max X and max Y are 220 mm. I can't use the panel controls to manually move beyond there although the actual clearances allow the print bed and/or printer head to move beyond those areas. BLTouch measures at those extremes (0 55 110 165 and 220) along both X and Y axis.
Lets say I place my switch where it would presumably trigger at Y 223.0 (had I been able to move there without changing the steps/mm). Sounds like I'd move to Y 217.0 then double the steps/mm, move to Y 220.0 (via relative Y+3, which would really be 223.0 since we're doubled) then back to Y 217.0 (via relative Y-3, with steps still doubled). Then change back to original steps/mm? I'd imagine the gcode something like the following block:
G90; move to absolute mode
M82; turn absolute distance for the extruder
G0 X55.0 Y217.0 F5000; <--- 6mm shy of button location at Y=223mm, X picked to avoid bed clip
M92 Y160; temporarily double the steps/mm setting (to reach outside normal allowed Y range)
G91; move to relative mode
G0 X0 Y3 F2000; press the button (actually moves Y by +6mm since steps/mm doubled)
G4 P1300; dwell for 1.3 seconds (filament select)
G0 X0 Y-3; back off button (actually moves Y by -6mm since steps/mm still doubled)
; repeat above as needed for additional button presses...
; note: make sure we return to the original location prior to the button presses before
; restoring steps/mm setting.
M92 Y80; restore original steps/mm setting (we're now back at X55.0 Y217.0)
...and so forth?
P.S. I also like that your solution doesn't eat into my normal print bed range!😎
There's no need to do those advanced things. Here's a cool trick to play on the firmware. You can dynamically change the steps per mm setting of any axis. In our case, what we're going to do is move the button 1mm beyond the maximum amount of travel of that axis. You then can move to a holding position, short of the button, change the steps per mm and then press the button... and then change the steps per mm back to the stock and resume the print. In Marlin, the command is M92 Y160 or M92 Y80... and the holding position is shornted by an additional 3mm... so let's say your build area is 235mm... if your button is triggering at 236, you'd set it to 233 instead. The system will automatically move to a position 230, switch to 160, move 3 (really 6) which will press the button and move back to 230... at which point you return it to 80 steps/mm. You can then move all the way to 235 without triggering the button.
So... max travel is 235 (which the homing will never exceed) and the button is 236. We tell it the button is actually at 233 instead of 236. We move to 230... double the steps per mm... and tell it to move 3... but since we doubled it... it'll move 6... we can then reach the button... once we're done with the button, we move back to 230 (-3 mm)... reset the steps per mm and then resume the print.
Since the printer's boot up is at 235 max, that's what the homing routine will use as well, and they won't interfere with each other.
Bill