I’m on day 3 or 4 trying to get the configuration to work in a CH3-R hex…no luck so far
Without a troubleshooting guide, I can’t tell if my problem is with the Botboarduino, the SSC, the wiring, or software/drivers. Not ready to start complaining much…but I’m getting close.
The summary of what I’ve done so far, is I’ve made a lot of mistakes and oversights. I’m still not up and running, but maybe listing some here will help others. ]First of all, I bought the components piecemeal because I had the HS-645MG servos already on hand. Perhaps, I overlooked something./:m] ]Yes, I went through the build99f.htm tutorial./:m] ]When making/checking the TTL communications connections between SSC-32 and BotBoarduino one should make sure to look at the diagrams for BotBoarduino and not the Bot Board or other options. That through me once. I still don’t know definitively whether to use a Unidirectional or Bidirectional configuration. The tutorial has a Bidirectional configuration, but the cable that came with my SSC-32 has only two conductors. I went ahead and ripped a servo extension cable out of another project to implement the Bidirectional config./:m] ]My “BotBoarduino_CH3R_PS2” sketch would not compile…It has been a while since I worked in the Arduino IDE, so, I figured it was some configuration oversight on my part. Turns out, one should always first read the big README file that comes with the program. I was missing the “playstation-2-controller-arduino-library-v1-0” library./:m] ]After a good compile, I still couldn’t download to the board. I wasn’t completely sure that I had the right board/COM target combination because my Aurduino 1.0.5 IDE has two Duemilinova options (ATmega328 and ATmega168) I was positive that I had the ATmega168 since I had seen that in the documentation. Turns out, I was positively wrong. The SSC has the ATmega168, the Botboarduino has the ATmega328./:m] ]I then headed for the Hexapod Calibration software “Hexapod Calibration V019”…I’M STUCK HERE…is there a guide for how to use this? I get a “not connected” notice. I assume that means I have to connect directly to the SSC and can’t connect through the BotBoarduino?/:m] ]Finally, I decided to test the components individually (as I should have in the beginning) and realized I don’t have a serial port on any of my computers (to directly connect to the the SSC). I also don’t have room for a serial port card. So, I’m waiting for my USB-serial adapter cable to come in./:m] ]While waiting for my adapter cable to come in, I’d like to check to see if the robot can activate the servos at all without the PS2 controller. But, I have no idea what kind of “position” information the BotBoarduino sends the SSC. Yes, I read the SSC-Manual (build136.htm) and see the “commands section.” But how do I instigate those commands with a simple sketch on the BotBoarduino?/:m]
Summary of Questions:
Under what conditions do I need bidirectional TTL communication between the Botboarduino and the SSC?
Is it true, I won’t be able to run the Hexapod Calibration program until I have a serial connection directly to the SSC-32?
Is there a simple sketch that I can use to verify the BotBoarduino/SSC-32 combination is working (without the PS2)?
I will try to upload configuration pics when I can.
Bidirectional - Majority of code usage does not need this. But many programs example the calibrate, will probably do a VER command to the SSC-32 and get the response as a way to figure out things like which version you have. In Phoenix code base, I think the only major part that uses this is to first see if the version of SSC-32 firmware supports General Purpose Sequences and if so, when you actually try to run sequences.
I don’t know how that one is currently set up. There was some instructions on current tutorial about holding a button down when you power up the robot. I have not looked lately at which things are in their code base versus my versions up on github. They (maybe even I did it earlier), had this in the setup code to then jump to my SSC-32 forwarding code in the Phoenix SSC-32 driver code.
It is pretty simple to see if you have communications working or not. Not sure if the version of code you have, has my Debug Terminal stuff in it or not. If so, use Terminal Monitor (probably set for 3400), (Make sure line terminates with CR/LF in terminal monitor). If you then hit enter does it show a list of commands? If so Is one have a name like Servo Offsets. If so enter the command character, probably O It should then move all servos to their center points. You can enter keyboard commands to choose different servos (* goes to next one), + and - try to do tuning of that servo… $ exits the mode and asks if you wish to save your changes…
Depending on version if this code, when you select a servo, it will display a logical name for it that can help you know if the right servo is connected to the right pin.
Also there was an issue with code base selecting to use the SSC-32 in binary mode, which is only supported on certain versions of firmware for the SSC-32. If you have not updated your firmware to one of them whose name ends with EGP, it may not work. There are a couple of recent threads on how to fix this.
I have the inline chassis BH3 and 3DOF ‘A’ legs, SSC32, Botboarduino wireless PS2 (older version).
Follow the Build99f as has been mentioned. Use the BotBoarduino_CH3R_PS2 code.
There is simple leg calibration in the software, just turn on the monitor and calibration (offsets) function.
The BotBoarduino works fine! I prefer it over the old BotBoard II boards and Adam Pro chips (anybody interested).
Ask your questions as you go through the tutorial. Skip the calibration instructions. We’ll help you get it working.
You need the 3 wires for the interface with the SSC-32.
A little progress…very little. I needed a USB-Serial cable to test the SSC-32 directly. It (Manhattan model 205146) finally came in. Frustrated the heck out of me because the SSC-32 would respond at all. Then I realized I forgot the TTL enable jumpers. Now, the Hexapod Calibration V019 does something…but not much. I still get a “Not Connected” notice in the software. The servos all respond to the All-1500 command, but many of them are all out of wack. The Offset adjustment does little or nothing to the various servos.
Attached are pictures of the jumpers and connections when the SSC-32 is connected to the Botboarduino. The hex sketch appears to have compiled and downloaded correctly. However, the BotBoarduino is lit up like a Christmas tree (pwr, L, tx, rx are solid…lights a,b,c are blinking like mad). The “Processor Good LED” on the SSC-32 stays on solid suggesting it never recieves any data.
USB to serial adapter cables include a chip to do the conversion (even if that chip is somewhat hidden in the connector) and not all of these are equal. Although the Lynxmotion USB to serial adapter might be more expensive than others on the market, it is highly reliable and we have had very few issues. Others however don’t always work well.
You have the BotBoarduino connected to the SSC-32, though the SSC-32 jumpers still seem to be set to 115.2. If you are using the sample code, what baud rate is the BotBoardsuino sending the commands (using soft serial) to the SSC-32 (normally this might be 38.4).
Next, check that the Tx pin on the BotBoarduino is actually connected to the Rx pin on the SSC-32. You also need to connect ground on the BotBoarduino to GND on the SSC-32 (several ways of doing this).
The jumpers on the BotBoarduino seem to be ok, but can you specifyu how you are powering VL on the BotBoarduino and what is connected to VL on the SSC-32?
Looks like Coleman covered most of it, I’d also verify what BotBoarduino com pins you are using.
I’m using pins 10 and 11, you are using 12 and 13. I do recall changing some pin assignments in the code, so that may be it. I think I was using these pins in another project.
In hex_cfg.h
#define cSSC_OUT 10 //Output pin for Botboard - Input of SSC32 (Yellow)
#define cSSC_IN 11 //Input pin for Botboard - Output of SSC32 (Blue)
See what you’re using. I suppose you could use either, just make sure they match. Can you run the monitor? Mind the baud rate jumpers, and set the monitor accordingly. You can send a “ver” command to the SSC-32 and it will reply with it’s version number. (Pass through).
Have you got to the PS2 yet?
You can set the offsets for the legs via a monitor screen while in the Arduino IDE and the ‘O’ command. You don’t need to connect directly to the SSC-32!
Thanks Coleman and Alan for your help thus far.
I checked my cSSC pins and the code matches my wiring. (pins 12 and 13).
I double checked the Tx-Rx BotBoarduino-SSC connections.
I changed my baud jumpers on the SSC to 38.4K
My PS2 appears basically functional…the Botboarduino chirps when I press “start”. After started, it chirps for various other button presses.
But the servos never react in an way. The “Processor Good LED” now blinks whenever I press PS2 buttons.
I’m using BotBoarduino_CH3R_PS2 V2.0 date 29-10-2009. When connected to programming port of BotBoarduino (via usb), I can use the serial monitor with 57600 baud. The servo offset routine appears to work and all servos go to center point (I tested a few commands but not many).
I’m hoping you can see the VL and VS connections in the picture.
The VS=VL jumper should **NOT **be installed, as you are using both a 9v and a 6v battery.
If you have a DMM, you can connect up one battery first, say the 9V, and read the VS and VL voltages. You should have VL (logic) voltage, but no VS (servo).
Disconnect the 9v, connect up the 6v and then read VS 6v, but no VL.
Is this another case where you are running a version of phoenix code that is compiling to output for binary communications with the SSC-32, but your SSC-32 has a version of the firmware that does not support it?
Been discussed in several threads including this one: In Hex_CFG.h file look for #define cSSC_BINARYMODE 1 // Define if your SSC-32 card supports binary mode.
It may not compile, need to change a variable name… Again Several threads talk about it, including: viewtopic.php?f=8&t=9190&p=90619&hilit=cSSC_BINARYMODE#p90619
Okay. I removed the VS/VL jumper from BotBoarduino (The VS/VL jumper was already removed from the SSC). Everything acts the same. Just for grins, I checked the voltage at some unused servo pins on the SSC. As expected with only the VS battery connected, I got 6V on the middle pin and 0V on the pin closest to the edge of the board. When the VL battery is connected the unused servo pins are effectively zero (.7 V)
Present status:
-When connected to the PC I can fully utilize the servo offset routine to activate all 18 servos at will through the USB. The PS2 controller does nothing at that time.
-When not connected to the PC, and with VS/VL jumper removed (on BotBoarduino and SSC), and with 9V battery on VL and 6 V battery on VS, the PS2 clearly communicates to the system because I get chirps responding to button pushes AND the Processor Good light on the SSC flashes in response to PS2 button pushes (and flashes rapidly when I move the analog joystick)…but servos never respond at all (not even a kick on startup, which I find unexpected).
I made the change to #define cSSC_BINARYMODE 0
It compiled just fine. The result was the same…apparent commands from the PS2 all the way to SSC, but no servo action (even though servos respond as expected when I go back to servo offset mode in the serial monitor).
When I set to cSSC_BinaryMODE to 0 it compiled…but the PS2 remains a paperweight. when I commented it out, I got errors
"phoenix_driver_ssc32.cpp: In member function ‘void ServoDriver::CommitServoDriver(word)’:
phoenix_driver_ssc32.cpp:269: error: ‘ServoMoveTime’ was not declared in this scope