Being in the vinyl plotting industry, I understand that servo based closed loop systems are superior in most respects.
I would like some advice on the subject
1:idea: Taz build?
2:idea:Closed loop system implementations using Arduino?Rambo?Encoders etc.The werks.
Thanks for your time,
I have been wanting to build a closed loop servo system for quite a while. The problem is that commercial solutions are very expensive right now, whereas stepper motors are essentially commodities at this point. So it would probably need to be a custom system. It’s a huge amount of effort, which is why I haven’t gotten around to it yet.
Thanks for your thoughts. I have been reading a lot about closed loop servo systems.
Thought I would post it here, just to get some ideas from this community.
With some Cnc builds I have found servos for around $280 at teknic http://www.teknic.com/products/hudson-motors
Those look like really nice motors, but $280*4=$1120 is a bit of a steep upgrade for many people. Also, more importantly, those motors lack controllers so those will need to be designed too (or find some off the shelf that are reasonably priced)
It might make sense to purchase nice motors if developing a custom controller though, and then try to cost-optimize later.
Interesting, when I first read your post I was thinking something very different.
I had recently read this page:
They use those really cheap 9 gram RC servos (modded for continuous rotation) plus a magnetic shaft encoder to provide feedback. Granted, they’re using it with a fine pitch leadscrew, but I don’t see why it couldn’t be designed with a belt drive and surely the same concept would apply to larger RC servos (MG995??) or brushed DC motors (with or without gears).
In the process of tracking down that link I tripped over these two as well:
So, clearly this has at least been considered before…
There is no reason not to use steppers, we just need three sensors to provide feebback plus some firmware changes. There are a couple of ways to do this. The best and of course most expensive is a total firmware re-write to use brushless servos with encoders. Instead of telling a stepper to take 100 steps on X, you tell the motor to run until the encoder reaches 100. around 90-95 you need to slow down. Current technology calculates accel / decel. But you can use the encoders to check that you actually reached the destination. This does not require an extensive rewrite, just addtional code to read the encoder. I’m also looking at linear position sensors that may be accurate enough for our puposes. Another option is a linear encoder strip on one of the supports, and an optical reader to read position. Many inkjet printers use such a system. My old one had a rototary encoders that only did relative positioning, so I’ve been looking into printing a linear strip on clear acetate and adpapting a reader. This has been discussed fairly extensively with the community deciding it was easier to upgrade the steppers to have enough torque not to miss steps.
A bigger issue that I keep running into is Z extrusion height. If this does not exactly match the expected height the printed object is too tall or too short. Mine are always very short. What seems to be needed is the nozzle must cut off the extruded height, squishing the extrusion into a wider strip of the right height. This requeires precise bed leveling and z offset control. And a single missed step can ruin a print.
A hybrid solition, and the one I’m most like going to pursue is to rewirte the moovement code to implement a “step until” system, where a destination is stored and the steppers keep stepping until that is reached. Any missed steps don’t matter becuase the next step advances again. My goal is to first get feedback working, then add missed step correction, and finally step until for the Z axis. I’m also going to upgrade to 1605 ball screws instead of lead screws. That can be done for around $100-$150 deepending on what is available as surplus. If you have access to basic machiining that is better because exact lengths are necessary, and 1000mm ball screws are the same price as 420mm ones in many cases. I usually find package deals with three ball screwes of varying length offered at a lower price, but some end work is necessary to size the screws correctly. Moslty that is turning down the shaft to fit a bearing and a motor connector.
I’ll post progress as I proceed, right now I’m trying to figure out why my micro-switch end stops are ignored on X and Y homing, causing the X carrigae especially to hammer against the end stops until the movement command misses enough steps. I’m running Marlin_2015Q2_TAZ5 and hope to have a solution later today.
Cool. Note that turning down the end of a ball screw may not be as simple as “chuck it in the lathe and throw some chips”. Many are surface hardened, the chuck/collet must be super careful to not distort the surface and if you have to take the nut off to machine it, be super careful as the balls are a real pain to put back. (ask me how I know )
Personally, I don’t see the value in moving to a ballscrew for 3d printers. A good acme leadscrew has very precise pitch (way better than “threaded rod”) and is considerably cheaper than a ballscrew solution.
A quick poke at McMaster shows 5966K24 a 3/8" ballscrew for $32 per foot and the matching nut with flange is nearly $150. with a specified accuracy of ±0.004" per foot.
A similar sized Acme rod is 99030A326 at $13 for three feet, Lots of nut options, but something comparable is about $60 and $20 options are available. Granted it has a specified accuracy of 0.009" per foot.
(McMaster is just an easy place to get relative pricing, go strait to Misumi or Igus for better pricing)
The other side of this is you need to consider the temperature expansion coefficient… Here’s some data
So ABS plastic is about 74 *10^-6 unit/unit per degree C. That’s about 0.007 inches per inch for a 100 degree swing.
And the steel leadscrews (or ballscrew) is 12 *10^-6 unit/unit per degree C. So a 12 inch screw will grow by 0.0072" for a 50 degree swing in temperature.
If you really want to bend your brain, do the math for the aluminum extrusions and try to decide if that makes the head-to-bed distance longer or shorter as the temperature changes. eg, where is the anchor point of growth measurements.
Add to that, the left-facing cooling fan blowing hot air on the left screw and nothing on the right screw…
I couldn’t justify the price of the more accurate screw under those conditions.
BTW, really expensive high precision machine tools actually pump chilled coolant though the center of their ballscrews to maintain a consistent temperature and avoid these issues. 3D printers are a very long ways from that being a tangible benefit.
Thanks for all of your time and thoughts, priceless.I will spend some time on what was posted on sensor feed back instead of full rewrite of firmware for servos. I would still like to see more than one attempt for the servo work around.