In this Instructable I want to describe how I designed a little robot, what guided my thoughts and why I took certain decisions. I deliberately did not name it "How to design a robot" as I have no intend to tell somebody how he/she should design their robot. So if you find things done in a unusual way, smile at it and consider that I have never learned how to do this. If you wan to do things different - go ahead! This article only reflects the results of a more than 12 months long journey. I hope you enjoy the outcome.

Guiding principles

I had a few goals with this robot:

  • Small - originally aiming at less than 5cm * 5cm, I ended up with 9.5cm * 6cm excluding wheels with all the features I had added to the robot
  • Cheap - all parts should sum up to less than 50 USD. Currently I need about 30-35 USD with low volume discounts. All other robots I have seen so far with similar features were way above 100 USD which makes it unattractive for students and scholars
  • Easy to Solder - Originally I started out with through-hole parts but switched to SMD parts early in the design phase. I use SMD1206 parts that are easy to solder with some practice. The tricky most part is a chip with TQFP-44. Using the flood/suck technology, even these parts are easy to solder by hand
  • Easy to Program - The robot should be programmable via the Arduino IDE or UECIDE (an IDE I can recommend for programming Arduino boards and ChipKIT boards)
  • Autonomous - The robot should be able to act autonomously with its own micro controller, Furthermore, it should be able to talk to other devices such as an Arduino, ChipKit or Raspberry-Pi board.
  • Plenty of holes - a good robot has plenty of holes to connect additional devices including the holes for Arduino shaped boards to be carried on top
  • Swarm capable - the robot should be able to exchange information with other robots of this kind

Step 1: Move the Robot

The robot follows the very common car design with two motors building an axle and a caster ball instead of a second axle.

Motor Selection

I selected a small gear motor that you can get for a few USD/EUR that run at Voltages of 3-12 V with a directly connected transmission at a gear ratio of 1:50 - 1:200. They all have the same size and come with a simple housing to screw them to the plate of the robot. I prefer motors with a high gear ratio, as they move slower, which makes debugging of the code easier. As the motors are cheap, I got me a pair of all ratios.

Lately I found a gear motor with a built-in encoder. This instructable does not handle this but as a preparation, I inserted a large hole in the robot plate to be able to pass cables from the bottom side to the top side for processing.

The wheels I use are Pololu 32x7mm Wheels.

Driving, Push or Pull

The simple car setup makes driving pretty simple. As long as the motors turn at the same speed, the robot goes straight forward. as soon as one motor runs at a slower speed, the robot turns towards that side.

The direction decides, if we have a push configuration with the caster ball in front or a pull configuration with the caster ball behind. Both configurations have advantages and disadvantages. I therefore decided to take this into account for the further design to offer both configurations. This is the reason for the odd hexagon shape of the robot plate.

Motor Driver

There are plenty of motor drivers available. I decided to use the L9110 as it is very simple to handle and comes with internal protecting diodes and the following features

  • Low quiescent current
  • Wide supply voltage range: 2.5V -12V
  • 800mA continuous cur rent output capability per channel
  • Lower saturation voltage
  • TTL / CMOS output level compatible
  • can be directly connected to the CPU
  • Output built -in clamp diodes for inductive load
  • Integrated control and drive into a monolithic IC
  • With pin high -voltage protection function
  • low price

The function of a motor driver is described on lots of internet pages, so I will not repeat this here again. Searching for L9110 gives you plenty of information

The last three pictures show a test setup to get used to the driver chip and the way I put the parts on the robot plate.

Schematic for motor driver

The schematic shows the simplicity of this chip. You just connect the motor supply voltage ad GND and the input pin state determine the movements of the motor.

I added a 4.7 uF capacitor on both L9110 driver chips to compensate the power drain a motor takes when started, stopped or reversed. Depending on the motor used, these may need to be adjusted in capacity.

I also added LEDs to each input line. This is very convenient while programming the robot, as you can see what your code is doing without moving the robot by switch off the supply voltage. The LEDs are connected via solder pad jumpers (SJ1-SJ4). This saves battery power once the code is final and the LEDs are no longer needed. Opening these solder pad jumpers disables the LEDs.

<p>Nice work. Which motor did you used? can you provide links to where to buy them plase?</p>
<p>Salut,</p><p>the motors I use are N20 gear motors as you can find them at many places. Just one link to illustrate (be careful to select the rpm you want to have): </p><p><a href="https://www.aliexpress.com/item/1-Pcs-N20-DC-12V-100-Rpm-Gear-Motor-High-Torque-Miniature-Motor-Gear-Box-Shaft/32695520982.html?spm=2114.01010208.3.12.kBysvR&ws_ab_test=searchweb0_0,searchweb201602_5_10065_10068_10000009_10084_10083_10080_10082_10081_10060_10062_10056_10055_10037_10054_10059_10032_10099_10078_10079_10077_10000012_10103_10073_10102_10000015_10101_10096_10052_10053_10107_10050_10106_10051,searchweb201603_3,afswitch_5,single_sort_0_default&btsid=d0f7b1a3-0de6-4abb-8e71-d9169ae0150c">https://www.aliexpress.com/item/1-Pcs-N20-DC-12V-1...</a></p><p>and the following link to the mounts to attach them to the PCB: </p><p><a href="https://www.aliexpress.com/item/10pcs-3PI-miniQ-N20-Micro-Motor-Mount-Set-12mm-DC-Gear-Motor-Mounting-Bracket-Toy-Car/924144024.html?spm=2114.01010208.3.71.tSgsZ8&ws_ab_test=searchweb0_0,searchweb201602_5_10065_10068_10000009_10084_10083_10080_10082_10081_10060_10062_10056_10055_10037_10054_10059_10032_10099_10078_10079_10077_10000012_10103_10073_10102_10000015_10101_10096_10052_10053_10107_10050_10106_10051,searchweb201603_3,afswitch_5,single_sort_0_default&btsid=7c32b9f0-1da2-4c3e-b52d-6782432b91d8">https://www.aliexpress.com/item/10pcs-3PI-miniQ-N2...</a></p><p>The wheels are Pololu 32x7mm for 3mm shaft motors:</p><p></p><p><a href="http://www.exp-tech.de/pololu-wheel-32x7mm-pair-white">http://www.exp-tech.de/pololu-wheel-32x7mm-pair-wh...</a></p><p>For the caster wheel you have to adjust a standard caster wheel to fit the height of the wheels you selected. In the worst case, you can use a stick but that is just a last resort.</p><p>Ciao, Mathias</p><p></p>
Very detailed and well documented design decisions. What did you use for the robot renderings seen through the article?<br><br>Good idea to use the infrared LED/sensors for communication with other nodes, do you have some swarm comma working code?
Salut,<br>I use PowerPoint to draw the pictures. It uses a style that I learned from Xara/Corel but in my day job I have to use PowerPoint, so I simply stick to one tool.<br>I am at the beginning with the coding for the swarm function. Currently I struggle with the logic to follow another robot. Due to the emitters at the rear, the following robot gets more light than from reflecting surfaces, which makes the programming easier. I also use the EEPROM to give each robot a unique ID.<br>First goal is to have a robot following a line with a linefinder module and then a second one autonomously catching up and following the line robot. Good to have the Christmas break ahead ;)<br>Ciao, Mathias

About This Instructable




More by GastonLagaffe:HelveKit Robot: How I Designed a Robot Solder your own HelvePic32 ChipKit board 
Add instructable to: