Let's Make Robots!

Junior

Maps enviroment, explores with arm, falls over.
AttachmentSize
Juniors_Schematic.jpg1.02 MB

Sun 7th Dec 2008

Had a few setbacks with the old NiMh battery pack dying and the new LiPo battery packs not fitting where I hoped. Compare the old photo to the new one below. On the upside the new batteries have twice the amp/hour rating and a friend helped me get some polymorph plastic which I put to good use on Junior.

Junior_closeup_of_sonar__small_.jpgI've used the polymorph to make a base / mounting plate for the batteries, a bracket to mount the servo assembly and another small bracket to mount the sonar. As you can see I was in a bit of a hurry to get the sonar up and going so I've just hot glued two small servos together. They are cheap enough that I don't care if they stay that way and it was the most compact neck joint I could make.

 

 

 

 

 

 

 

 

 Junior_EEprom__small_.jpg

Because the new batteries did not fit between the motor control boards I ended up with a space under the new batteries. This turned out to be perfect for my i2c eeprom expansion board.

As you can see it's a perfect fit. Just have to workout where to fit the RTC.

 

 

 

 

 

 

 

 

 

Junior_sideview1__small_.jpg

 Junior's looking like a "Saturday Night Fever" contestant at the moment. He's posed this way because I can no longer access his motor wires to manually adjust his position and this pose is the safest while I'm developing the code to move his arm. In this position any joint can move a fair bit without a collision.

One advantage of the bigger batteries is that they are about 50% heavier than the NiMh battery pack and are a perfect counter weight when Juniors arm bends over backwards, even at full extension. The batteries are a higher voltage, typically 7.4V so the motors get a bit more juice. The servos are not affected as they run of the 5V supply. The biggest setback with the LiPo batteries is they have special needs for charging and can explode if not treated with the proper respect. This means that ultimately I need to build a special charger/docking station. These batteries cannot be trickle charged!  Read this fact page before considering LIpO for your robot.

 

 

 

 

 

 

 

 

 

 

 


 

Tue 2nd Dec 2008

He's nearly ready for his first video! I just have to write something more sophisticated than diagnostic routines. I've saved the schematic as a jpeg so that you dont need special software to read it but it is big so save it and view it with a photo editing program.

Updated with more pictures and a full schematic of both Junior and the Laser RF MkII. I'm trying a lot of new ideas at the moment so I'm not certain when he'll be ready to video. Everything has been tested to some degree individually so hopefully he will be done in the next week or two.

Have had a lot of destractions with new sensors to make and play with. The laser RF MkII was a disapointment as it was unable to give me the resolution I had hoped for and Rover was going to be too big for Junior even if it did work.

Another reason I've taken so long is that I had some problems with my first motor control board that had to be corrected before I could make the second one. Now they are both finished and tested.

Junior_motor_control_boards_front.jpg

As you can see they have been shaped to fit behind / between the tracks and the wheels as this was the only way to fit so many parts on such a small robot.

Junior_motor_control_boards_back.jpg

I had considered making custom boards but prototype board was quicker and cheaper. Considering I made a mistake with the first one I'm glad I didn't do custom boards.

Junior_motor_control_boards_test.jpg

This is the first board being tested. I've plugged in some motors I removed from a toy dinosaur and wrote a test routine that slowly increased the motor speed in both forward and reverse. I was worried that with all the mucking around I might have damaged a transistor with too much heat or zapped a FET gate with static but all went well. No magic smoke.

Junior_s_wire_nest.jpg

This is Junior with both motor control boards fitted. You can also see my IR sensors on the front. These are just general obstacle detection sensors to prevent Junior hitting anything too small or low for his sonar to detect. Until I can sort out the laser range finder I've decided to go with sonar. I'm using a Maxbotix EZ1 because of it's small size and because it has a pulse width output as well as analog so I can use a spare digital input and the pulsin command.

Junior_s_rear_IR_sensor.jpg

This is the double version of my IR sensor on the back. It can detect an object over a wider range and being mounted on the rotating base give it the ability to look around a bit.

Junior_s_mainboard_layout__small_.jpg

This is how I remember which wire goes where. From time to time I will add a new circuit and then this photo and the schematic have to be updated. The servo outputs were added for testing my object tracker but will come in handy plus in my schematic I've worked out how to add two more if required.

 


 

Laser_RF_MkII.jpg

The new range finder uses a pulsed 1mW laser pointer instead of a spinning mirror. This eliminates the mixer. Should have better resolution.

Hall effect sensors for position sensors.

The gripper will have a sense of touch using antistatic foam and "wire glue". I'll do a Tip/walkthrough on this once I work it out.

Multiplexed PWM control with multiplexed feedback. Allows the MCU to control 8 motors (in pairs) and determine load/stall conditions of each motor.

Junior is going to be my test bed where I can practice my programming and try out new sensors. That Picaxe 40X1 is gonna cop a hiding!

He's a bit top heavy and can fall over if the arm extends too far in any direction but this will be good for experimenting with balance and balance sensors.

The MkII sensor board shown on the right was originally designed with a picaxe 08M but by changing to a  14M it is capable of driving two mini servos that will make up a neck. With another two mini servo's set up for continuous rotation as drive motors it will be a robot in it's own right called Rover. I'm thinking of setting up junior so that he can use his arm to attach/detach Rover.  What could be better, a robotic boy and his robotic dog? I suppose I could have called it K9 but since it will rove about...

All this is going to require a big program so Juniors main board has an i2c interface for a RTC and a eeprom miniboard I've ordered from futurlec that has 4x24LC32 eeproms. http://www.futurlec.com/Mini_EEPROM.shtml Hopefully this will be enough. There's still a lot to work out but once the parts arrive I'll get a basic program running and post a video.

Junior_gripper.jpgIn the centre of the gripper you can see the white LED torch that came as part of the robot arm kit. I've mounted a LDR above it so that the robot can determine if an object is between the pincers. The pincer on the left has my home made touch sensor mounted on it. I lost 3mm of clearance between the pincers but can now tell roughly how hard the robot is gripping an object. Because there are two touch sensors it can also tell where the object is placed within the gripper. I'm posting a walkthrough on how to make this sensor for anyone interested.

 

 

 

 

 

 

 

 

 

 

 

Most of my parts have arrived except for some minature servos for a neck to mount the MKII Laser RF.

Junior_so_much_stuff.jpg

As you can see it's a lot of parts for one small robot. especially those eight motor control relays and 5W shunt resistors. The shunt resistors perform two functions, they limit the stall current to just over 1A per motor and they allow the picaxe to measure the current drawn by the motors so that it can tell how hard a motor is working. You can also see one of the IR proximity sensors and my eeprom and RTC mini boards from Futurlec.

Junior_Mainboard.jpg

This is Junior's main board, with the TLC1543 10bit 11channel ADC in the upper right and two 4052 dual 1 of 4analog switches below. The TLC1543 brings my total number of analog inputs to 18 and the 4052s allow me to multiplex my PWM and directional outputs to control 8 motors in 4 pairs. This was necessary because the 40X1 only has two PWM outputs and therefor I can only control 2 motors at a time. Other features of this board include the i2c port at the bottom of the 40X1, IR communication, internal serial connection to communicate with slave boards like the MkII laser RF. Battery monitoring with warning LED.

Junior_fitting_motor_board.jpg

This is my solution to lack of space, the motor control circuitry is divided onto two boards and mounted either side with the relays, shunt resistors and drive FETs mounted between the tracks and idler wheels. The sheer number of wires and connectors are proving a problem because of the space they take up.

Junior_hotglue_washer.jpg

As you can see in this picture I needed some insulating washers, since I didn't have any I cut two slices of a gluestick and melted a hole in the middle with the soldering iron. You gotta love those glue sticks!

Junior_oh_what_a_mess.jpg

This is the other side still waiting for it's motor control board. I'm quickly running out of space and I haven't even mounted the IR sensors and wheel encoders let alone the laser range finder.

As soon as I have him going I'll post some video's.  Once I've worked out his software I'll try to get him to write LMR with a pen.


 

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Curious, trying to guesstimate the size of the arm. How far will the jaws open? Enough for a Coke can? Think I'd heard it will pick up 100 g, think that might be a little over 3 ounces.
The robot as it stand in the photo is 200mm (8 inches) high and the grippers open to about 40mm (1.5 inches). Enough for a shot glass. Could make a tiny bar tender out of him.

hey, this would be cool. you could use a pour system that is acutated by an ir interupt sensing system. when the shot glass is placed on the tray, choose a drink from the (lcd)menu and have it pour.

We have a coffee system that works similarly to this at work...I have opened the machine up as much as I could to understand how it works....pretty damn simple and these folks sell/lease it for bookoo bucks....

Sounds good and if I can get it up and running along with the nice new LCD display I got the other day then I'll give it a try.  One of the things I want Junior to do is to be able to go directly to an object such as a shot glass using his laserpointer to locate it accurately and pick it up. Only possible drawback is that glass objects and mirrors may trick his laser RF.
That looks like a great start!  That reminds me of an old Radio Shack robot arm I used to have =) Have you played with I2C much?  That's something that I'm thinking of using for my robot.
Never used it before but there are many little add on boards out there that use it so I've got to learn it.
It actually seems like it would be very useful in many robots.  I'm thinking of having two sonar sensors mounted on a servo motor each.  Both of them would be controlled by their own microcontroller.  Then, having them continuously turn and take distance measurements.  A master microcontroller would then use I2C to get all of the data.  Unfortunately, the 08M doesn't support I2C =\
As Voodoobot says, use the serin/serout commands. Thats what I'm going to use between my master board and slave boards. The only potential problem with non X1/X2 parts is that while waiting for a serial input, everything else stops. With an X1/X2 part as the master it can timeout if there's no reply.

a way around that and what I'm using is the interupt, where prior to going to serin, when i get a signal on that pin, it then goes to serin expecting something. see the link for more info and I recommend checking out this guys whole site as it has a wealth of info.

http://www.hippy.freeserve.co.uk/picaxesi.htm 

This is what I based my code on and it seems to work great. it's best to draw up a flowchart though to see where this can get you into trouble as I was thinking about this and figuring on a couple scenarios that could cause some havoc.

 

This is what I'm currently doing with 2 8m's and a 14m.

One important note, GROUND the SERIAL INPUT LINE USED FOR PROGRAMMING if you are building a custom board as I was doing. This one gave me a headache for a couple days wondering why things were going wonky....sometime, and others times they apeared to work fine....

Thanks for the link!