November 23rd Bajdupod 9G turns in to Bajdupod MG90 super mega turbo bling bling
After a long wait I received 15 MG90 servos from China. These have metal gears and are a bit stronger then the SG90 servos, and not that much more expensive. This did cause one issue, all my servos were powered from my Bajduino 3A board, it has a 3A 5V regulator. It was powerful enough to power the 12 SG90 servos but the MG90 servos draw a bit more current... Thankfully I have a couple of spare UBECs. So I quickly soldered up a perfboard with some male pins and hooked up a 3A UBEC to it. I then had to check all the servo positions and adjust the servo center value in my code. Replacing the servos seems like an easy job but to be honest this took me many hours. I replaced the servos one by one, every time checking the servo center value and updating my code. I originally used my Bajduino 3A to control the servos and a Bajduino 328RF24 to talk to my remote control via an nRF24L01 module. The 2 micro controllers talked to each other over I2C. There seems to be some incompatibility between the Arduino servo library and the wire (I2C) library. The servos would twitch randomly, I found other people with the same issues on the Arduino forums but no solution. I hooked up my oscilloscope to the servo signal pins and could see that the pulse width would sometimes change while my code should be sending the same pulse width. I then tried to use software serial but I got the same results. In the end I used hardware serial and the twitching was gone... I also added a 40mm fan to keep the regulator on my Bajduino and the UBEC cool. The beginning of this month I won an EL shield from Seeedstudio. The deal was that you get the EL shield and then you write a review about it on your blog. I needed to do something with the EL wire so I could make a cool video, so I strapped 3 meter of EL wire around Bajdupod. My Bajduinos are not Arduino shield compatible so I zip tied an Arduino Duemilanove with the EL shield to to the bottom of Bajdupod. Quickly wrote some code so I could control the EL wire with my remote control and made a video of it :p
I have now added a temperature sensor to the voltage regulator. The plan is to control the fan with a logic level mosfet depending on the temerature measured. I'm working on the PID algorythem :)
October 19th (*added video n°3)
Had the day of yesterday so I spent some more time working on my hexapod. I've added 4 RGB leds. Soldered 12 resistors to the leds and hooked them up to 3 transistors. The transistors are connected to 3 PWM pins on the Bajduino 328RF24. I had already a sketch to do some colour mixing with RGB leds. I integrated the sketch to the Bajdupod code. And now I have walking Christmas tree :) See the video for the result. Over the last days I had made some changes to my code and now it listens pretty well to my remote control. I now need to add some sensors and write an autonomous sketch. But I'm going to wait till I receive some new servos. There are some MG90 servos on the slow boat from China coming my way.
October 15th (*added video n°2)
After I had written the walking gait for forward/backward/left/right I wanted to try and remote control my hexapod. I have a remote control based on an Arduino Uno / Joystick shield / nRF24L01 that I have used with my Rover 5. I just changed a little bit of code so it would work with my hexapod. Bajdupod 9G is controlled by my Bajduino 3A, it is based on the ATmega328. The servos need 12 pins and I'm using 1 analog input to read the Lipo battery voltage. I also want to add some sensors in the future. So I mounted another of my PCB creations to Bajdupod, the Bajduino 328RF24. It's a small 5x5cm PCB with an ATmega328 and a header for a nRF24L01 module. The ATmega on Bajduino 328RF24 runs @ 3.3V. I have connected it with my Bajduino 3A through an I2C logic level converter. It was the first time I did some real communication between 2 Arduinos over the I2C bus. Took me some time to get to grasps with the Wire library. The Bajduino 328RF24 now receives commands from the remote control and then sends these to the Bajduino 3A. The Bajduino 3A sends the battery status to the Bajduino 328RF24 which sends it to the remote control.
During the extensive test sessions I burnt my finger at the regulator on my Bajduino 3A. So I added a PC fan on top of the board. It's amazing what a bit of air can do, now the regulator stays nice and cool.
While making the video I damaged another servo... bad luck I guess. I will replace all the servos with metal gear ones.You can see in the video that my code needs a lot more work and finetuning.
I'm not very happy with my mechanical design. I should have spent a lot more time on it. The base is a bit to wide, this puts more strain on the servos.
There is a 3rd PCB mounted on the base. This is my "general purpose PCB". I also use it on my Rover 5. It's a board with a 5V and 3.3V regulator, 3 leds, 3 transistors and room for a small buzzer. The leds are great for testing, I will use the transistors to control some RGB leds that will stick to the bottom of the base.
October 7th (*added a video)
I replaced the 6 hip servos with SG90 servos, as the legs kept falling of. These come with some better screws to connect the horn. I then spent an hour testing all the servos and writing the center/min/max positions in a spreadsheet. So far I have only made a sketch with a forward walking gait. See the video for the result :)
This my version of a small hexapod with micro 9G servos. I'm using 2 DOF legs, that way I' need to control 12 servos. They are all controlled by an ATmega328. The board I'm using is my own design. I've named it the Bajduino 3A, it has an ATmega328P-PU and a LM2576 switch mode voltage regulator. The regulator should be good for 3A. Power comes from a 2S Lipo battery. I drew up some pieces in Autocad and had them laser cut by a local company. Not cheap but I prefer it this way, I'm not a mechanical man. I prefer to design things on a pc and let others make it. Just like I do at work :p I then bolted/glued them together. This caused some serious problems. The tiny screws that come with the 9G servos kept breaking when I wanted to attach the servos to the servo-horns. I then resorted to glueing the horns to the servos. I'm quite sure that I will have to re-glue more then once, it's far from a strong connection...
October 6th: picked up the parts from a local company
October 6th & 7th
Putting the pieces together:
Fitted the Bajduino 3A
Now I'm going to try and write a basic walking gate so it can walk around.
In the future I want to add another ATmega328 with a nRF24L01 module so I can remote control it. I also have another acrylic plate that I will fit to the base with spacers. It has some holes in it so I can fit a servo with a ultra sonic sensor on it. So hopefully Bajdupod 9G will be able to walk around autonomously one day.