A friend has recently gifted me a 3D printer, a Geeetech i3 and since then I’ve tuned the printer and tried to improve the output quality with decent success.
Today I had the need to print something quite large and I had the need to center the print bed to match what I have in the slicer.
The Geeetech i3, a cheap clone of the great Prusa i3 designed by Josef Prusa, has a useful gap between the bed surface and the position found with the use of the endstops: it prevents bed collisions in case you have a non-levelled print bed.
On the other hand, this gaps is not reported in Cura (the slicer I’m using) so I had to manually account for that gap when placing my model on the bed for slicing: not a big deal, just move the item a little bit on the right, about 15mm…
Today I had enough of that manual adjustment, possibly because I spent almost an hour trying to find the right position for my wide print.
After a long and tedious search on forums, guides and websites, numerous failed attempts and wasted filament along with the two-plus hours spent on this I finally found the solution, which is obviously very simple, once you find it.
The Geeetech i3 uses the great Marlin as its firmware and luckily you can simply connect to the printer using the provided USB cable and a serial terminal and interact with Marlin.
Sadly my usual terminal tool (MobaXterm) isn’t capable to perform such connection because Marlin is configured to use a weird 25000bps connection speed and MobaXterm doesn’t provide the ability to specify a custom connection speed. I had to resort to TeraTerm, tuned it up to use the right speed (Setup > Serial port) and newline (Setup > Terminal) and finally got to talk with Marlin.
By Issuing the GCode command
M503 I got this response
Steps per unit: M92 X80.00 Y80.00 Z2560.00 E95.80 Maximum feedrates (mm/s): M203 X400.00 Y400.00 Z2.00 E45.00 Maximum Acceleration (mm/s2): M201 X5000 Y5000 Z50 E5000 Acceleration: S=acceleration, T=retract acceleration M204 S1000.00 T2000.00 Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s) M205 S0.00 T0.00 B20000 X20.00 Z0.40 E5.00 Home offset (mm): M206 X0.00 Y0.00 Z0.00 PID settings: M301 P22.20 I1.08 D114.00
It should seem pretty simple now: set the home offset to take that gap into account by sending to Marlin
M206 X-15 (I measured the gap to be very close to 15mm) and tested the setting by running a print.
This setting is going to be lost as soon you reset the printer, so there is the last command to send to Marlin to make this change permanent:
M500 stores all settings in the EEPROM.
Bye bye manual centering: it was about time!