I never liked the mechanical endstop switch that was used in the Smartrap Mini build as it used to smash the hotend into the bed to trigger. And to use some sort of mechanical switch on the Smartrapcore designs, you'd need some sort of servo to lower it in place (I'm assuming this based on other designs) otherwise it would drag over the bed when you lower to the starting height for your first layer and probably bump your part on subsequent layers.
That being said, I didn't like the inductive sensor and went with the DC42 differential IR probe. It's worked fairly well, although works better with a Duet 0.8.5 than it does with the Ramps/Mega combination. Repeatability with the differential IR probe is good, but has to be adjusted if you change build surfaces like adding painters tape, switching to kapton tape, BuildTak or going back to plain glass. It's not too much trouble on the Duet 0.8.5 boards, but kinda annoying on the Ramps/Mega setup. Ofcourse, I imagine this would change with any sensor as you change the thickness of your build plate with the additional layers.
I did throw a design on Thingiverse that I use for the DC42 Differential IR sensor, and I think there are a few more up there that mount to the E3D hotend fans on Thingiverse. I think DjDemonD even did one that was adjustable also on Thingiverse.
Why not apply the same principle as deltas. Use a regular microswitch endstop at the bottom under the bed connected to z-max. Use landing gear/springs (something fairly lightweight to ensure the bed stops just short of this endstop when powered off). Set the firmware to home to z-max. Now the bed starts at the bottom when homed, once its up to temperature it rises up and prints.
As long as its physically level and your motor does not skip steps it will work and the endstop is easy to install.
ABL is a bit of waste of time on these printers, with the cantilevered bed I found physically levelling it easy enough, with a dual supported z axis its level. With ABL on moving the nozzle from one side of the bed to the other the z axis doesn't move at all.
Edited 1 time(s). Last edit at 08/27/2016 03:14PM by DjDemonD. Simon.
I've thrown together an adjustable endstop mount which I've design to retrofit to the modified AndreasL dual belt driven z axis which I am currently using. Will build it into a version of the front lower z bracket for this design if it works. I didn't get chance to actually fit it and test it last night - always the way; design and print a good new part and by the time its ready I'm too tired to fit it. Would probably be much easier with a leadscrew z axis.
If I have any concerns with the belt driven z axis it will be if the bed drops down too firmly onto the endstop so that it is triggered when asking the z axis to home. I've bent the microswitch lever up towards the z carriage to allow a bit of leeway if the bed hits it too hard when its not powered. The other idea was to use an opto-endstop with a long optoflag so even if the bed goes past the trigger point it won't damage the endstop.
I did look at the marlin settings, the Raise_before_homing setting, which is usually problematic as it tries to push the axis down before lifting it up, and it has no place to go, probably best set to 0. Entering a negative value here doesn't seem to be valid as nothing happens, I was hoping it would "lift" the axis before attempting to home. I might point this out to the marlin dev team, as they are presuming that moving z positively lifts the nozzle rather than drops the bed.
Oh well more this evening hopefully I get chance to test it. I'm looking forward to getting rid of ABL.
Edited 2 time(s). Last edit at 08/30/2016 03:45AM by DjDemonD. Simon.
Actually, I noticed if you have a Z MAX endstop and the bed rests on this, then Marlin won't attempt to move the Z axis out of the way because it already knows it's at the Z maximum travel.
I did have a little L bracket that held a limit switch underneath the existing cantilever Z bed bracket. It worked pretty well as it was no higher than the GT gear on the stepper and when the Z bed was at the max distance it was pressing the microswitch down.
That makes sense, though it should still do the endstop repeatability test shouldn't it?
The reason I ask is that with the weight of my bed pressing on the switch it will not necessarily sit at its "trigger point" but possibly some way past it. I need to get it installed and see how it actually works, its been a while since I had a mechanical z endstop. I might be able to adjust the switch so that with the bed at its physical z=max position, the switch is just triggered. However I've always found getting my bed moving from z=max takes a tiny bit of effort for the motor which sometimes skips, I try to run this motor at the lowest current level I can, given it is energised and under load constantly (even with a counterweight) during use.
This is why I've posted to Marlin team to ask whether we can have a lower_before_homing option for this configuration (or allow a negative value for raise_before_homing), then the firmware would lift the bed slightly then descend to the endstop, trigger it, then check its repeatability and then set the z=max coordinate.
Edited 1 time(s). Last edit at 08/30/2016 06:46AM by DjDemonD. Simon.
Now I read Marlin are testing their universal bed levelling system which can compensate for non-flat beds, and I am conflicted as to whether to keep the ABL sensor, since I have one corner of my bed which deforms slightly when hot.
Maybe I'll do both, have the z endstop, and the abl sensor and use them as required.
That makes sense, though it should still do the endstop repeatability test shouldn't it?
If you tell it to home against Z Max instead of Z Min, it will do the repeat-ability test as normal. If you only connect a Z Max and don't use it for homing, it doesn't do the repeat-ability test. I was always using it to stop Marlin from moving the Z axis in these RC candidates. I've since removed it and no longer have any of my printers on Marlin.
I found Marlin wasn't obeying the maximum speed or doing the accelerations properly and was not following the limits set in the configuration. I noticed this as when I went to a geared extruder my Marlin setup would just chew the filament. I changed all three of my CoreXY printers to Duet 0.8.5 controllers and using the same values I had in Marlin for acceleration and max feedrates the coreXY runs smoother and doesn't chew the filaments. The only change was Mega/Ramps/Marlin to Duet 0.8.5 with RepRapFirmware-DC42. I read somewhere that Marlin will combine moves to try and speed up processing which I imagine was causing it to move certain things faster than they were supposed to.
Fair enough, I have raspberry pi/octoprint running on my machines now so its not going to be a big change, they've been a bit hit and miss, which I think was power issues. I do like the TMC2600's on the duet wifi.
Firmware changes (marlin 1.1.0 RC) were
Use z_max endstop enabled
homing direction z = 1 (max)
Manual home positions z=170 (which is my rough z height, you'll need to measure yours).
Once you have the rough z height, you can use babystep z to get a precise nozzle to bed offset. Only marlin RC versions give a readout of the distance babystepped.
Since you aren't probing you can't use m851 to enter it you need to use m206 zM where M is the offset but inverted, so if you babystepped down -1mm then you enter m206 z1, m500 to save then you're all good.
Managed to kill an arduino, dodgy endstop board shorted it.
Edited 2 time(s). Last edit at 08/31/2016 02:40AM by DjDemonD. Simon.
Back on the topic of getting rid of z probes. So my bed level went out and I decided to try the mesh bed levelling feature in marlin rc7 bugfix.
And I can genuinely say I am impressed.
If you haven't tried it apologies to those who have been using it for ages, you enable mesh bed levelling in configuration.h and enable the manual bed levelling option for the menu.
Then select "level bed" from the LCD menu, the machine homes, then positions the nozzle just above the bed (has to be within 4mm, so if its still nowhere near change your "manual home positions") at one of 9 points (you can select more).
You should have the bed and nozzle heated to printing temperature, this is important.
You can jog the z axis up and down using the encoder wheel, doing the paper test or feeler gauge nominally 0.1mm.
Then click the encoder wheel.
It moves to the next point and you repeat this until all 9 points are measured. This then creates a gcode run at machine startup which modifies the z height depending, on where in x and y the nozzle is positioned. This will allow for beds that are not flat. This helps me as my aluminium plate deforms slightly when hot and my 500mm 8mm rods sag slightly in the middle.
Save settings to eeprom (m500), don't forget to do this bit. Also this process sets your z home offset, to fine tune it, much like delta auto-calibration does.
Now printing nicely, and manual levelling just got a bit cleverer.
I did decide to allow it to grip the paper a bit tighter at the front and left of my bed and this is the area that tends to deform more when hot, when I used even grip for all 9 points, the nozzle was still a bit high over the front left area. I believe you can also modify the heights by gcode.
Regarding z endstop reproducibility I settled on homing z alone then homing all in my start gcode, so the carriage gets lifted from the endstop if it's resting on it, then rehomes to the endstop trigger point.
This rack and pinion system from the Wilson II could probably be adapted for a Z-probe. It works great on my Wilson II. It does require so extra X clearance (about 10 to 15mm) on each side of the bed for engaging and disengaging the probe.