Hey Guys, so I’m new to the forum. I’ve been working on a phoenix style robot for a couple of months now, and I finally got it to the point where I thought I could program it. However, I run into several interesting things that I’m not sure are correct.
Firstly I am running a botboarduino uc with a ssc-32 servo driver, and my PC is a 64 bit machine. Everything has brand new batteries as well.
So this is what I’m seeing:
I programmed the robot and although the tutorial says it should be able to drunkenly stumble around, mine will not move.
the red PS2 receiver led blinks constantly, while the green one is solid.
the ssc-32 light blinks which seems to indicate it is getting data, but again…no movement.
Both lights on the wireless controller blink constantly when I power it on
when I try to enter the calibration program, it says “not connected”
I know this is a lot of flashing lights, but honestly I just don’t know where to start. It seems like the servo driver has a problem and the receiver has a problem, but I can’t seem to get it to work and I just need some good ideas on how to get this running.
I can only give some guesses on what may be going on as there is a lot of information that I don’t have, such as what code base did you program it from. The good news is that you were successful in downloading the program. It might help to see pictures showing the wiring, but hopefully one of my guesses will solve the issues.
SSC-32 - Sounds like you have the right IO pins hooked up to the SSC-32 and probably a common ground, as you say the led blinks. But it does not necessarily say it is getting valid data. Make sure the program and jumpers on the SSC-32 are set to the same baud rate. Probably 38400.
I believe most of the Arduino(Botboarduino) versions of the Phoenix software default to using Binary communications, which requires you to have an updated version of the firmware installed on the SSC-32. If you did not update the SSC-32 firmware, you probably have 2 options.
a) Disable Binary mode: Go into the file Hex_Cfg.h and look for the line that says: #define cSSC_BINARYMODE 1
And comment it out (start the line with //)
b) Download and install binary support. I use the 2.07EGP… one that is up on: lynxmotion.com/p-395-ssc-32- … oller.aspx
Calibration program. I have not used it in awhile and don’t remember if it wants to talk to the SSC-32 directly or not. Also not sure if all of the Phoenix Botboarduino software supports the holding down button at startup… Last time I used it, I believe that it talked to SSC-32 and it wanted it to be at 115200, but could be wrong… Most of my versions of the Phoenix code has calibration code built-in, that you access using the Debug terminal…
PS2: Which version of PS2 do you have? Is it the Lynxmotion one? If so is it a newer or older one? The blinking lights you mentioned implies the controller and receiver are not communicating. Check the batteries in controller (try new ones). Make sure it is on. Sometimes I have to turn it on and then off and then back on… Also make sure the Power going to the PS2 receiver is a +5v pin and not a VS(Servo voltage). Many receivers do not like higher voltages.
Debug: If you are using one of my versions of the Phoenix software, there may be a debug monitor. If you have the USB still plugged in and open the Serial monitor in the Arduino IDE with the baud rate to 38400 and hit enter, does it respond with anything? If so you can play some with the servos…
I updated the firmware on the ssc-32 and I used the LynxTerm Program to play with each of the servos, so I know that that are each working relatively well. So that got rid of that whole problem.
The receiver was actually either a problem with the receiver or the connection cable. I traded receivers and used a couple of USB extension cables to connect to the Botboarduino and the green light went away and the red one stopped flashing. (solved)
I unplugged everything from the computer and tried the control and there was a significant amount of drunken stumbling. I need to re-align the servos and then calibrate them.
You mentioned that your code has a calibration program in it that one could access using the debug terminal, could you elaborate more on this process? It seems like lynxTerm allows you to individually play with servos but I don’t know if that also corresponds to a calibration…
As I mentioned, I have a debug monitor in most of my Arduino Hex robots… I try to keep my current code sources up on www.github.com\kurte up to date.
There are cases when I remove it to save code space or the serial port is used for something else. Likewise I sometimes build the code without the calibration stuff as I need to code space… But assuming it is built-in, the keyboard monitor is only active when the robot is not running (Start button). If you have the USB cable plugged in and bring up the Debug Monitor with baud set to 38400 and hit enter, it will spit out a short list of commands, like: d turns debug on or off…
The command for doing servo offsets is: the “O” command, which will enter a special mode. Once in this mode, you can use the number keys 0-5 to choose a leg and C, F, T - to choose the Coxa, Femur or Tibia or simply use * key to choose the next servo. When the servo is chosen, it will wiggle it. You can then use the + and - keys to increment/decrement the positions of the servo. Once you are happy, you can hit the $ key to exit this mode. It will ask you if you wish to save the changes or not…