Week 11: Output Devices

Overview

The 11th assignment of the semester was to create a output device that does something.
I decided to do a recap on the fabrication methods we learned, and combine them
towards making a robot base with motors for the final project.
This week, I learned how to...

Use the water jet cutter for cutting aluminum

Cast rubber parts

Cast plastic parts

Fabricate the Fabduino board

Control DC motors with a microcontroller and a H-bridge

For my final project, I am planning to make a robot with a third hand.
To move this plan forward, I decided to make a base with wheels and motors for it.
I also wanted to do a recap on various fabrication methods, so I decided to make
as much parts from raw materials as I could.

The robot base I made for this week has two motors with wheels for moving around. They are controlled by
a microcontroller (ATTiny44) board with H-bridges. It also comes with a proximity sensor for automatically
detecting obstacles in its way.

I first used the ShopBot for milling out the wood for the base. I then used the water jet cutter for
cutting out the motor bracket. I also molded and casted the wheels. And finally, I fabricated the
Fabduino board for controlling the robot base. I originally planned to use the
Fabduino, but I ran
into so much trouble which is described below. So I decided to make a exclusive board with the
ATTiny44 microcontroller.

Designing the Base

As usual, I used Solidworks to design the base. Most of the base was made with wood, except for
the motor bracket and wheels, which were made with aluminum and plastic.

As for the motors, I used the Jameco 253471, which is a 12 volt DC motor with a embedded gear box.
I referenced the data sheet
to get precise dimensions.

Milling the Wooden Parts

In order to get more experience on the ShopBot, I took a large MDF and milled out the parts.
Everything worked fine without any problems. As for the settings, I used the 1/4 inch
flat endmill with the suggested preference values.

Cutting the Motor Bracket

As I wanted to practice using the water jet cutter, I decided to cut the motor
bracket out from a 3 mm aluminum sheet. The process was similar to that of the ShppBot,
except the OMAX software had a terrible user interface. The OMAX software does not have
a fully automatic toolpath planning feature, so it requires a series of manual operation
to correctly set the toolpath.Besides spending extra time getting used to the OMAX software,
everything went well without any problems.

Casting the Wheels and Tires

As for the wheels and tires, I decided to create a mold and cast them using liquid plastic
resin and silicone rubber. I first exported the Solidworks parts data as STL files, and used the ShopBot
Desktop to mill the positive mold from machinable wax. I then used the OOMOO 25 and casted the reverse
mold.

For casting the actual wheels, I used the Smooth-Cast 325 liquid plastic resin.
This process was pretty strait forward. After I poured the resin into the reverse mold,
it took about 20 minutes to cure and set.

For casting the tires, I first used the OOMOO 25. Before starting the casting process,
I sprayed the remover on the reverse mold. I then added some black acrylic paint into the
compound to apply some color. Everything worked fine, but when I tried to attach the tires onto
the wheels, none of the adhesives worked. So I decided to take another approach.

As for the second try, I decided to use the Smooth-Cast 325, which is the same material
I used for casting the wheels. Before pouring in the resin, I added the same black acrylic
paint to apply some color. However, after a few moments of mixing, the resin started to boil up
and "exploded" like a volcano.

After two failures, I decided to use plain plastic resin for the tire,
and attached the tires to the wheels with epoxy adhesive.

Fabricating the Controller Board

The next step was to create a controller board that drives the motors accordingly to the
proximity sensor values. I decided to used the Fabduino board for this.
In addition to the main page for the Fabduino board, I consulted
Tiffany's website
from last year to get detailed tips for the process.

The fabrication process was strait forward. However, I wasn't able to burn the bootloader
on the board. Apparently, the Fabduino board had so many thin traces and small gaps which made
it extremely easy to create shorts within the circuit. I managed to fix a few shorts, but I
was sure there was more that I wasn't able to find.

So instead of debugging the board, I decided to create my own version of the fabduino
with the minimum amount of traces from the pins. I also added a voltage regulator to enable
the usage of a 9 volt battery, and ISP header pins to make it easy to program the board.

I milled the board and stuffed it, but I was still having trouble burning the
bootloader. After a few hours of trying to debug, I gave up and decided to
make a new board by modifiying Neil's simple motor contorller board with the
ATTiny44 microcontroller. Upon modifying the board, I decided to separate the
H-bridges (1 for each motor) for future integration with the Fabduino. As for
the H-bridges, I used the Allegro A4953.

Programming the Controller Board

For programming the board, I used the Arduino software. To make things simple,
I made the both of the motors to go forward constantly as long as there is no obstacle
blocking its way.

For detecting obstacles, I used the SHARP GP2D12 IR-based proximity sensor.
According to the datasheet,
it outputs a voltage between 0 and 3 V, depending on the distance
to the reflective material. In the control loop, I used the analog input for reading the sensor
values, and made it so that it stops the motors when there is something within 20 cm from the sensor.

Integrating the Parts Together

Assembling the body, motors, wheels, controller boards, and wires together was the most exciting part.
I also attached a bearing caster on the rear to balance the base.

After everything was done, I connected a 9 V battery to the board and tested the robot base.
Unfortunately, something was wrong with the motor drivers. It seemed a constant voltage was not
being fed into both of the motors. Therefore, the robot base moved in a awkward way, but the control loop with
the proximity sensor was working. I would like to work on debugging this issue towards the next few weeks.

Downloads

You can download the design files, schematics, and the source code files for this robot base.