Introduction: RCServo Extruder - 96 Grams Direct Drive
Update 10.25.2017
I used this extruder every day since its installation. It worked smoothly. The longest print has been around for about 6 hours. I'm curious how long the brush engine will go.
I noticed that a vibration at certain speeds appeared on the X axis. If I change the servomotor with a Nema 17 engine, the vibration disappears. I think the extra weight of the Nema 17 engine is cushioning the vibration.
For a few days I have been using the new Attiny85 driver. I'm still not happy with the settings. When everything is fine I will do a new Instructable.
08.31.2017
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
Mechanics
- 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;
Electronics
- 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.
Attachments
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.
18 Comments
5 years ago
Very nice design! Do you think to use a brushless motor in the RC servo? For example like that
goo.gl/H4sVK8
6 years ago
Hello. Another 10 days of printing with my RCServo extruder. I have printed at least 8 hours/day, every day and all worked well. The longest single printed parts took about 6 hours. So for now is it fine. All printing was done at 60 mm/sec, with PLA and PETG.
6 years ago
Thanks a lot for mentioning my name and code. Glad to know it worked for you.
6 years ago
Hello,
I have actually built according to your specs and found that the longest it could print was about 8 hours running continuously. Is there any suggestions for me to make the motor last longer without breaking down?
Reply 6 years ago
Wow, you are fast. Please give us some detail. The new attiny85 based extruder have adjustable current limiting. Also aggressive P.I.D. settings could damage the motor. Thank you for your feedback.
6 years ago
Have you tried this with flexible filaments?
Reply 6 years ago
Not yet.
6 years ago
The new version with Attiny85 it is also simpler and smaller. Cheaper and handsome to. I will post it after I finishing the tests.
6 years ago
Thank you for your comments. A small DC motor need gearbox, a large one it is heavy, so the servo was the choice. Also, a good servo is reliable and available everywhere. For now I have about 50 hours with 4 hour the longest print. We see.
6 years ago
Thanks! I wonder if/when we'll see 3D printer boards, firmwares and servo motors with encoders that are made to replace the currently used stepper motors? Is this just universally better than stepper motors?
Reply 6 years ago
The problem with brushed DC motors is the brushes soon wear out when you run them continuously in an extruder. Stepper motors last virtually forever.
Reply 6 years ago
Oh right. How about brushless motors? Too expensive then?
Reply 6 years ago
there are actually brushless rc servos (which are also much more expensive than a stepper). i'm still wondering if they are reliable for a, let's say, 36 hours print. very good project anyway, it's worth trying it :)
6 years ago
I think you could just use a regular DC motor instead of a servo for this purpose. They are cheaper and more common. Also you could use any potentiometer (linear are easier to programm) and modify them to use with your encoder.
BTW, it's a very nice project!
6 years ago
very very nice!
6 years ago
Thank you.
6 years ago
Very nice design!
6 years ago
Great first instructable! Your print came out really well, great work on the extruder :)