Ultimate 3d printer upgrades
I have been operating an Anet A8 3d printer for some time and have made some major upgrades to it along the way. This blog post serves as a place to document my trials and successes with this very low cost printer.
We print a lot of parts for a customer and have been getting good results but have also been spending increasing amounts of time on maintenance and replacing worn out parts.
I printed a lot of parts to replace the worst bits of the acrylic frame, add some decent belt tensioning parts and the obligatory Z height adjustment screw. In my first week of printer run time I upgraded belt grips etc because I couldn’t get sufficient tension to stop ringing in the belts and poor print accuracy.
I bought borosilicate glass for the bed and use hairspray for bed adhesion control and easy release of the prints.
The linear rails supplied in the kit were chrome plated rods, which quickly wore out and revealed the steel under the chrome plating. The bearings ate a lot of the chrome and were ruined. I upgraded to stainless steel precision ground rods which cost nearly half the amount of the original purchase of the printer. I also replaced all the bearings at the same time.
Having the printer sitting on top of other gear I own, due to lack of table space was probably the biggest mistake I made initially. This meant that the printer wasn’t on a totally flat/level/solid surface and was noisy and difficult to square up.
I fixed this by lapping three paving slabs together until they were all making good contact with a straight edge along it’s length. These are definitely not as high quality as granite reference surfaces, but I managed to achieve flatness I was happy with at a low cost. A flat heavy surface in itself is an enormous upgrade for quiet operation, but the possibilities it provides are worth more.
I can now square the whole machine using engineers squares and other measurement/test tools that need a flat surface to sit on. I can compare heights in different locations because the surface is very flat and the equipment can be placed repeatedly with hardly any error.
I got a cheap dial test indicator from eBay, with a magnetic base and positioning arm. I ground the bottom of a heavy piece of steel flat enough to sit steadily on the surface of the slab. This serves as a base to attach the magnetic indicator stand to, and can be moved as needed on the slab.
Levelling the bed is a process that uses the indicator, and it results in the bed being level to a very close tolerance, relative to the surface the printer is sitting on. I adjust the Z height separately using the corner of the bed and paper for checking the gap between the bed and nozzle.
Because the bed is set up so flat, I know that the levelling is good before starting any Z height adjustment and can avoid the long task of checking each corner against the nozzle.
Levelling the X axis (with the two z motors disabled) is a similar process, the axis is levelled by comparing the height of the two leadscrew nuts, relative to the flat surface of the slab.
The levelling process described in most 3d printer setup guides is painfully slow compared to my method. Typically the methods described require multiple iterations of enabling steppers, homing, disabling, carefully moving the machine by hand one axis at a time to check the bed-nozzle distance at each corner of the bed. This is error prone and tedious. I now do a similar process to check but I never disable the motors and I directly issue gcode commands to move the machine to a suitable location to check the bed-nozzle gap.
I now get perfect bed adhesion and the prints are easy to release and have a consistent thickness of the brim. To avoid upsetting the relatively bendy printer frame, I remove the glass bed before pulling prints off.
Around the time I was getting really happy with the results, the X axis motor completely locked up during a print and ruined the print and messed up the squareness of the machine. I found the glass bed on the floor and completely lost two of the bulldog clips that secure it. They probably landed in a box of components and are still yet to be discovered.
I replaced the motor and carried on printing. About three prints later, there was a slight issue with X axis losing a few steps and the offset ruined the print. It probably ran into a bump in the print while making a rapid move, the small offset was enough to spoil a visible part of the print.
I decided closed loop X and Y axis control was now a must for printing this volume of parts. I ordered two of the MKS Servo42 hybrid servo-stepper motors from eBay. Investigating how I’d fit these to the existing electronics of the printer, I spotted that RAMPS boards have the stepper drivers as modules on sockets and the Servo42 units are supplied with a breakout board from this module socket. This means that with a RAMPS main board I can plug in the new Servo42 motors directly where the stepper modules would fit, and for Z and extruder drive I can use the normal stepper driver modules.
Looking around at what was available, I found an ARM based board running smoothieware, compatible with the arduino mega pinout. This means at the same time I can upgrade from the Atmega 16 bit CPU to an ARM cpu running at 100MHz.
I should be able to get higher step rates due to the faster processor, which in turn means I could use more microstepping and still reach higher speeds than before.
All the components of the new system are able to operate using up to (and in some cases, beyond) 24V supply. I have ordered a 24V supply to go with these upgrades and will post more as it happens.