Final Project : Making a Remote Controlled Car from Scratch
The final project came very quickly upon me, and I realized that making a Segway would be a bit too ambitious for the time given. So I decided to make a remote controlled car, which I've always found really cool! This includes two parts:
- The remote, which uses two potentiometers to gather input from the user (one for forward - backward, the other for left- right) and sends it via bluetooth.
- THe car itself, made from a chassis, four wheels, two DC motors which independently control the two back wheels respectively (to allow for turning if one motor goes faster than the other), batteries, a composite hull, and all the necessary boards.
Choosing the motor
The lab had several DC motors to choose from. I wanted two features: resonable speed (around 600 RPM) and reasonable torque (so that the car will actually move). The geared DC motors available were unfortunately too slow (120 RPM), which would result in very unexciting speeds. The other DC motors were not geared and had a very weak torque. After a lot of asking around, I ended up assuming that a big ungeared DC motor (Johnson 9167AJ) would probably be able to pull it off (I was unfortunately wrong).
This was the one part I could not make for myself in a reasonable time span. I went to RC cars of Boston to buy wheels (about 3h of bike riding).
Linking the motors to the chassis
Linking the motors to the Chassis was a non-trivial problem: ideally they would be screwed onto the chassis using the holes available, but due to time constraints I wanted the axle of the motor to link directly to the wheel, and hence for the motor to lay flat.
For this I designed a two-part parametric holder in Antimony that would constrain the motor to no degrees of freedom and clip onto the chassis.
As seen above, the bottom piece is first inserted, then the motor, and then finally the top piece slides right on and constrains the motor.
The 3D printer was having issues changing filament, so we dismounted the head and remounted it:
After that the printer happily printed my pieces. Unfortunately it turned out that I was too paranoid and let the clearance parameter (extra breathing space between motor and holder) be too high, so the motor slid throught the bottom piece entirely, and is not held by the change of diameters at the halfway mark as intended. The prints still were ready to be used.
The chassis was envisionned as a simple plate of metal with slots for clipping and space for taping extra components. I added four holes in the corners envisionning an added composite hull that would be fixated on the corners.
I planned on using a waterjet cutter to cut a chassis out of 1/8 inch thick aliminum. The CAD file had to be in a .dxf format so I used Rhino to make the design. I could not make it parameteric as in Antimony but I used the same parameters to find the correct positionning of slots.
Steve at the cyclotron building machine shop allowed me cut the chassis with the waterjet cutter there (along with some brackets, the last pieces I needed for the week 4 harmonograph). Here is the waterjet cutter in action:
And after the action: the shape was very neatly cut out from the aluminum stock I had scrounged from the shop!
Attaching the Wheels to the Chassis and Motors
There were two different connections to make:
- The one between the back wheels and the motor (wheels fixed to axle)
- the directly linking the front wheels and the chassis (wheels freely spinning on an axis)
For the back, the wheels had a hex chaped slot that I could use to fix the axle to the wheel. I used this feature to design a connector betweent eh motor and the wheel (I counted on a simple hole and hot glue for the motor side).
For the front wheels, I did not worry about this type of fixation: I just got a threaded rod of the right diameter, and nylon insert locksto restrain the position of the wheel. I finally designed a simpler holder piece which I could clip onto the chassis as well:
Adding a 12V Power Supply
I discovered that batteries could be mounted in series to provide an arbitrary current. Hence for 12V (ideal value for the motor), I could have used 10 rechargeable batteries (1.2V each) or 8 alkaline batteries (1.5V each). There were very simple battery holders in the shop for batteries in groups of 4, so I went with the alkaline option for the moment.
Instead of hooking the power supply to a circuit with a chip, I first directly hooked them up to the DC motors for a test. Unfortunately it was at this moment that I realized that the torque was insufficient, as any friction would stop the wheel.
For the future I can simply change the values of the parameters in Antimony to size the motor holders to a new motor, this time with a gearbox to ensure sufficient torque (making sure the positions of clips are still compatible with the chassis slot postionning). Ideally I would get my hands on a motor of this type that would run at 500 RPM instead of the 120 in the shop. I was also limited by access to 3D printers 9( being intensiely used), so for the current version I stuck with the simple DC motors for the sake of demonstration.
The car itself required a receiver telling the motors what speeds to turn at and in which direction. In the spirit of networking, I made a seperate board for each motor (with an H-bridge control system, see week 8), and a motherboard that is meant to communicate with the other boards. These contained many headers, and I made the mistake of making them too close to each other. Hence the usual 2 by 2 header with ribbon cable arrangement could not work for all connections: some jumper cables were required. All boards were designed for a 12V supply, with a 5V regulator for the chip subcircuit.
To attach the fully soldered boards onto the chassis, I opted for the crude yet efficient method of double sided tape. However to avoid damaging the boards with vibrations I added a layer of cardboard in between the two. Here is the motor board attached to the chassis:
And here is the colletcion of boards all attached:
Making the Remote Control
For the first iteration the remote was simply deisgned as a bigger board (without an outline cut). I wanted to use two potentiometers with on-the-fly adjustable knobs to allow for control of the car. For these I drilled holes into the empty part of the board. I lso drilled smaller holes to allow for wires to go from under the board to ground, VCC and two input pins, hence connecting the potentiometer to the microcontroller.
The FTDI pin configuration was set on the remote in case I needed to find an easy way to debug the board, or set up an application with the computer that could even allow for live fine tuning or customization of the control details.
Our shop had two options for supply of wireless communicators: a bluetooth duplex and the NRF24L01. I first considered the nRF however due to the excess amount of wires used to hook up the module, I went with Bluetooth; this turned out to be a poor choice as the modules refused to talk to each other even at the setup stages. After an hour of debugging I determined to make a first iteration of the project with ribbon cable connections instead of wireless, to allow for easy debbugging.
Putting it together and Moving Forward
My experience with final project was constantly being shaped by time limitations. Unfortunately I could not replace the motors and did not yet get to the stage of coding the remote control for interaction with potentiometers. I finally did not get the opportunity to code for the wireless modules or make a composite hull for the car style. These are all projects to look forward to
I was able to provide the miniature car with the basic design, pieces, circuits, components set into place. It looks pretty neat from the top (and the underbelly too, see the picture at the top of the page). I am now much more prepared for a more successful iteration of the project
I am truly grateful for the opportunity to take the How to Make class; hope you enjoyed the site!
- Antimony file (3D printed pieces): DC_motor_attachment.sb
- Rhino file (Chassis): Chassis.3dm
- Motor board (schematic): DC_motor.sch
- Motor board (board layout): DC_motor.brd
- Motherboard board (schematic): Motherboard_v2.sch
- Motherboard board (board layout): Motherboard_v2.brd
- Remote board (schematic): Remote.sch
- Remote board (board layout): Remote.brd
- Water jet cutter
- Ultimaker (and Cura)
- Makerbot (and Makerware)
- Roland Mill