This is a sled designed to carry the Z-axis endstop via an
arm with an adjuster for Z-height. The sled uses printable
LM8UU bearings to reduce weight.
The sled works via an electromagnet. When the X-axis moves
to MAX position, the electromagnet can be engaged to capture
the sled and thus tow it into position for Z-probing, or
disengage the electromagnet to dock the sled.
The electromagnet is engaged via a relay a pin on the Arduino (RAMPS).
The endstop mounts to the arm that mounts to the sled
using M3 bolts.
This sled requires updates to the firmware (Marlin). I am working on the code updates. Check back later for updates on the firmware changes.
You can see it in action here: https://www.youtube.com/watch?v=iPLJ0FUKZiM&feature=youtu.be
UPDATE: The repository for the code has changed names. The correct path is: https://github.com/ChuckBell/Marlin
UPDATE: Here are the specifications for the relay and electromagnet used. Both were sourced on eBay.
Relay: 1 Channel Isolated 5V Relay Module Coupling For Arduino PIC AVR DSP ARM
Electromagnet: 5.5 LB (2.5kg) Electric Lifting Magnet Electromagnet Solenoid Lift Holding 20mm
UPDATE: 12v for the relay was taken directly from the 12V 30A power supply (not from the RAMPS).
UPDATE: Code is now complete. You can find it at https://github.com/ChuckBell/Marlin. I have some ideas for an alternate sled design so watch this space if you don't like the current design. I'm thinking of using a mechanical latching system to do away with the electromagnet. Suggestions welcome!
UPDATE: Prototype code complete and tested. Seems to work but only have tested this about 100 times. ;)
CAUTION: this is still not refined. I have had much success but I cannot say for certain you will have the same. Use at your own risk.
You will need my fork of the Marlin code: https://github.com/oliasmage/Marlin
You may need to adjust the height of the Z probe in Configuration.h. Here are my settings. Depending on how you adjust the arm on the sled, what type of X-ends, carriage, and hot end you use, this may work for you. In other words, measure it yourself. ;)
define X_PROBE_OFFSET_FROM_EXTRUDER 20
define Y_PROBE_OFFSET_FROM_EXTRUDER 10
define Z_PROBE_OFFSET_FROM_EXTRUDER 2.75
You also need to connect the wiring as shown in the image. Be sure to connect to the first servo pins on the RAMPS. Google for this if you are not sure.
You will need a 12V electromagnet. The one I used is 20mm in diameter and 15mm tall.
You will also need a 12V relay board similar to the one shown in the photos. Wire the board, RAMPS, and relay as shown in the photo.
Add the following 2 lines to Configuration.h to enable the sled code:
define Z_PROBE_SLED // turn on if you have a z-probe mounted on a sled like those designed by Charles Bell
define SLED_DOCKING_OFFSET 5 // the extra distance the X axis must travel to pickup the sled. 0 should be fine but you can push it further if you'd like.
Tip: just copy your Configuration.h file from your existing Marlin code. That is easier than trying to update the file all over again.
Once your configuration has modified, compile it and upload it to your printer.
- You can use the G31 command to dock the sled
- You can use the G32 command to undock the sled (engages magnet)
- You can use the G30 command to perform Z probing with the new sled.
Be sure your Z axis is positioned so that the endstop is above the level of the print bed before you begin the z probing procedure. You can also use the adjustment for raising the Z axis when probing to help.
I welcome all feedback. It is my desire that, should this prove to be a viable, this solution be an alternative to those noisy and sometimes fickle servos. :P