Introduction: RCServo Extruder - 96 Grams Direct Drive
In pursuit to make a lighter direct drive extruder I propose you this extruder based on a RC servo. I managed a 96 gr. extruder with everything on - servo motor, electronics, Mk7 gear, bearing, axes, spring, etc. - and 15.5 kg-cm torque (3.5 more than Nema 17 torque).
We use this extruder on a self made corexy printer with fixed fans - see the crossflow approach.
Also the extruder is designed to be fast/easy replaced with laser, pen, or spindle.
Complete Bill of Material – 08.31.2017
- 1x RC standard servo, we use FT5316M;
- 2x M105ZZ bearing;
- 1x Mk7 gear;
- 1x E3D v6 hotend;
- 1x M3x20 mm screw;
- 1x M3x40 mm screw;
- 2x M4x33 mm screw;
- 1x 8x12 mm extruder spring;
- 1x M3 special nuts;
- 52 mm PTFE 4mm diameter;
- 20 mm stainless steel 5mm diameter;
- 1x complete set of printed parts;
- 1x AS5040 encoder hall sensor;
- 1x AS5000-MD6H-2 Magnet;
- 2x 220 ohms smd resistor;
- 1x 2k7 ohms smd resistor;
- 1x 100 nF smd capacitor;
- 1x 2200 nF smd capacitor;
- 1x DRV8838 single DC brushed motor driver;
- 1x D24V22F6 voltage regulator;
- 1x Arduino Nano;
Note: Next version, now in development, will use Attiny 85.
Step 1: Modify the Servo
You need to modify the servo for continuous rotation. For standard servo FT5316M, you need to remove the pin on the final gear. Just pull up with a pliers. After that remove the electronics and the potentiometer.
Now you need to add feedback to your servo. A very good tutorial you can find here. - Thank you Andrey Pozhogin (dccharacter).
I have added the eagle files that I used.
Finally you have a powerful DC geared motor with quadrature feedback. To use this on a 3d printer we need to make a compatible A4988 pin to pin driver.
We will make this with an Arduino Nano, a DRV8838 single DC brushed motor driver and D24V22F6 voltage regulator.
Step 2: Build the Extruder
First you will print all the part in ABS or PETG. The settings are the usual, 0.4 mm nozzle, 0.2 mm layers, 25-50% infill, etc.
Because we have a crossflow fan, who cools down everything, we print the parts in black PLA. If it is somebody interested, I can design the RCServo extruder with support for hot end fan and filament fan.
Next you will make the servo motor to Mk7 gear adapter. This is a 5 mm diameter, 20 mm long stainless steel pin with 5 mm long M3 thread.
Press one bearing in extruder body. Next set up the extruder body, servomotor with 5 mm pin attached and Mk7 gear.
Press a 5 mm diameter, 12 mm long Al pin to second bearing and press to extruder arm. Set up the arm on the extruder body with M3 screw. Adjust the extruder spring with special M3 nuts.
Now you can glue the extruder wire support on top left extruder. I printed the extruder apart from wire support to have a good base to print the extruder.
Insert the PTFE tube into the hotend and then into the extruder and adjust the length of the tube to fit it.
Now mount the extruder on the xy carriage and make the hotend connections.
Note: If somebody needs another type of fixing the extruder/hotend to carriage, I can design it. Also I can provide parts or even a complete extruder.
Step 3: Build the Driver
We will show how to make this driver based on Arduino Nano. This is the actual RCServo extruder we use right now, but we have in development a lighter and simpler driver based on Attiny 85.
Our printer is powered by Ramps 1.4. We removed the extruder A4988 driver and replaced it with our driver. The driver will use both extruder space on Ramp. Next development based on Attiny 85 will be small enough to fit in on one extruder driver.
Our driver will receive the STEP and DIR signal from the Ramps and will drive the servo motor based on a PID solution.
We have added for download, the board we use to replace the stepper extruder driver.
Step 4: Upload the Firmware and Tune Up
The firmware dcservo.ino we use, is based on a beautiful solution of Miguel Sanchez - thank you - and modified to suite our needs. To upload, to Arduino Nano, the firmware you must install is Arduino IDE. The upload process is well documented on the web.
Next don't forget to tune up the PID parameters:
- Setup the equivalent step/mm for extruder on Marlin firmware with M92 Ennn command. In our case M92 E32. Store the value to eprom with M500 command. Also you can setup step/mm in configuration.h and upload to controller;
- Connect a pc/laptop, with Arduino IDE installed, to Arduino Nano and start serial monitor with 115200 bauds;
- Start power to the printer and make sure you don't have filament loaded;
- On serial monitor, type A and hit enter. On the monitor you will see the actual position, PID output and target position each second;
- Type X50, hit enter and watch the actual position value;
- Increase P gain by typing Pvalue enter until servomotor start oscillate around X position (change X after each P change);
- Increase D gain (change X after each D change) until servomotor stop oscillate;
- Repeat setup P and D until increasing D does not stop oscillation. Set P and D to last stable value. Usual D is 10 to 20 time P;
- Increase I gain to remove small error on position. The usual I is about 10% of P (small is better);
- Type W, hit enter to save values to eprom;
- Disconnect laptop from Arduino Nano;
- Fine tuning the equivalent step/mm for extruder, as usual for extruders.
Congratulations, you can start to print with your new 96 grams direct drive extruder.
3DBenchy printed with following settings: speed 55 mm/sec, retraction 0.5 mm / 25 mm/sec, nozzle 0.4 mm, 0.2 mm layer, black PLA. Good enough.