1. jek Relay Join Date
Apr 2015
Posts
8
Rep Power
17

## Calculating Torque

Hi All...

i have the MX64 and MX106 motror moving in certain position. from that movement i have a series of current reading from address 68. how can i convert it to the torque value as in N.m / Kg.cm as i need to know the torque for each goal position i had.  Reply With Quote

2. ## Re: Calculating Torque

There is no real torque sensor in the motor, so any reading you get is only approximate.

If the motor has a data sheet, you could approximate the torque using the current-to-torque curve for the motor.

If the motor does not have a data sheet, then you have to measure the current with a known torque (ideally several different values) and build your own curve.

There is a curve documented in the manual from Robotis: http://support.robotis.com/en/produc...ries/mx-64.htm

Again, this will be approximate, and I'd suggest several readings in a row after stabilizing in a position to get a better value.  Reply With Quote

3. jek Relay Join Date
Apr 2015
Posts
8
Rep Power
17

## Re: Calculating Torque

i found that current is proportional to torque in MX64 and MX106. i have taken the value form table address for current, voltage and speed. how can i use all these data to calculate torque?

from the manual it stated
This value is 10 times larger than the actual voltage. For example, when 10V is supplied, the data value is 100 (0x64)
but, i am getting value of 9588, if using the example, the voltage is 958V which is seem a bit off.  Reply With Quote

4. KurtEck T-1000           Join Date
Feb 2009
Posts
2,302
Images
2
Rep Power
132

## Re: Calculating Torque Originally Posted by jek but, i am getting value of 9588, if using the example, the voltage is 958V which is seem a bit off.
That can not be, as the voltage is contained in one byte, so it can only have the values from 0 to 255.

My Guess is you may have read a word in? Which would contain the values for present voltage and temp

Your value of 9588, converts to two byte values of: 37(msb) and 116(lsb).

So you have a voltage of 11.6V  Reply With Quote

5. ## Re: Calculating Torque

The voltage value is not useful for calculating torque. Only the current consumption is proportional to torque.
(A higher voltage simply means you can let the motor draw a higher current, at the cost of more heat generated.)

You want the graphs on this page, which is the online manual from Robotis for the MX-64 servo. (There's a similar page for MX-106):

http://support.robotis.com/en/produc...ries/mx-64.htm

The red curve shows torque (bottom scale) versus current (right scale.)
Look for the "current" register (which is two bytes) to read the value. Register 44 is low byte, Register 45 is high byte:  Reply With Quote

6. jek Relay Join Date
Apr 2015
Posts
8
Rep Power
17

## Re: Calculating Torque

Thanks for the response

i am using MAtlab to read the value from dynamixel table as

while changing PresentPos, id andP_PRESENT_POSITION current(68), voltage(42) and speed(38). then is use the formula given in manual to find CURRENT,
I = ( 4.5mA ) * (CURRENT – 2048 ) in amps unit (A).
For example, 68 gives a value of 2148, which corresponds to 450mA of current flow.
VOLTAGE
This value is 10 times larger than the actual voltage. For example, when 10V is supplied, the data value is 100 (0x64)

and SPEED
The value unit is about 0.11rpm.
For example, if it is set to 300 then the motor is moving to the CCW direction at a rate of about 34.33rpm.
Am i doing the right thing? the current seems okay, when i convert it. but, the speed and voltage giving me confuse.
how can you get these ?

That can not be, as the voltage is contained in one byte, so it can only have the values from 0 to 255.

My Guess is you may have read a word in? Which would contain the values for present voltage and temp

Your value of 9588, converts to two byte values of: 37(msb) and 116(lsb).

So you have a voltage of 11.6V
may you guide me please, as i have a row of 100 to convert it. how can u get the 11.6V? and from the green graph, showing the efficiency is max at 50% and dropping down.is it safe to assume the efficiency of this motor is 50%?

i were using the formula below to get torque value

τ = (I * V * E *60) / (rpm * 2π)
when i'm plot using matlab, the graph seem similar to simulation i had done before.

thank you.  Reply With Quote

7. KurtEck T-1000           Join Date
Feb 2009
Posts
2,302
Images
2
Rep Power
132

## Re: Calculating Torque

Sorry, I have never used matlab, so hopefully someone like jwatte can give you better answer...

But as for voltage, as I mentioned I think you are reading in word and not byte. Your code for voltage, should maybe look something like:
Code:
`Voltage = int32(calllib('dynamixel','dxl_read_byte',id,P_VOLTAGE));`
Again I do not know matlab, nor your setup, so not sure if P_VOLTAGE is correct ID? Also not sure if I can simply divide by 10 here to give the value or need some form of type conversion...  Reply With Quote

8. ## Re: Calculating Torque

is it safe to assume the efficiency of this motor is 50%
Depends what you mean by "safe." It's safe to assume that the motor will never be more than 50% efficient.
However, depending on RPM and other parameters, you will get less efficiency under many conditions.

τ = (I * V * E *60) / (rpm * 2π)
I would not use that formula. I would approximate the curve that you can see in the graph (red) that shows "torque" versus "current." I would then calculate the torque generated by simply feeding current into that curve.
It's an almost linear curve. so that should be easy (within this charted area -- once you stall the motor, or get near to doing that, bets are off!)  Reply With Quote

9. jek Relay Join Date
Apr 2015
Posts
8
Rep Power
17

## Re: Calculating Torque

my code for reading voltage is like :

Speed:
Current:
as the number of the last is refering to the adress RAM in control table. i noticed that the code is same for all languages, C++,C#,and VB. if what i did is truly reading it in word, how can i change it to byte?

and as for the graph, it might be a bit hard for me to feed the current into the graph, since i have 100 data to calculate the torque. .... so i might stick to the formula while adjusting for the best efficient.

again... thank you very much  Reply With Quote

10. ## Re: Calculating Torque

it might be a bit hard for me to feed the current into the graph, since i have 100 data to calculate the torque.
You will notice that I suggested you model the graph, and thus you feed the data into the model of the graph.
It's pretty much linear, so a y = ax + b linear fit would do totally fine.

KurtEck already suggested what was wrong with this line in post #7, and additionally provided another way of getting the right value in post #4.
It sounds to me as if you're just copying and pasting code from somewhere, rather than understanding what the program is actually doing, and what the data representation values really are.
I think everything will become clear if you learn the difference between a "byte" and a "word," and the difference between "big endian" and "little endian" data, and how to extract different byte values from a given word. That's basic programming knowledge that will serve you well in a future engineering career anyway!  Reply With Quote

There are currently 1 users browsing this thread. (0 members and 1 guests)

current, torque 