PDA

View Full Version : AX-12+ Led blinks



feri_sharp
01-05-2013, 11:39 AM
Hi.I've an ax-12+, and when I turn it on, the led starts blinking.I don't think it's a power supply problem, because, before it started blinking, when I turned it on by the power supply 9v(1A), led flashed once.it started blink when I connected it by a FT232 Serial to usb converter module to PC and ran the roboplus firmware recovery, as it said when I click find, I should poweroff, power on the servo to find the servo. when I did this, it didn't find it, but the back led was turned on, after 5mins it started to blink. after that when I just power it on, it starts blink, and I wrote a code in bascom for atmega32 and connected the ax-12 data pin to Rx pin of micro for read the error, but nothing happened.I connected AX-12 to FT232 module in this manner: I connected the ax-12 data pin to rx and tx.Sorry if it's hard to read.And I appreciate any helps for that.I don't have the USB2Dynamixel and CM-5 and any other productions for AX-12, I just have The servo and want it to run without these products. but first i need to stop it from blinking.Thanks

tician
01-05-2013, 05:49 PM
When you tried the RoboPlus firmware recovery, did the FT232 have the required full duplex to half duplex conversion hardware (a USB2Dynamixel or homemade version with a FT232 and logic IC)? Just hooking an FT232 breakout board's RXD and TXD pins directly to the AX-12+ data pin will not work, and could likely corrupt the firmware if attempting to update using RoboPlus. I think that is the most likely cause of the blinking (the bootloader possibly recognizes that the firmware is corrupted, so does not do anything but blink the LED so the user will know the servo is non-functional, maybe?).

The most common reason I have encountered for the servo to blink the LED is during an overload situation, where the motor has stalled and the firmware cuts power in an attempt to prevent damage. It will not send any error data unless it is told to do so. If you send it a packet to set or get any data from it, then the return packet will have an error byte in it (most likely overload, but possibly under-voltage as 9V is around the lowest it could reliably operate - well regulated 12V is preferred). There is actually a dead AX-12+ sitting on the floor by my feet that has a similar problem in that the motor is damaged, so sending it any goal position will cause it to enter an overload fault condition (with blinking LED) within seconds if it even manages to move. However, it will not blink unless first sent a goal position which causes it to attempt to move, so I think your problem is most likely related to the firmware recovery attempt.

feri_sharp
01-05-2013, 06:42 PM
So, now I should send it a packet to, get a status packet, and see the error?
but if the firmware is corrupted, how can get a status packet from servo?
I should recover its firmware yeah? and i should not connect the servo directly to Rx and Tx,
now is there ant circuit diagram to show how to interface them? by a homemade circuit?

jwatte
01-05-2013, 06:56 PM
is there ant circuit diagram to show how to interface them? by a homemade circuit?

You wire them together. Any "interlacing" you need to do can be done in software, because the receiver will receive exactly what you send. As soon as the sender is done, turn off the transmitter circuit on your microcontroller, to give the servo the ability to signal the wire. A weak pull-up (such as the internal pull-up on a AVR microcontroller) may help stabilize the signal.

feri_sharp
01-05-2013, 07:00 PM
Hmm, ty.
here for firmware recovery use a microcontroller or just FT232 module,and a half-duplex hardware between?

tician
01-05-2013, 07:01 PM
The circuit is detailed here (http://support.robotis.com/en/product/dynamixel/dxl_ax_main.htm), and there are even more specifics on operation in the AX-12+ manual on the trossen AX-12 product page as well as the Robotis support site (http://support.robotis.com). If the firmware is corrupted, then there will likely be no response from the AX-12+ (not sure, never tried updating firmware of an AX-12 with just an FT232 instead of a USB2Dynamixel). It should also be possible to use any Arduino with multiple USART/UART as a replacement for the USB2Dynamixel without using any external circuitry, but I'm not sure anyone has released code ready to use. Basically, the arduino will have the dynamixel UART in RX mode (disable TX, enable RX with pull-up resistors) by default. When the arduino receives a byte from the PC on its USB connected UART it will set the dynamixel UART to transmit mode (disable the RX, enable TX) and send the byte. When it is finished sending, it immediately returns to RX mode and sends any received bytes back to the PC through the USB connected UART. The arbotix ax12 library (http://code.google.com/p/arbotix/) would be a good place to start looking if you are using an 8-bit AVR.

feri_sharp
01-05-2013, 07:21 PM
So, I should Connect an atmega32 for example to circuit you've posted to me, and connect the FT232 module to the atmega32, and open a port for ax-12 with 1000000 baud rate, and program the micro to send data then wait for recieve.
so the question is, when we open the firmware recovery in roboplus it says to disconnect the servo then connect it to find it, so at the forst time atmega32 should listen for packets from servo yeah?
how should I program the micro to do this or is it possible at all? the thing in my mind is:
in bascom.
do
input #(some label),something
print something 'send data to ft232
loop
is it simple as I wrote?(I don't think so).

feri_sharp
01-05-2013, 07:44 PM
Is it possible, that there would be no firmware corruption, 'cause roboplus didn't find it to do anything on firmware, when I pressed the search button the thing just happened was led turning on, nothing else, after it turned on, I closed the firmware recovery search window, and ran the dynamixel wizard tool, and selected the existing ft232 port then selected search dynamixel, first 5mins the led was on, then it started to blink, this was the whole story.

tician
01-05-2013, 08:18 PM
You either connect an FT232 breakout board to the translation circuitry to create your own hardware implementation of the USB2Dynamixel or you program an AVR with multiple UARTs (with one being a USB connection, like on an arduino) to act as a software implementation of the USB2Dynamixel. If you do not have an atmega with a USB connection, then you could connect the FT232 to one the atmega's UARTs and use it as the full-duplex to half-duplex hardware. Any way you do it, you will end up with a USB to 3.3V/5V half-duplex UART that is required by the 'ttl' dynamixel bus. The program would more or less be:


// AX-12+ data line is 0~5V half-duplex UART, your micro must be 5V tolerant
// (avr at 3.3V might get damaged without protection - ARM at 3.3V WILL be damaged without protection)
// Assuming 5V 8-bit AVR, dynamixel TXD and RXD should be connected together and always set as inputs with internal pull-ups enabled.
main()
{
setDXLmodeRX();
// disable TX functions on DXL UART (disconnects pin from UART transmitter and returns it to Hi-Z with pull-up)
// enable RX functions on DXL UART (already Hi-Z with pull-up, but connect pin to UART receiver)
while(1) // loop constantly
{
if (checkUSBavailable()) // if received a byte over USB UART
{
setDXLmodeTX();
// disable RX functions on DXL UART (disconnects pin from UART receiver and ensures it is Hi-Z with pull-up)
// enable TX functions on DXL UART (makes pin an output/driver connected to UART transmitter)
sendDXLbyte(getUSBbyte()); // send byte over DXL that you pulled from USB
while (sendingDXL()); // wait while sending
setDXLmodeRX(); // return to RX mode
}
if (checkDXLavailable()) // if byte received from DXL UART
{
sendUSBbyte(getDXLbyte()); // send byte over USB that you pulled from DXL
}
}
}



Connecting the RXD and TXD pins of the FT232 and then connecting that to the dynamixel bus without any intermediate hardware will allow the RoboPlus software to send data to the dynamixel while also receiving what it sends (nothing there to filter out what it is sending as is required for half-duplex) so it might partly function long enough to corrupt the firmware, or it might not (I do not know. I have never tested with just an FT232 breakout board). The LED should only ever blink once when first powered and then turn off. If there are problems, then it will blink. I do not know with certainty what a solidly lit LED means (although I suspect it means the servos is in the process of updating its firmware, but that might just be my brain playing tricks on me - too much sleep).

feri_sharp
01-05-2013, 08:27 PM
with this, Can I fix this problem? I should recover the firmware?

jwatte
01-05-2013, 10:14 PM
If Dynamixel Wizard doesn't find it, then something is broken. If it's firmware, and it will respond to a firmware recovery, then that would be a reasonable course of action. You should be able to tell whether this will work during the power on/off firmware detection sequence.

feri_sharp
01-06-2013, 03:51 AM
when I power off, power on it, the back led just turned on, dynamixel wizard didn't find it, 'cause I connected it to ft232 RX TX, directly.