Let's Make Robots!

Arduino Shield for building robots

I've been asked by a few people from different places if there is a simple way to use an Arduino to build robots. I explained there are ready made boards like Roboduino, Romeo, Motoruino, etc. that can be used. Or a custom compatible board. I told them that I went both ways, mostly because Roboduino doesn't have an H-bridge onboard, so I designed my own customizable board, R-Dev-Ino. Usually people are puzzled with all that information, as they have heard about Arduino, some have used it in art projects or so, but did not hear about the other variants. Seems complicated...

Of course, one can buy a prototyping shield and a breadboard and make their connections on the breadboard. This route usually leaves no room on the breadboard for other experiments, like testing out different sensors or actuators. Also, the user has to have some electronics knowledge to make the connections. Even more complicated...

How about a shield that brings all of the good things together? Ready made 3 pin headers for sensors and servos but also an on board H-bridge that will drive most miniature motors? What if we add a mini breadboard to it? We will have a shield that allows the user to plug and play some parts, experiment and learn more about robotics.

Why a shield and not a stand alone robotic board like the Picaxe used on the Start Here robot? Using an Arduino with a shield form factor allows the user to add more functionality to their robot through other shields like the xBee shield, the GPS shield, the WiFy shield, the LCD shield and so on.

So I have designed a first prototype of the Robot Builder's Shield. Features:

  • 6 servo connectors (power from battery, digital pins 8-13), 
  • 6 sensor connectors (regulated 5V, all analog pins), 
  • a serial connector (for an external serial LCD for example or anything else),
  • a SN754410 H-bridge (1 amp per motor, digital pins 4-7, uses Timer0 for PWM),
  • space to attach a mini breadboard,
  • connector for separate battery for motors and servos
  • pins 2 and 3 (external interrupts) are not used. 

I did not add a pin 13 LED as it is on the Arduino. Possible add ons are a tiny reset button and a connection from battery to the Vin pin, perhaps a power switch. Also caps near sensor and servo connectors...

Here is a picture, the blue is the bottom, GND plane, the red is the top, 5V plane. Round pins are male, oval pins are female. The hashed area is for the breadboard.  

Any comments?

 

Revision 2:

I still need to find a 2 pin push button for reset and see if I can fit it near RST pin. Also I need to make the text more clear. Unfortunately I could not double the pins outside the breadboard area, so it will be either or. This time the planes are not visible, I'll change the pic in the evening after I come back from work. I'm late already...

Update, Sept. 03 2010:

Just got a email from SeeedStudio that the boards were shipped! It will take 10-30 days to get here. More updates when they arrive.

 

Update Sept. 15 2010:

I have received the boards in the mail today. It took 3 days to manufacture plus 12 days for shipping. And the boards look awesome! I have populated one board, it took me 20 minutes to gather all the parts and solder them on the board. Then I plugged it in the brand new original Arduino Duemilanove and I noticed a problem. The leads from the battery connector are touching the USB connector on the Arduino. I snipped them short and filed them almost flush to the board, then covered them with a piece of electrical tape. I hate that big USB connector. I'll see what I can do for the next version. During the weekend I will start using it, making some experiments and drive some motors and servos.

Anyone interested in buying a board ($5/piece plus shipping - PayPal is charging me to receive money...) PM me with your address and I'll let you know my PayPal email address. I will soon open an eStore and I will be offering boards, kits, parts. All the money I'll make from the eStore will go in robotics. Chris The Carpenter will get a board donated because he was the first expressing interest in getting one and because of his amazing work on LMR. 

Of course, someone will get to be a reviewer!

Here are the pictures (sorry for the slight out of focus, my camera can't decide where to focus when taking close range pictures):

Update Sept. 23rd 2010:

I do not offer the parts yet, but here they are from SparkFun:

 

 Total is: $14.90 plus shipping. I'll try to at least match that price if not better.


Update, Oct. 5th, 2010:

ATTENTION! Ignoblegnome discovered a short on the board. It is easy to fix if you did not solder the socket for the H-bridge yet. Look carefully at the following picture and cut along the red line with a utility knife. Only the top layer is affected and you will solder on the bottom, so you don't risk of shorting it again when soldering.

I apologize for any inconvenience. All people that bought a board from me will receive a free new board from the next batch, in about a month.

 

Update Oct. 14th, 2010:

Revision 2 is ready, take a look and let me know if you want me to modify anything.

Added:

  • power switch
  • reset button
  • jumper to forward Vbat to Vin of the Arduino, a wire jumper can be used to plug Vbat to 5V if one uses 4 NiMH rechargeable
  • filtering capacitors near the servo and sensor connectors
  • double Arduino pins
  • prototyping area with power and ground buses in the middle (want it different?)

There will still be the issue with the power connector that touches the huge USB connector on the Arduino (use a Seeeduino instead, they have small USB connector). There was not enough room to add the mounting holes, I could do it only on one end, so I gave up on them.

 

Update Nov.12th 2010:

New boards are in stock and ready for sale here:

http://robotxdesigns.ca/2010/11/08/the-robot-builders-shiled-v2-pcb/

and kits:

http://robotxdesigns.ca/2010/11/08/the-robot-builders-shield-v2-kit/

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Revision 2 is ready for order. Any comments? Want anything different on it? Please let me know before I submit the order!

Thanks!

The new boards looks pretty good. I must say that it is frustrating that the power connector shorting to USB on the Arduino is still a problem. The only solution I can think of is if there are extra long header pins available that would hold the shield higher over the Arduino and avoid the short. I suggest that you research this, and if such header pins exist, that you recommend them for use with your board.

I also have a question about the prototyping area. Is it large enough that you could use the mini bread board your recommended for version 1 if you wanted to? I can't quite tell if adding the 2nd row of the Arduino pins reduced the prototyping area so that this was no longer possible.

In general, I think you have designed a very nice board and have done a great job of incorporating everyone's suggestions. Thanks for all of your efforts!

The mini breadboard fits between the pins, look at the white rectangle that marks it's boundary. The long pins are for wire wrapping prototyping and they are not golden, just tinned. I am trying to find a source cheap enough for them, thanks for the suggestion!

Other than that, is there something else I should change?

I am looking into getting several colors for the solder mask. That will make the boards $1 more expensive, but they will look cooler. I will still be offering green boards for $6 (blue, red and yellow boards for $7).

Color is not a big deal for me, but I'm sure others may appreciate the option.

Nothing else really ocurrs to me right now. I'm looking forward to trying out the new board, and to see what other's make from them.

I have to say that I'm really happy with the board. There are a few kinks that need to be worked out, which I'm sure Ro-Bot-X is catching in the next version.

I've successfully built Penny using the board. Here's an overhead picture that highlights the board itself.

There's a few improvements that have already been pointed out on this forum post:

  • Need capacitors for sensor and servo pins
  • Power connection shorts to Arduino USB connector
  • A jumper to connect battery power in to Vin on board would be nice
  • Flyback diodes for the SN754410 are recommended (currently working fine without, but YMMV)
  • Mounting holes in the prototype area

You may notice in the picture above that I've left off the last row of sensor pins and the last two rows of servo pins. I installed a 10uF cap in the power and ground pins for Sensor 5. I plan to install a 220nF cap and a 220uF cap on the two empty servo rows, but I didn't have them on hand. Right now I don't need that extra sensor or those extra servos anyway. The next version of the board includes space for two caps for the sensors and servos.

The red wire routed across the surface of the board is connecting the power in terminal to the Vin pin. I've left the mini breadboard off for now, but I will add it soon as I plan some enhancements for Penny.

As Ro-Bot-X already pointed out in his post, there's a shorted trace that needs to be cut or your motor driver will not work correctly. I discovered the error and corrected it quite easily. Ro-Bot-X has been great to buy from and deal with. He has been very responsive in all his communications.

The biggest frustration was the USB port shorting the power connector. I took Ro-Bot-X's advice and filed down the power leads as much as I could and used electrical tape to insulate. However, I did have to keep the shield inserted at a bit of an angle to make contact with all the pins. You can see it in the picture below, but it is not very noticable once the robot is assembled.

I'm wondering if there are headers with extra long pins so the board can be kept at a uniform level above the Arduino, and it won't be touching the USB. If so, maybe Ro-Bot-X could recommend them in place of the current ones.

As you'll see if you check out Penny's robot page, using this board cleans things up a ton, since many of the wires you'd need if you breadboard your design are handled for you. The board is working just fine for me so far.

I've already got ideas that will make use of some additional sensors and servos. I hope to make the most of this board.

Thanks for the review!

There are lots of features we would like to see in the next version of this board. If I keep the breadboard, there is limited space to add everything without making the shield bigger than the Arduino board. So, I would like to make a list of the MUST BE features:

- capacitors for the servo and sensor pins

- battery power routed to the Arduino Vin - should I add a jumper so you can select/deselect this option?

- transistor based inverter for the Dir pin, pwm to Enable pin and jumpers so the user can select different motor control configurations

- prototyping holes under the breadboard - can this be smaller than the available space so I can route everything?

- double the Arduino pins so another shield can be plugged above this one

- replace the power screw type connector with a polarized Molex (like on the uBotino) - or remove it completely?

- replace the motor screw connectors with regular pins (like on the uBotino)? - regular 2 pin housing and crimp pins will be provided in the kit

- add a 3.3V regulator and route it to Arduino's 3.3V pin

- add a reset button

 

Your suggestions will make a better board! Thank you!

I agree the following are MUST BE features:

  • SOME way to deal with the USB and power shorting issue (maybe longer pins like this)
  • caps for servos and sensor pins
  • flyback protection diodes for the SN754410 (reports are that the internal diodes are NOT considered adequate for flyback)
  • battery power to Vin jumper
  • prototyping holes under breadboard (Are there smaller breadboards than the mini one you recommended? I searched but could not find one. I could live with a smaller prototyping area with only holes instead of the breadboard option.)

BTW, I like the screw terminals for the motors and power. It makes it easy to hook up everything versus having to buy a Molex or other special connector.

I think these features are "nice to have":

  • Double the Arduino pins (This would be very nice.) 
  • Reset button (You are already routing the reset pin to your board, so someone can wire a button up if they want to.)
  • 3.3V regulator (Doesn't the Arduino already provide a 3.3V output that you have routed to the shield? It's only 50mA, but so what? If you provide a 3.3V regulator, will it be a problem to connect it to the built-in Arduino 3.3V supply line?) 
  • Pins and/or jumpers for the SN754410 enable pins.

Let me ask something about using PWM with the SN754410. If you have a motor connected to two of the outputs, you run it in either direction by setting one output HIGH and the other LOW. So what happens if you feed a PWM signal into one side of the motor, and then just flip the other side of the motor between HIGH and LOW to change direction? Would that work? Will the H-bridge in the driver chip dislike having both inputs HIGH during the PWM cycle?

If you do need/want to use the inverter pin, I'd recommend leaving it tied HIGH by default. Then if the user wants to switch it for PWM, they can have a jumper like you suggest.

Thanks for the suggestions!

Here is a readout for the thing I will implement with the inverter: http://www.societyofrobots.com/member_tutorials/node/161

Another good readout that explains the types of motor control: http://www.barello.net/Papers/Motion_Control/index.htm

Until someone proves me wrong, I don't think fly back diodes are necessary IF you don't use a motor that draws under 1A. For a full 1A/motor a heat sink is necessary. Even at more current, 2 SN754410 can be stacked for double the current, but make sure you use a heat sink. I never burnt a SN754410 and I used a lot of them on my robots.

Another readout that shows you the stacked chips: http://www.kronosrobotics.com/an101/AAN101.shtml

And here is the picture of them:

If you got a board from the first batch, you have to correct a trace touching a pad before you start soldering. Look at the latest update, I posted a picture of the problem.

Please accept my apologies.

Sorta off topic, but scale your images before posting....these images get scaled visually to a 500px scale but the size is still 1.4mb each.