I'm building a phoenix hexapod with MG996R servos, Arduino and Lynxmotion SSC-32U controller. (At one point I tried using another 32-channel controller, but decided to go with one that's officially suppored by Phoenix code.)
At this point I feel very lost as I'm not sure what exactly is happening with this robot. I have few question, hoping someone can answer or at least provide me with some information
1. I’ve tried using Arduino UNO and as far as I can tell everything was hooked up right. I used latest “BotBoarduino_CH3R_PS2” sketch and PS2 controller. It doesn’t communicate with SSC-32U using that sketch. I wrote simple test sketch to send predefined commands with Software Serial and SSC-32U responded. What is so different between Uno and Botboarduino that it prevents it from working?
2. I found an old Arduino program that works on Arduino Mega. Its older version of Phoenix code,that’s very slim (and I made it even slimmer by removing Sound and XBee functionality).
You can see code here.
I uses second UART on Mega and it actually works! Well kind of . I can control my hexapod to a point. It doesn’t really walk, it kind of stumbles and falls sometimes. It can turn and body translations work. Something is really off tho. It hits servos when legs are moving, and worst part it moves WAY TOO FAST. I can’t find a way to slow it down. I’ve attempted to calibrate, measured leg lengths, etc. but it has very little effect. For example when I press “start” on PS2 controller, Hexapod stands up very tall. If I walk in this positoin, it will fall.
Are all my issues due to MG996R servos instead of more expensive ones used in original design? I can’t afford spending $600 on those right now
MG996R are actually faster, and have more torque so it should work in theory. They are of course lower in quality… But I’ve seen youtube videos where people successfully used them on the same frame…
BTW I’m powering it with 3S Lipo (4500 mA) battery and 30 Amp 12 to 6V regulator (which I realized was too big and heavy to mount into the frame, but great for testing)…
3. This one is total mystery to me. When I power on my hexapod, it goes into a “seizure”. Meaning all servos go nuts and it curls into a little ball. I know this happens because servos do not receive control signal. Once I press start on PS2 controller it “uncurls” and works normally. I even programmed simulated “start” right a program startup so this doesn’t happen. But official Lynxmotion Phoenix code doesn’t have this, so why those robot don’t go into a “seizure” when the powered on? There’s only one switch, that powers both SSC-32U and controller boards, so there must be a period of time servos don’t receive control signal… How can this be explained?
4. Finally, I know this one might be difficult to answer. I tried to modify original “BotBoarduino_CH3R_PS2” sketch to work on Arduino Mega using Serial1 instead of SoftwareSerial. After uploading Mega goes “heywire” and communication port becomes unavailable, so Arduino IDE no longer sees it. This is strange, since I’m not using Serial, but Serial1 for all communications with SSC-32U. I can’t explain why it’s happening
Here’s a video my “drunk” hexapod: https://www.youtube.com/watch?v=KVZzQnlrjMg