| View previous topic :: View next topic |
| Author |
Message |
zoidicus
Joined: 25 Jan 2008 Posts: 2
|
Posted: Fri Jan 25, 2008 10:09 pm Post subject: Question about precision and repeatability |
|
|
How good can linear potentiometers possibly be, in a hobby-friendly price range? Lots of people talk about servo resolution, but that's not at all the same as accuracy.
I've looked into OpenServo, and other real digital servos such as the AX-12+. I've also pondered the "digital" hobby servos (still PWM controlled), but if they're all based off pots, none can be any better than the pot itself.
My current application swings a range finder and feeds back range and distance values. After much circuitry experimentation and mathematical backflips, I have very accurate, linear distance readings. To my dismay, the servo I'm using (for aiming) has very bad angular linearity, and I'm wondering how much I have to spend to get a spot-on servo.
For reference, I have some stepper motor experience I could draw on for ridiculously precise angles, but I didn't want to endure the current requirements. This is a battery powered (robotics) application.
Are any servos (OpenServo modified or otherwise), capable of .1 degree accuracy (not resolution) across the 180 degree range? |
|
| Back to top |
|
 |
bren
Joined: 01 Jul 2007 Posts: 79
|
Posted: Sat Jan 26, 2008 12:02 am Post subject: |
|
|
| Quote: | | Are any servos (OpenServo modified or otherwise), capable of .1 degree accuracy (not resolution) across the 180 degree range? |
You want be able to find any tat fine as 180 degrees at 0.1 would be 1800 positions the best you will find are 1024. I use DX-117 for my biped and there very good but very expensive. All the servo's I used want give you that resolution. I have tried any experiments with my openservo's but I think that you right in thinking most pots aren't accurate for your purpose. But then again some one else here might no some other way.
You could also try replacing the standard POT with a high precision replacement this would probably give you the best solution with a servo with metal gears or build your own with a motor gearbox plus high precision POT.
Bren |
|
| Back to top |
|
 |
zoidicus
Joined: 25 Jan 2008 Posts: 2
|
Posted: Sat Jan 26, 2008 12:21 am Post subject: |
|
|
Thanks for the reply. I could actually get away with 0.5 degree res, which 10-bits would handle easily. However, with PWM I have a great deal more resolution (if I actually needed it), and there are "ultra precision" "digital" PWM servos claiming as high as 5900 steps per revolution (JR DS8231), but i still wonder if they're really linear. My current cheapo servo has all the steps-per-rev I need, but the number of steps in one 5-degree arc do not equal the steps in an adjacent 5-degree arc, and that is throwing off my measurements. I don't want to have to plot a curve, particularly a really lumpy one, for every servo I use in this application.
I'll buy a better servo if that will actually solve the problem, but if the final answer is that hobby servos are simply not reasonably linear at any price level, then I'll go for a stepper solution and spend the extra $ on juice. |
|
| Back to top |
|
 |
ginge Site Admin
Joined: 14 Jan 2006 Posts: 1029 Location: Manchester, UK
|
Posted: Sat Jan 26, 2008 8:45 pm Post subject: |
|
|
Hi,
The main problem with pots is that they are very noisy. The accuracy gained with a higher quality pot will probably be offset by a lower accuracy ADC reading in hardware. Although we use digital filtering and analysis of the data returned from the AVR, the H-bridges introduce a small error.
As Bren pointed out, with OpenServo you are limited to a 10bit reading, and the AVR uses successive approximation hardware with an accuracy of +/- 2LSB. This will give a total accuracy deviation on die of 1%
While some of these "digital" servos claim the crazy resolutions, in the real world I find that is not really the case. Mechanical play in the gear train, general wear of the bearings and external noise tends to make them significantly lower resolution than the claims. Maybe on paper they can achieve these resolutions, but in real life, not a chance.
The only real solution to your problem (without using a stepper) would be to use an internal encoder inside of the servo. This is on the OpenServo wishlist, but as yet it has not been scheduled for code release. There are also inherent issues with using encoders inside of a servo, such as space and retrofitting issues, but is achievable.
In a nutshell... pots stink.
As for you linearity issue... odd. Pots are designed in such a way thay they should be linear across the range of motion. I will have to look at my cheapo servos to see if I have this issue. I guess the pot is really bad in those servos!
Barry _________________ http://www.headfuzz.co.uk/
http://www.robotfuzz.co.uk/ |
|
| Back to top |
|
 |
wurpfel
Joined: 20 Dec 2006 Posts: 25 Location: swiss
|
Posted: Wed Feb 13, 2008 9:39 am Post subject: |
|
|
Hi folkz
I use this 12bit magnetic encoder on a mill with steppers.
now I will make new axis with BLmotors and OPENSERVO-soft.
http://www.austriamicrosystems.com/03products/products_detail/AS5046/description_AS5046.htm
This guys have a sample service
maybe we pool an order??
for the RCservos I use the encoder directly mounted in the rudderaxe of taller airplanes or the 10bit variant in ships. the rudder stays at the position what they have to be
work great, now a new generation of BLmotor have to be integrated,
maybe also under OPENSERVO.
It`s also interesting to see what`s travel a rudder do under load, like fludder or aeroelastic deformations  _________________ not to old to play with scrap |
|
| Back to top |
|
 |
engr.eric
Joined: 06 Apr 2009 Posts: 8
|
Posted: Mon Apr 06, 2009 10:05 pm Post subject: I just ordered some samples |
|
|
So I have been looking at open servo for a few weeks now trying to get acquainted with the project.
My biggest concern is the accuracy and repeatability of the position measurement. I have currently been using hs-311 standard servos in a small biped I have been designing and I was dissapointed to say the least with the results I have been getting, and trying to mathematically correct each individual servo works to some degree but still lacks the elegance and functionality I'm looking for from a servo.
I am new to the project so many of my concerns may have already been addressed but the potentiometer feedback seems to be a fundamental hindrance.
I took a look at the AS5046 and it seemed to be a great part so i ordered some samples and ill have to make a pcb at home to test it out, I'm too cheap to buy a demo board, and I have a good background of hardware prototyping and software development.
My biggest goal would be to devise a way to integrate this or a similar encoder into the servo housing itself and interface it to the open servo v3 platform
Let me know if I seem offtrack or anyone else is interested
Thanks! |
|
| Back to top |
|
 |
ginge Site Admin
Joined: 14 Jan 2006 Posts: 1029 Location: Manchester, UK
|
Posted: Mon Apr 06, 2009 10:42 pm Post subject: |
|
|
Hi engr.eric, and welcome!
This topic has come up more than once on this forum, and with good reason.
You can probably see from my post above that I don't think pots are up to the task, and this sentiment is echoed throughout this forum.
You might want to read this (small) thread where someone proposed using the AS5046 on OpenServo
http://www.openservo.com/forums/viewtopic.php?t=821
Although nothing came of this particular discussion, it wasn't forgotten.
As the AS5046 uses I2C protocol to communicate, we can't use the AVR built in I2C module, as this is already reserved for outside communications. What was discussed off thread was implementing a basic bit banging I2C driver to allow this encoder to work.
another workable alternative is something like this mod
http://www.portlandrobotics.org/howto/quadrature.php?link_id=14&usg=__14VrOtvT34msQAnWleaFgiLc3JM=
This was given great consideration, and unfortunately the discussions lead nowhere. Not many people were interested in hacking a servo to those extremes.
Encoders in general are a real pain to implement, as the current OpenServo software relys on the ADC module for a lot of functions. This problem is remedied in the v3-dev branch, as the system clocks, adc functions, and position measurement modules are now decoupled from the ADC subsystems. Because of this change we can get down to implementing encoder support.
I will be releasing a simple encoder module fairly soon which will show how we can utilise a magnetic hall sensor (Infineon TLE4966) in place of the conventional position measurement. Initially this will allow only standard servo rotation, but will later be expanded to support continuous rotation.
There is still some way to go over implementing all encoder types, but at least we now have a fighting chance of pulling it off.
I highly recommend you use the v3-dev software branch in any future experiments you do, as it will remove some of the obstacles currently presented.
Barry _________________ http://www.headfuzz.co.uk/
http://www.robotfuzz.co.uk/ |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Mon Apr 06, 2009 11:52 pm Post subject: |
|
|
Sounds like I should pipe up a bit. I've been looking into the encoder thing as well.
I've been looking at that tree trunk filled with unused PCB space. If the trunk near the branches were a bit wider, it could hold the AS chip. I've been thinking of the AS5043, because it's good enough for me, and is pin compatible for the AS5046.
I've posted some files that include step files for the TSSOP and SSOP forms used by the AS chips. I've also included a rough draft of the KICAD schematic and board layout. The KICAD files are very rough, and not very usable yet. These files can be found here.
http://jaredharvey.com/openservo
Here are some pictures of what I was thinking.
I was thinking of a magnet similar to this.
http://www.amazingmagnets.com/index.asp?PageAction=VIEWPROD&ProdID=345
These folks offer custom magnets, some that are potable. I've been tempted to inquire how much a custom D shaped magnet would cost.
Any one know of a D shaped diametrically magnetized magnet? Something that fits in the POT hole would be nice. |
|
| Back to top |
|
 |
Cliff
Joined: 23 Jan 2007 Posts: 150 Location: Saratoga, CA
|
Posted: Tue Apr 07, 2009 12:59 am Post subject: |
|
|
A few quick comments:
The chip center location needs to be constrained to the center of the pot shaft, not to the servo case.
The pot shaft needs its own bushing/bearing - pot shaft to servo gear connection is too sloppy.
The most useful design would work inside the servo case, but would also work as a stand alone pot for applications using other motor types.
The recommended magnet diameter is equal to or greater than 6mm. If the diameter is smaller, the tolerance for centering the chip to the magnet center gets much tighter (spec. is +/- 10mil with 6mm magnet)
The pot shaft must be non-magnetic or separated from the magnet by non-magnetic material that has a thickness that is, at least, 1/2 the diameter of the magnet.
Notes on magnet requirements can be found here: http://www.austriamicrosystems.com/eng/content/view/download/13858
Cliff |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Tue Apr 07, 2009 10:22 am Post subject: |
|
|
About the POT shaft vs servo case. I agree it would be better, I'm not sure if it's required. I like the idea about making an encoder POT. Perhaps we can find and gut a POT, send the shaft to a place to have a custom magnet made, and make our own PCB board to replace the wiper board.
I understand that they make potable magnetic materials, that you pot, then run through a magnetic field to magnetise. I believe the forms either are, or can be, a wax or cast material. So there is a chance we can use an existing POT shaft as a form, for the mold.
One of the problems I see with this, is that the PCB that might fit in a POT, may be to big for the .120 clearance in the tree trunk.
Are there any suggested POT's? |
|
| Back to top |
|
 |
engr.eric
Joined: 06 Apr 2009 Posts: 8
|
Posted: Tue Apr 07, 2009 9:27 pm Post subject: |
|
|
I like the TLE4966 idea. I would assume that you are going to place a magnet on one the gears, then extend the TLE4966 down and sense the gear, 1 tick/pulse for each revolution. I don't know how many revolutions = 1 degree of shaft rotation, but this sounds, if its going to work the way I'm envisioning it, very good.
The only benefit the AS5046 gives is an absolute index position of the shaft when the servo resets as opposed to the TLE4966 method which I'm guessing the start position would be found by the potentiometer then using the TLE4966 to find direction and pulses. I like that since the pulses would be an absolute measurement. That cuts down the math correction of each servo to 1 value for the potentiometer on each servo, and only affects the start index position.
Now i would think that the potentiometer would still drift due to temperature and environment, is this true?
By the way, the AS5046 method would still need a 1 value correction since it would be impossible to make all your servos with the exact same AS5046/magnet placement.
But I like the simplicity of the TLE4966, this seems very reasonable, and you seem to have made significant progress in this direction already. I like having reasonable goals.
Let me know if my assumptions are correct and more importantly if there is anything I can contribute with. I still need to buy an open servo v3 to start experimenting with, the links i found to place an order seem broken. But I do have all the development tools i need, like an mk2 debugger, etc... I've worked a lot with avrs
Thanks |
|
| Back to top |
|
 |
ginge Site Admin
Joined: 14 Jan 2006 Posts: 1029 Location: Manchester, UK
|
Posted: Wed Apr 08, 2009 12:52 am Post subject: |
|
|
| Quote: | | I like the TLE4966 idea. I would assume that you are going to place a magnet on one the gears, then extend the TLE4966 down and sense the gear, 1 tick/pulse for each revolution. I don't know how many revolutions = 1 degree of shaft rotation, but this sounds, if its going to work the way I'm envisioning it, very good. |
Exactly right!
| Quote: | | The only benefit the AS5046 gives is an absolute index position of the shaft when the servo resets as opposed to the TLE4966 method which I'm guessing the start position would be found by the potentiometer then using the TLE4966 to find direction and pulses. |
Doing well... 2 for 2
| Quote: | | Now i would think that the potentiometer would still drift due to temperature and environment, is this true? |
Yes, but we can pretty much ignore the pot once we have the initial position. We may want to read it occasionally to see if we missed pulses, but even that should be unlikely to introduce massive error. We at least have a chance of being much closer than pure pot measurements, even if we use both the pot and the encoder simultaneously.
| Quote: | | By the way, the AS5046 method would still need a 1 value correction since it would be impossible to make all your servos with the exact same AS5046/magnet placement. |
Yeah, the thought occured, but i'm not really too sure on how we should go about the one time calibration. It could prove to be fairly tricky without accurate measurement tools on the servo output.
| Quote: | | Let me know if my assumptions are correct and more importantly if there is anything I can contribute with. |
Yes, spot on. If you have some ideas about how we should deal with the encoder and calibration, please express them.
| Quote: | | I still need to buy an open servo v3 to start experimenting with, the links i found to place an order seem broken. But I do have all the development tools i need, like an mk2 debugger, etc... I've worked a lot with avrs |
http://www.robotfuzz.com is the preferred supplier. The Pendragon robotics site is down at the moment. The bad news is a university just purchased the last 200 of them. I am looking at about 8 weeks lead. On the flip side I should be able to reduce the price this time around as I don't need to pay retooling fees.
Barry _________________ http://www.headfuzz.co.uk/
http://www.robotfuzz.co.uk/
Last edited by ginge on Wed Apr 08, 2009 10:38 am; edited 1 time in total |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Wed Apr 08, 2009 10:29 am Post subject: |
|
|
Sounds like I should get a move on with the PCB order. I just submitted Cliff's latest to FreeDFM, and should hear back shortly. When I place an order, I'm kind of thinking I should do one board to confirm all is OK, then a larger order.
However, Cliff's design feels very good to me, so I'm also tempted to just go for a large order.
Should we try ordering together? I suspect the larger batch size would help keep the component costs down. |
|
| Back to top |
|
 |
jharvey co-admin
Joined: 15 Mar 2009 Posts: 350 Location: Maine USA
|
Posted: Wed Apr 08, 2009 10:36 am Post subject: |
|
|
| engr.eric wrote: | | I like the TLE4966 idea. |
I'm not quite up to snuff with the TLE4966 idea. I think it's much like the fellow that painted the gear, and used a photo eye, but in this design it uses a magnet instead of the optics. Is that right? So a fair bit of case modification.
If we assume the gears are metal, you could use a variable reluctor approach. This is a very common design used in auto-ignition systems. They basically have a magnet, and the encoder wheel directs the flux such that it passes the hall. They work very reliably and have many designs available to function as a draft design.
I like the idea of a direct POT replacement idea, because it can be used on much more than just this application. |
|
| Back to top |
|
 |
wurpfel
Joined: 20 Dec 2006 Posts: 25 Location: swiss
|
Posted: Wed Apr 08, 2009 5:37 pm Post subject: |
|
|
Hi folkz
the AS504x-devices use one "normal" magnet to read the position with 10 or 12bit accuracy. they also have an analog or quadrature or commutive output. no need to swiss-precission-placement, you can monitore throug service-pins your hotglue work..
also the "center" position can be set by SW, no mech-jerks needed.
when you use the analog output you can directly substitute the original poties.
really simpel way to enjoy 10bit resolution with openservo!  _________________ not to old to play with scrap |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|