How Ax12+ detect Over-load ?

Bioloid robot kit from Korean company Robotis; CM5 controller block, AX12 servos..
18 postsPage 1 of 21, 2
18 postsPage 1 of 21, 2

How Ax12+ detect Over-load ?

Post by MOHIT JINDAL » Tue Aug 07, 2012 10:37 am

Post by MOHIT JINDAL
Tue Aug 07, 2012 10:37 am

:mrgreen: I am wondering how AX12+ detects overload ? From potentiometer or from Atmega 8A chip ? Is there any way\modifications to bypass\ignore overload detection?
Also how I can read the firmware of Ax12+ inside Atmega 8A chip ? :roll:
:mrgreen: I am wondering how AX12+ detects overload ? From potentiometer or from Atmega 8A chip ? Is there any way\modifications to bypass\ignore overload detection?
Also how I can read the firmware of Ax12+ inside Atmega 8A chip ? :roll:
MOHIT JINDAL offline
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

Post by Fritzoid » Tue Aug 07, 2012 2:57 pm

Post by Fritzoid
Tue Aug 07, 2012 2:57 pm

Fritzoid offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by MOHIT JINDAL » Tue Aug 07, 2012 4:32 pm

Post by MOHIT JINDAL
Tue Aug 07, 2012 4:32 pm

Only a zip file with Ax12.c file. :cry: please answer my first question. :roll:
Only a zip file with Ax12.c file. :cry: please answer my first question. :roll:
MOHIT JINDAL offline
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

Post by Fritzoid » Tue Aug 07, 2012 7:16 pm

Post by Fritzoid
Tue Aug 07, 2012 7:16 pm

The source file answers all your questions.

Overload is set when the field PhysicalTorque exceeds one-half the control table value ctlTorqLimit. PhysicalTorque is an internally maintained field calculated within the routine.

Furthermore, overload is only recognized if the control table value ctlTorqueOn is true and ctlTorqueLimit and ctlCCWLimit are both non-zero.

Of course the overload limit is in place to protect the servo and possibly your fingers from destruction. Disabling this feature is NOT recommended.

You cannot read the servo firmware directly without a JTAG interface. You could, however, trace the download of a firmware upgrade and save that to a file. In either case you would then have to convert the hex file to assembler and eventually translate that to c, something like AX-12.c.
The source file answers all your questions.

Overload is set when the field PhysicalTorque exceeds one-half the control table value ctlTorqLimit. PhysicalTorque is an internally maintained field calculated within the routine.

Furthermore, overload is only recognized if the control table value ctlTorqueOn is true and ctlTorqueLimit and ctlCCWLimit are both non-zero.

Of course the overload limit is in place to protect the servo and possibly your fingers from destruction. Disabling this feature is NOT recommended.

You cannot read the servo firmware directly without a JTAG interface. You could, however, trace the download of a firmware upgrade and save that to a file. In either case you would then have to convert the hex file to assembler and eventually translate that to c, something like AX-12.c.
Fritzoid offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by MOHIT JINDAL » Wed Aug 08, 2012 3:22 am

Post by MOHIT JINDAL
Wed Aug 08, 2012 3:22 am

Thanks but you say "ctlTorqueOn is true and ctlTorqueLimit and ctlCCWLimit are both non-zero. " These commands\functions won't work without any load sensing device. potentiometer sense the load or any other tiny thing inside the AX12+ chip ? :roll:

If I burn http://actuated.wordpress.com/ax12firmware/ into a new Atmega 8A chip. Can I make my own Servo motor ? :wink:
Thanks but you say "ctlTorqueOn is true and ctlTorqueLimit and ctlCCWLimit are both non-zero. " These commands\functions won't work without any load sensing device. potentiometer sense the load or any other tiny thing inside the AX12+ chip ? :roll:

If I burn http://actuated.wordpress.com/ax12firmware/ into a new Atmega 8A chip. Can I make my own Servo motor ? :wink:
MOHIT JINDAL offline
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

Post by Fritzoid » Wed Aug 08, 2012 12:28 pm

Post by Fritzoid
Wed Aug 08, 2012 12:28 pm

There is no load-sensing device, just a position sensor. The load is calculated as a function of distance from the target and time.

In order to build your own servo you would need a motor, a processor, a position sensor, an H-bridge, bearings, a gear train, and some interfacing hardware just for starters.

Gather the parts and then compare your costs to that of a commercial servo.
There is no load-sensing device, just a position sensor. The load is calculated as a function of distance from the target and time.

In order to build your own servo you would need a motor, a processor, a position sensor, an H-bridge, bearings, a gear train, and some interfacing hardware just for starters.

Gather the parts and then compare your costs to that of a commercial servo.
Fritzoid offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by MOHIT JINDAL » Wed Aug 08, 2012 5:30 pm

Post by MOHIT JINDAL
Wed Aug 08, 2012 5:30 pm

hmmm.... Ok. Which file runs inside atmega 8a ? .bin or .hex or .c :twisted:
hmmm.... Ok. Which file runs inside atmega 8a ? .bin or .hex or .c :twisted:
MOHIT JINDAL offline
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

Post by Fritzoid » Wed Aug 08, 2012 8:45 pm

Post by Fritzoid
Wed Aug 08, 2012 8:45 pm

What runs in the AVR or any computer is machine code, which contains binary instructions specific to the processor.

A compiler takes the source code in c or some other high-level language and converts it to assembler and then into machine code which is linked together with other machine code to create a binary image. The final result can be written to a .bin file if you like.

A bin file is essentially a dump of processor memory. However, it does not contain any information about what part of memory this dump corresponds to. Also, because it is binary it cannot be viewed or edited with a text editor. For this and other reasons Intel created the .hex format.

A .hex file is an ASCII representation of the binary image with location information included. It is much easier to work with and to transfer between machines.

Now to get your binary image into the flash memory of the AVR you need to use software (the boot loader) or hardware (an ISP). If you have an ISP you can usually use either a .bin or a .hex file.

If you go the software route then you'll need a program that can tell the boot loader where and how much data to write. Plus the actual bytes, of course. Fortunately Robotis has included this functionality in the Terminal application for you, but it expects to see a hex file as input. Other downloading programs prefer .hex files too. This is why most people output a hex file from the linkage editor.

So the .bin file is closest to what runs on the AVR but it's not as useful for downloading as the .hex file. The AVR has no use for the source code (.c) at all.
What runs in the AVR or any computer is machine code, which contains binary instructions specific to the processor.

A compiler takes the source code in c or some other high-level language and converts it to assembler and then into machine code which is linked together with other machine code to create a binary image. The final result can be written to a .bin file if you like.

A bin file is essentially a dump of processor memory. However, it does not contain any information about what part of memory this dump corresponds to. Also, because it is binary it cannot be viewed or edited with a text editor. For this and other reasons Intel created the .hex format.

A .hex file is an ASCII representation of the binary image with location information included. It is much easier to work with and to transfer between machines.

Now to get your binary image into the flash memory of the AVR you need to use software (the boot loader) or hardware (an ISP). If you have an ISP you can usually use either a .bin or a .hex file.

If you go the software route then you'll need a program that can tell the boot loader where and how much data to write. Plus the actual bytes, of course. Fortunately Robotis has included this functionality in the Terminal application for you, but it expects to see a hex file as input. Other downloading programs prefer .hex files too. This is why most people output a hex file from the linkage editor.

So the .bin file is closest to what runs on the AVR but it's not as useful for downloading as the .hex file. The AVR has no use for the source code (.c) at all.
Fritzoid offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by MOHIT JINDAL » Thu Aug 09, 2012 3:42 am

Post by MOHIT JINDAL
Thu Aug 09, 2012 3:42 am

:D Ok so the AX12+ has .bin file inside Atmega 8A chip ? :roll:
:D Ok so the AX12+ has .bin file inside Atmega 8A chip ? :roll:
MOHIT JINDAL offline
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

how to turn off overload detection

Post by selva » Thu Aug 09, 2012 7:19 am

Post by selva
Thu Aug 09, 2012 7:19 am

how to turn off overload detection??


Regards,
Selva
http://www.chennaipackersmovers.com/ban ... movers.php
how to turn off overload detection??


Regards,
Selva
http://www.chennaipackersmovers.com/ban ... movers.php
selva offline
Newbie
Newbie
Posts: 1
Joined: Thu Aug 09, 2012 7:16 am

Post by Fritzoid » Thu Aug 09, 2012 12:36 pm

Post by Fritzoid
Thu Aug 09, 2012 12:36 pm

MOHIT wrote
Ok so the AX12+ has .bin file inside Atmega 8A chip ?


You could say that.
MOHIT wrote
Ok so the AX12+ has .bin file inside Atmega 8A chip ?


You could say that.
Fritzoid offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by MOHIT JINDAL » Fri May 10, 2013 1:10 pm

Post by MOHIT JINDAL
Fri May 10, 2013 1:10 pm

Hi; I want to know How to clear the Bit 5 of 0x12 ? That is the Overload trigger. I want to shutdown the overload trigger. Yes; I am ready to burn 1 Ax12+ because I am experimenting on it. Please help. You can read Ax12 Manual page 11 and 12 for details about Bit 5 and overload error. :roll:
Hi; I want to know How to clear the Bit 5 of 0x12 ? That is the Overload trigger. I want to shutdown the overload trigger. Yes; I am ready to burn 1 Ax12+ because I am experimenting on it. Please help. You can read Ax12 Manual page 11 and 12 for details about Bit 5 and overload error. :roll:
MOHIT JINDAL offline
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

Post by Fritzoid » Fri May 10, 2013 4:13 pm

Post by Fritzoid
Fri May 10, 2013 4:13 pm

Mohit,

There is a "super secret" servo command called SYSTEM_WRITE (code 0x0D). It can write to any address in the EEPROM. The packet should look something like this...

0x0D, 0xF0, 0x55, 0x0F, 0xAA, offset, byte

...where 0x0D is the command code 0xF0550FAA is an authorization code, 'offset' is the EEPROM offset and 'byte' is the single byte of data to be written. As usual, you will need a 0xFFFF header and a termination checksum to complete the packet.

You may also want to look into DIGITAL_RESET (code 0x07) which can re-initialize the EEPROM to the factory defaults. Very useful for the case where you mess up using the above command.
Mohit,

There is a "super secret" servo command called SYSTEM_WRITE (code 0x0D). It can write to any address in the EEPROM. The packet should look something like this...

0x0D, 0xF0, 0x55, 0x0F, 0xAA, offset, byte

...where 0x0D is the command code 0xF0550FAA is an authorization code, 'offset' is the EEPROM offset and 'byte' is the single byte of data to be written. As usual, you will need a 0xFFFF header and a termination checksum to complete the packet.

You may also want to look into DIGITAL_RESET (code 0x07) which can re-initialize the EEPROM to the factory defaults. Very useful for the case where you mess up using the above command.
Fritzoid offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Post by MOHIT JINDAL » Fri May 10, 2013 4:33 pm

Post by MOHIT JINDAL
Fri May 10, 2013 4:33 pm

Ok. Where to use those commands ? In terminal ?
Anyone tried it ?
I am new to roboplus terminal. :cry:
Ok. Where to use those commands ? In terminal ?
Anyone tried it ?
I am new to roboplus terminal. :cry:
MOHIT JINDAL offline
Savvy Roboteer
Savvy Roboteer
Posts: 178
Joined: Wed Nov 10, 2010 7:43 am

Post by Fritzoid » Fri May 10, 2013 6:34 pm

Post by Fritzoid
Fri May 10, 2013 6:34 pm

See my cheat-sheet at http://robosavvy.com/Builders/Fritzoid/commands.zip

You can send commands in hexadecimal to dynamixels using the H command in manage mode. You could also use TOSS mode and a program.

First try tracing the packet traffic generated from simple operations using the MONITOR command followed by one or more READ or DUMP commands. This will give you a feel for the send and receive packet format.

It is a good idea to disconnect all the servos except the one you are working on too!!!!
See my cheat-sheet at http://robosavvy.com/Builders/Fritzoid/commands.zip

You can send commands in hexadecimal to dynamixels using the H command in manage mode. You could also use TOSS mode and a program.

First try tracing the packet traffic generated from simple operations using the MONITOR command followed by one or more READ or DUMP commands. This will give you a feel for the send and receive packet format.

It is a good idea to disconnect all the servos except the one you are working on too!!!!
Fritzoid offline
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 331
Joined: Mon Dec 18, 2006 1:00 am

Next
Next
18 postsPage 1 of 21, 2
18 postsPage 1 of 21, 2
cron