A colleague spotted this Robotdigg SCARA Arm 3D Printer which sells at just US$280 + shipping and import VAT. As I was working on SCARA printer support in RepRapFirmware, this seemed an ideal low-cost platform to test it on. So we bought one.
In this blog entry, I describe my experiences with this printer as it arrived and what I needed to do before I could try printing with it. A subsequent entry will describe the conversion to Duet Ethernet electronics.
The printer was supplied fully assembled, wrapped in cling film and surrounded by lots of foam polystyrene in a large cardboard box. After unwrapping the cling film and vacuuming up copious quantities of tiny foam polystyrene beads, it looked like this.
Supplied in the same box was a USB cable and a 12V 5A power brick accepting 100-240V AC input. The mains lead supplied was very short and had a US-style 2-pin plug, but the mains inlet to the power brick was a standard figure-of-eight one, so I was able to substitute a longer mains cable with a UK mains plug.
Also supplied was a bag containing two spanners, two spare brass nozzles, and four Allen keys.
The printer is constructed from black 2040 aluminium extrusion, finished with blue plastic trim in the slots and black plastic end caps. The base comprises two pieces of extrusion in a T-shape, held together by a large aluminium pulley that is screwed into the top of both of them. At the centre of the pulley is a large rotary bearing – the proximal joint – and the rest of the printer apart from the extruder drive is supported by this bearing. There is a rubber foot under each of the 3 extremities of the frame.
The vertical axis is another piece of 2040 extrusion with a threaded rod at each side clamping it to the bearing at the bottom. There is a large metal eye at the top.
The proximal joint is driven by a stepper motor connected to the large pulley by a 10mm wide MXL belt. The motor rotates with the rest of the printer, while the pulley remains stationary.
Attached to one side of the vertical extrusion is a linear rail. A slider on the rail bears a 2040 horizontal extrusion, which forms the proximal arm. A stepper motor and leadscrew provide vertical drive to the proximal arm.
The distal joint is at one end of the proximal arm, and it is driven by a stepper motor at the opposite end of the arm through 2 stages of belt drive reduction using 10mm MXL belts. The distal arm is 2020 extrusion. One end is bolted to the distal joint, the other carries the hot end.
The hot end is similar in construction to the E3Dv6 but it is not a clone because the dimensions are different – for example the heatsink is 25mm diameter instead of 22mm. .It is clamped in place, allowing the nozzle height to be adjusted by several mm. The top has the same 16mm diameter as an E3Dv6, however the E3D hot end is shorter. There is no print cooling fan or Z probe.
The extruder drive is mounted on the back end of the base frame T and serves as a counterweight. It is a metal direct drive extruder with adjustable spring tension. The Bowden tube goes from there through the eye at the top of the printer and down again to the hot end. It is a whopping 900mm long.
The printer does not have a bed. This is not unusual for a SCARA printer, because the area reachable by a SCARA arm is often large and has an irregular shape. You could clamp a glass plate to the desk just in front of the printer, or stick blue tape directly on the desk and print on that as I did.
The electronics enclosure is a black acrylic box, mounted on the side of the vertical axis so it rotates with the printer. There is a 40mm cooling fan blowing air into the box on one side, and exhaust holes on the other. Power and USB connectors are at the top.
The electronics is an ATMEGA2560-based board that I didn’t recognise, with space for 5 plug-in driver modules (4 populated). There is a bed heater output even though this printer (like many SCARA printers) has no heated bed, and 3 other mosfets for heaters and fans.
None of the cables going to the electronics is labelled.
The three stepper motors whose labels I was able to read are type SL42STH40-1684A. The label on the 4th motor was obscured, but the motor looks the same as the other three.
The Robotdigg web site states The firmware is not Open Source, it’s Not Windows 10 compatible. But I connected it via USB to my Windows 10 computer anyway. The printer showed up as Silicon Labs CP210x USB to UART Bridge in the COM port listing within Device manager.
I loaded Pronterface and was able to connect to the printer at 115200 baud. The firmware announced itself as Marlin 1.02, Last Updated: Jun 24 2016 08:03:14 | Author: (Pavlo Gryb, sscara). So it’s definitely open source firmware, even if Robotdigg doesn’t supply the source to this particular build.
- This printer came fully-assembled rather than in kit form
- It is built almost entirely from off-the-shelf parts, so it is easy to modify
- A basic tool kit and 2 spare nozzles were included
- The finish was smart – black extrusion, with blue trim in most of the slots, and black end caps
- The bearings seem to be solid and free from play
- A proper linear rail and leadscrew have been used for the Z axis rather than the cheaper option of a wheeled carriage and threaded rod
- The large eye at the top makes it easy to move the printer
- The hot end has been trouble-free so far with no tendency to jam
- When I first ran filament through the hot end, some red filament was extruded before my white filament came though, so the hot end had evidently been tested
- This printer was inexpensive, costing less than many Prusa i3 clones.
The major mechanical issue with the printer as I received it was that the T-shaped base frame was far from rigid. I think was caused by a combination of inadequate design and minor damage during shipping. As mentioned above, the two base pieces of extrusion that for the T are held together only by being screwed to the large pulley, using 2 screws for each of the 2 pieces of extrusion. This did not create a rigid joint. The cheeks of the pulley had become slightly bent, and the hot end and nozzle wobbled up and down alarmingly.
In order to put a screwdriver to the screws securing the pulley to the extrusion, I had to remove the electronics box. This box was secured to the vertical extrusion using two M5 screws and T-nuts in the slot. Unfortunately the T-nuts were not the sort with springs to keep them in place when the screws are removed, so they fell down the slot. However, the screws securing the electronics were evidently too long, because they had left witness marks in the extrusion. So to was a simple matter to use Blu-Tak adhesive to hold the T-nuts in place and lined up with the witness marks when I needed to replace the electronics (having added an extra washer under each screw head).
It was also apparent from witness marks that the large pulley had slipped along both extrusions. There was a gap between the end of the extrusion forming the shaft of the T and the extrusion forming the bar. I was able to loosen the screws, slide the extrusions along the pulley (closing up the gap in the process) and tighten the screws, which removed most of the wobble.
However, in my opinion this method of fixing the two extrusions together is unsatisfactory. So I purchased two 2020 right angle brackets and some 10mm M5 screws and M5 slot nuts. I fitted the brackets between the arm and the step of the T, one on each side. I also replaced the Philips head screws securing the pulley to the extrusions by cap head screws, to permit better tightening and to allow the screws to be tightened or even removed using an Allen key, without having to remove the electronics box again.
Hot end fan and duct
On applying power to the printer, the hot end fan ran very noisily. Investigating this, I found that the front of the fan duct was bent into a concave shape when it was clipped on the heatsink. This meant that the screw holes for the fan were no longer parallel, which meant that the screws securing the fan to the duct were distorting the frame of the fan so much that the blades were contacting the frame. Loosening the screws provided a temporary fix.
Z leadscrew binding
When I sent a G28 ‘home all’ command, the printer successfully homed the proximal and distal joints, but failed to home the Z axis because the carriage got stuck before it reached the homing switch. This was due to poor alignment between the thrust bearing at the bottom of the leadscrew, the leadscrew nut attached to the proximal arm, and the Z motor at the top – caused the carriage to bind as the leadscrew refused to bend. Once again, due to the use of Philips head screws instead of socket head, I had to remove the electronics to gain access to one of several screws that defined the alignment of the thrust bearing with the vertical extrusion. I loosened a few screws, homed Z to allow the thrust bearing to find its natural position, and tightened the screws again. After that I was able to exercise the printer through its full Z range.
With the printer homed and still powered to energise the motors, I tested how far I could move each arm against the force provided by the motor. To my surprise, I found that both have significant movement. The distal arm is worst, it takes very little force to move it by 3mm. When I do this, I can see that the belt that drives the distal joint is moving relative to the small pulley driving it. The belt is taught. Under magnification, I can see that the teeth of the belt (labelled B154MXL) are narrower than the spaces between them – as they should be on an MXL belt. However, on the pulley the flats between the teeth are at least as wide as the flats at the top of the teeth – if anything, slightly wider. Clearly, the tooth profile of the pulleys is not the correct MXL profile. It’s also generally noted that MXL belts have significantly more backlash than the more commonly-used GT2.
The proximal joint gives 1.5mm movement at the end of the proximal arm with a little force applied – better than the distal joint, but still far too much. The larger radius of the large pulley probably accounts for the improvement. Again the belt is taut and I can see the belt moving relative to the small pulley, indicating once again that the tooth profile does not match the MXL belt.
I could attempt to fix this by purchasing new small pulleys, however the only suppliers I found were Chinese and there is no guarantee that they will have the correct profile. A better option may be to change them for GT2 pulleys and belts.
Some of the photos published by Robotdigg show two springs added, one on each arm, to pull the arm in a particular direction – for example, the first two photos here. So it’s clear that Robotdigg had problems with backlash too.
Later on, the belt between the proximal motor and the large pulley became slack. The proximal motor mounting bracket slides along an extrusion so that the belt tension can be adjusted – but the proximal motor itself has to be removed to get at the screws that secure the bracket to the extrusion! This is unbelievably stupid design. The proximal motor mounting bracket needs to be redesigned so that the screws securing it to the extrusion are clear of the motor. The extruder motor mounting bracket has a similar issue: you need to dismantle the entire extruder drive to gain access to the screws securing the extruder mounting bracket to the base extrusion.
Strengthening the base T-frame removed the problem of the nozzle wobbling up and down. However, as it swept the area in front of the printer, the nozzle height was far from constant. Clearly a printer of this construction needs some sort of levelling mechanism.
I designed an adjustable foot using printed parts and M6 screws, and fitted one at each of the 3 ends of the T-frame. I secured each one using two M6 screws, after removing the end caps from the frame and threading the two central holes at the end of each extrusion. You can find the design on thingiverse.
In the future I will mount one of my Mini IR Height Sensors on the hot end to make dynamic levelling adjustments when doing large prints.
I tried a number of movement tests, for example from X0 Y0 to X0 Y200 or X200 Y200. It was noticeable that the movement was very jerky. One possible cause would be a combination of friction and backlash. Although backlash is significant as previously noted, friction appears to be low. With power off, as I move either of the arms continuously in the same direction, I can feel the usual motor detents but nothing suggesting significant friction.
To investigate whether firmware could be responsible, I tested movement at very low speeds (100 mm/min). When I do this, I can hear the motors moving in bursts. This confirms that the cause of the jerky movement is the pre-installed Marlin firmware.
I briefly attempted movements that are just beyond the physical range likely to be available. At attempt to move to a Z position just out of range caused the motor to hit the mechanical endstop and skip steps. An attempt to move to a Y position just out of range caused the printer to go berserk and I had to turn it off. Clearly, soft endstops are either not implemented or badly mis-configured.
Long Bowden tube
The very long Bowden tube is likely to make it difficult to get good prints. A direct drive extruder would obviously be too heavy for the distal arm. However, I think the extruder drive could probably be mounted on the back of the proximal arm behind the distal joint motor, allowing a much shorter Bowden tube to be used. A shorter stepper motor and 3:1 geared extruder could be used to reduce the weight. The location at which the proximal arm is bolted to the leadscrew nut holder would have to be adjusted to re-balance the arm.
With the wobbly base frame reinforced and levelling adjustments added, it was time to try a print, despite the backlash and jerky movements being unresolved.
I decided to start with my standard quick test print, the Escher lizard. This is an undemanding print. For the print bed, I put strips of blue tape on the desk in front of the printer. The filament I chose was white RigidInk PLA+. When I tested this filament in my other printers, I found it unusable because it stuck to the bed far too well – to plain glass and to PEI, both heated to around 65C. So the reel has been sitting on my shelf for months. But with an unheated bed, a sticky filament could be just what I needed. Sure enough, it stuck so well to the blue tape that I often needed to replace the blue tape for a new print.
What surprised me most was that my first print from this printer actually worked. This was despite using an extrusion temperature of 195C, whereas RigidInk suggests 220-240C for their PLA+.
However, there were a few issues. The infill did not quite reach the perimeter on the left hand side – a consequence of the backlash I had observed. And once again, I could see that the arm was moving in short, jerky movements.
Printing was very slow. When slicing, I used the same speed settings that I use for my delta printer when doing a high quality print; but the print took 2 to 3 times longer than on my delta. I had 6mm retraction configured at 60mm/sec; but I could hear that every retraction was taking a long time.
The photo shows the lizard printed by the Robotdigg printer (white) along with the same model printed using my Ormerod Cartesian printer (red) and delta printer (green).
When the print had finished, I sent a M503 command to the controller. This revealed that the maximum speeds (M203) were set to just 30mm/min on all 3 axes and 70mm/min for the extruder. Accelerations (M201) were set to 300mm/sec^2 for X and Y, 200mm/sec^2 for Z, and 1000mm/sec for E. The M205 B parameter, which claims to be the minimum segment time in milliseconds, was set to 20000 which is clearly absurd. So I doubled the X and Y accelerations and maximum speeds, increased the E maximum speed to 3600mm/min, set the M205 B parameter to 20, then did another print. This time the print speeds were much closer to what I expect for this piece, although travel moves were still slow. Retractions were still slow, which turned out to be because this version of Marlin also had a parameter in the M204 command to control retraction acceleration. The print completed somewhat more quickly, with no obvious reduction in print quality.
I tried pushing the maximum speed up to 100mm/sec and XY acceleration up to 1000mm/sec^2, but this resulted in layer shifts. After reducing them to 60 and 600 the print succeeded, but this time the reduction in print quality was very noticeable – in particular the infill lines which should have been straight were very wavy. Most likely the microcontroller and firmware combination can’t handle the calculations fast enough, resulting in coarse segmentation.
My suggestions to Robotdigg for improving the design
This is a budget printer, so I wasn’t expecting great things from it. However, a few simple changes would improve it significantly:
- Strengthen the base frame using two more brackets, as I have done.
- Provide adjustable feet of some sort for levelling.
- You supply Allen keys with the printer, so why not use socket cap head screws instead of Philips head? In particular, for those screws that cannot be reached using a screwdriver without removing the electronics box or other parts.
- Do something about the backlash. The small pulleys are the main problem, they need to have a tooth profile better matched to the MXL belt, i.e. wider teeth on the pulley. Perhaps GT2 belts and pulleys would be better.
- Redesign the proximal motor mounting bracket so that the belt tension can be properly adjusted, by allowing access to the screws that secure the motor mounting bracket in its extrusion
- The default firmware configuration parameters are not right, in particular the maximum extruder acceleration in the M204 command and the minimum segment length in the M205 command.
Next time: mitigating backlash, and changing to Duet electronics!