Manual configuration of the printing plate is something that sometimes could be very hard to achieve. First of all, it requires you to build a variable hot bed surface. It means a plate able to be fine tuned. Secondary it requires a manual configuration activity
different times during the printer lifecycle. Installing a Zprobe endstop is something easy and will assure you better results because the values obtained by the firmware are 100% sure differently from the results obtained
using the classic piece of paper and the 'fantasy' to level manually a bed surface.
In order to install a Zprobe endstop you need to find (or draw) a project of a printing head able to activate the switch once it touches the printing plate.
You can obtain this in two different way. The first way is to use a screw installed just at the bottom of the printing head. This one touching
the plate surface will activate the Zprobe Endstop. The other solution is to use the head, itself, as Zprobe leveller mechanism. It means that, when the hot head touch the plate it touches the endStop also, who acts as a switch and communicate to the software that the Zmin position has been found.
The second option is the most complex option to achieve but it allows you to obtain also the most accurate results because in this case the distance between the plate and the head will be surelly zero when the head will touche the bottom of the printing plate.
Following you will see a picture of a mechanical endstop.
On the right you can see a picture of the connectors available on a ramp 1.4 board to use with Arduino. I used this board for my 'Printerina'
printer but you can use all the board you want without to change the concepts I am describing here (except the source code at the bottom that is valid only for Arduino and Marlin firmware).
In order setup the EndStop you will need to connect the two cables related to the NO position to the Zmin pins on the board. Each board, usually has 6 triples of pins X/Y/Z min and max. In a delta printer you have already used all the max connectors for your Max Endstops,
so, in this case, you will connect this switch to the Zmin 'signal' pins (there is no a specific direction for the two signal pins but be carefull to not connect a pin to the +5V 3rd pin of the Zmins connectors). If you need a better description of EndStops connector give a look at my tutorial
to configure Max Endstops in 'printerina' printer.
Now Look at the following picture:
This is the printer head I used in my printer. As you can see at the top of the frame, I installed the endstop.
The printer head is directly connected to a plastic surface. The plastic surface is not fixed to the main frame but is 'connected' just using 3 screws and 3 springs.
This means that when the head touches the plate, the plastic surface goes up. Moving up, it touches the endstop and close the circuit (Normally it was Opened). In this moment, the firmware realizes that the Zmin has been reached for that position and set the right value in the firmware.
The concept is easy to understand but you will see that it is also easy to implement. If you need some specific head built for this pourpose you can contact me or have a look at something available on thingiverse.
Using you preferred Arduino Framework, now, open the Marlin firmware and go to the Configuration.h File. In this file you should search for: the section named: Zprobe Options
The first thing to do is to enable the pin you used to connect the endstop to the board. There are different options but the one we selected for this delta configuration is to use the Zmin triple of pins. So, Enable it uncommenting the following line:
Be sure that also the following line is uncommented:
Now, there is an important section that you need to complete:
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0.3 // Z probe to nozzle Z offset: -below (always!)
This section is really important because it tells to the firmware that the excursion of the springs I used to maintain the head is 0.3mm (in my case). In few words, when the head
touches the plate, it moves of some microns up before to touch (and activate) the endstop closing the circuit. You need to tell the firmware how many mm the head went 'up', so that the firmware can understand that the real position
of the head is the one evaluated during the probe plus the XX millimeter of the excursion.
This information is something that you need to evaluate doing some tests so, leave it as it is for now and proceed with the rest of the configuration.
Now we need to configure the bed levelling algorithm. In order to do this serach for the section named: bed leveling
. In this area, select the algorithm you prefere and uncomment the right defined value. I prefere the most complex one
Obviously the most complex algorithm is the one who returns most accurate results but it is the one that requires more time during the execution of the G28 Command at the beginning of any print. In my case it needs about 2 mins to end the probe activity.
Before to compile and load the firmware you need to be sure that in the endstop section, the Zmin Endstop has been considered.
So, serch for the section named: EndSops Setting
, verify the endstops activated uncommenting the zmin one if needed and uncomment the following lines:
#define Z_MIN_PROBE_ENDSTOP_INVERTING true
In case you have problems executing the G28 command you can try to invert the logic setting to 'false' the value Z_MIN_PROBE_ENDSTOP_INVERTING
Now you should be ready to compile the firmware and to load it into your arduino board. Once the firmware has been loaded you can try to execute the following two commands:
G29 to Home all your axis
G28 to launch an autoprobe configuration
If you don't know how to execute manually these two command you can give a look at my tutorial
. I wrote it to explain you how to configure endstops but it contains an interesting section to describe you how to
use pronterface that is an easy interface you can use to send G commands to a 3d Firmware over a serial port.