Measuring Servo Power Usage?

I'm building a simple servo-powered bot, and I'd like to detect the strain placed on its servos. Am I correct in my reasoning that as the
servos encounter greater resistance, their power usage will increase? If so, what would be the best way to measure the servo's power usage? I've also tapped the internal potentiometer to read a servo's position in real-time. Would it be easier to extrapolate the strain based on the change in position, with a larger strain causing the servo to move more slowly?
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Chris S. wrote:

It is true that as the force encountered by the servo increases, its current increases. Actually caused by the decreased reactance from the motor rotating slower.
You could use a current sensing IC, such as the one featured at: http://www.linear-tech.com/prod/datasheet.html?datasheetR1
The caveat to using the tapped pot is that it is less accurate and less reliable. I read the position directly from the internal pot, but use current sensing to guage strain.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Jason Tang wrote:

Thanks for the info. Yeah, I understand that the pot's feedback will be jittery at best. The only reason I'm hesitant to specifically sense current is the added circuit complexity. Since my controller is a simple microprocessor, reading the potentiometer means simply using one channel of the micro's a2d converter. To sense current, I'd need an extra chip for every servo channel, and it would still require a micro's a2d channel or an LTC1286 chip to digitize the output. Can you recommend any similar ICs that support multiple channels or make current sensing of multiple targets more efficient? I searched both LT's and Maxim's sites and neither seem to make a multi-channel current sensing amplifier.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
And somewhere around the time of 07/23/2004 21:28, the world stopped and listened as Chris S. contributed the following to humanity:

You need a current sensor. Take a .1Ω resistor and place it in series with the positive power lead. Use the voltage across the resistor to guage the current using ohms law. I = E / R, which in most cases would be I = E / .1. So, if you have 30mV across the resistor, then that would translate into 300mA.
--
Daniel Rudy

Email address has been encoded to reduce spam.
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Depending on you budget you could use a current probe with a digital storage scope. Even the older monochrome LeCroy digital scopes will allow you to set up a math trace that multiplies current and voltage, then take the average of a window of the stored trace. If you want to see the overall effect of a strain on your system you could monitor the supply voltage to see the combined effect in one place. Somebody correct me if I'm wrong, but I think if you are using a single DC power source, a current sense resistor could be put inline with the supply and measured there, rather than at the supply voltage to the motor.
- James B
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
And somewhere around the time of 07/26/2004 16:46, the world stopped and listened as james b contributed the following to humanity:

That is absolutely correct. Having the resistor at the battery does give you a total current effect. Now, imagine this: Say you put the resistor at the battery with a current monitoring circuit. Now also measure the voltage across the battery. Feed both into the ADCs of a controller, and now the controller has a rough idea of the amount of power being consumed on the robot at any time, and if given the capacity of the battery, and its discharge characterists, can even accuratly tell you how much charge is left!
Furthermore, instead of using a fuse (I would still use one), have a relay in series with the battery lead so when the current exceeds a specified value, it will cause the controller to open the relay, cutting off power to most of the circuits, preventing a fire in the event of a short circuit.
I can see many applications for something like this. Thanks for the idea.
--
Daniel Rudy

Email address has been encoded to reduce spam.
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Daniel Rudy
in message

The recreational vehicle crowd mostly just monitors the voltage across the battery to estimate remaining charge. I hacked up a Harbor Freight DMM as a dedicated meter for my travel trailer. (I used my CNC milling machine to label the new mounting panel) When the 12V deep cycle batteries get to around 11.5V it's time to re-charge. Another tip from the RV world is using inline circuit breakers on the supply voltage. I'm sure Mouser or DigiKey sells these, but I got some at the RV supply place for a few dollars. They are nice in that they reset when they cool down, and you don't have to pull a fuse. Surely a circuit breaker wouldn't be as accurate as your digital current threshold monitor, but it is an inexpensive alternative.
- James B
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
james b wrote:

It's not about estimating battery life or circuitry protection, although those are pleasant side effects of monitoring current use. My goal is to measure the amount of strain or force being effected by each servo.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Oops. I thought I was replying to a different post, and was pretty tangential even for the question I thought I was answering. Let me try to add something to your original question.
It should be possible, with an exception, to estimate the strain on one of several motors in a system by sampling the voltage across a sense resistor on the supply. Say the un-strained current drawn by each motor in the system is known in advance, and the base current drawn by the system with all motors off is known in advance. If a monitoring program knows that a motor is turned on and what the base current is, then it should be able to estimate how much current draw it should be sampling with the motor is on (base+motor). If the current suddenly becomes much higher than the estimated value then it can be deduced that the motor is under strain. The exception to this is the case where more than one motor is powered on. For this case it would be possible to know that one of the motors was under a heavy load, but not which motor was under this load. If the application and code space permit, it might be possible to briefly turn all but one motor off to see which is under strain.
Another note about sampling. The current profile of the supply for a system with multiple motors will likely have a good deal of ripple. It may take an average of several samples to get a good estimate of the average current. Watch that the sample rate doesn't match the frequency of the ripple.
- James B
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
And somewhere around the time of 07/29/2004 20:11, the world stopped and listened as Chris S. contributed the following to humanity:

Right. Sorry about the tangent. I tend to get a little excited when talking about electronics. Anyways, have you seen the offerings from Dallas Semiconductor (aka Maxium IC)? Here's a link to a parametic search table for current monitor amplifiers: http://para.maxim-ic.com/compare.asp?Fam=CS_Amp&Tree=PowerSupplies&HP=PowerSupplies.cfm&ln If space permits, what I would do the following:
1) On a separate board, have several current sense channels (one for each servo). This way, you can easily tell if an individual servo is under strain.
2) Since the board is kinda like a power distribution point, at the power input, have another current sense monitor to guage overall current draw on the system.
3) Have all outputs of the current monitors be fed into the inputs of a multiplexed input analog/digital converter.
With a setup like this, the controller can just monitor the overall current draw, and if it starts getting really high, then the controller can read each input to see which servo is under duress.
--
Daniel Rudy

Email address has been encoded to reduce spam.
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On Thu, 29 Jul 2004 23:11:59 -0400, "Chris S."

You might be able to use the flexiforce pressure sensors to measure the force being exerted by the servo. Incorporate one into the servo mount so the torque on the servo can e measured.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.