Omni Car Project
About Omni Car Project
By: MingWei Yeoh
It's a tank driven car with omni wheels for some sick drifting without the fear of shredding the floor! Combined with a responsive FLYSKY Drone Transmitter, this makes for a fun project!
Challenges
CAD
The main gripe with the included motors in the kit is that they are a little slow. Thus we will be making a custom 1:2 speed gearbox with OnShape in order to speed up the drive wheels!
Answer Key Onshape Files Student copy of Onshape Files
Electronics
Electronics aren't that complicated. We use 3 wires to wire the drone receiver to the Arduino Mega and wire up all the motors to the Adafruit Motor shield. Some basic soldering of the header pins onto the Motor Shield is required.
Code
If not already, you should have a way to upload code to an Arduino (Arduino IDE, or Platform IO).
Install Arduino IDE
Otherwise, the code is extremely basic and can be found in the omniwheelcar.ino file.
Materials
- 1.5" [Omni Wheels](38mm (1.5 inches) Double Plastic Omni Wheel with 8 PU Rollers – The Smallest Omni Wheel – 14184 – Oz Robotics)
- DAGU Robot
- [Adafruit motor Driver Shield](Motor Stepper Servo Shield 1438 Adafruit Industries | Jameco)
- Arduino Mega
- FLYSKY Transmitter & Reciever
- M3 Lock Nuts
- M4 Grub Screws
- [M3 Hobby Park Bushings](Redcat Racing 02101 C-hub Bushings King Pin Bushings 12pcs 02101 609132454745 | eBay)
- Assorted M3 Bolts
Getting Familiarized with MAE Terms
Bushing
For spinning objects, it is good practice to use a bushing (Which is basically a cheap bearing) instead of simply spinning an object on a bolt. They are typically made of a low friction material like bronze.
Through Hole
Hole that is meant for a bolt to pass through without interference. I usually use a value = (OD of bolt)" + 1/32"
Tap Hole
Hole that is meant for a bolt to thread through it and essentially act like a nut (but without a nut, they're really convenient). It is important to understand that you can only use this with 3D Printing as the plastic will form it's own threads naturally. The pullout force is quite strong but it does not take much torque to strip the threads so you must be carefull of overtightening.
I use a value of (OD of a bolt)" - 1/64"
Tolerance
Anything that we 3D Printing to fit around something "snuggly" must have a little bit of tolerance on it. If we make a hole exactly the size of the motor shaft, it will probably not fit and be WAAAY too tight, therefore we add a little bit extra called Tolerance.
There is quite an easy way to achieve this.
- Copy over the geometry of the Motor Shaft (MS).
- Click on all of the lines and select "Construction" (Or press q on keyboard to toggle)
- Click on the offset button and offset it by 1/128" This new line will be the Actual geometry that you use to fix the part around the motor shaft. (This value works for my 3D printeres but your results may vary)
Gears
Gear Types
There are different types of gears that we can 3D Print!
Spur Gear (Left)
Helical Gear (Middle)
Herringbone Gear (Right)
Spur Gear
You are probably most used to the gear on the left, that's because they are easy to make and generally the least pain in the ass to use.
Some disadvantages of them include that you have to constrain the gears in the axial direction. They can slide off each other unless you prevent that from happening with another part. They also make anonying noises because there is not a consistent mating between the two faces that happen.
Helical Gears
These fix the inconsistent mating problem with spur gears but because they are angled, they introduce their own problem of the gears themself wanting to push each other off of the axle. They create their own axial force lol. Cars use helical gears in their gearbox.
Herringbone Gears
They are the best gears because of their coolness. They are basically helical gears mirrored against each other to form a herringbone gears. The axial force formed by the angled teeth cancel each other, which therefore makes no axial load. Additionally, they are self-aligning, they will literally "snap" into place and hold themself from sliding off one another.
You probably have never seen these gears in the real world because they are really hard to produce and most of the time you can get away with just a spur gear. 3D printers are like the only machine that can produce herringbone gears so you better take advantage of these cool things.
Pitch diameter
The Pitch Diameter tells the mating distance for the gear and is crucial when you're making a gearbox. Like how else would you know the distance to where you should put the other end of the shaft??
Layout sketch
This will be the most important when making the Gearbox plate. This will allow us to let **CAD **find out the positions FOR US for all of our axles. In my layout sketch example:
- The Pitch Diameters (PD) of both of the gears have a tangent relation to each other.
- I have drawn the wheel coaxially with it's respective gear to allow me to dimension how much ground clearance I want to have between the bottom of the Motor Pinion gear and the ground (Brown exclamation mark)
CAD design
Onshape File & Gear Setup
- Make a copy of Student copy of Onshape Files
- Open the file and click on the "+" button in the top-right corner to add a custom feature
- Under "public" search for "Advanced Gear"
- Add that featurescript to your toolbar
Roadmap
We will need to create 3 parts specifically in this order:
- Motor Pinion Gear
- Will have Gear Teeth and a form of coupler to the shaft of the motor
- Wheel Gear
- Have Gear Teeth and a form of coupler to the hub of the 1/5" Omni Wheel
- Needs to have 1/2 the number of Gear Teeth that the Motor Pinion Gear has
- Gearbox Plate
- This will hold attach the gear on the wheel to the chassis of the robot and most importantly will ensure a correct amount of spacing between the gears
Creating the Motor Pinion Gear
- Creat new Part Studio
- Click on Advanced Gear in the top-right corner (The plugin you should've installed)
- On the window that pops up, change from "Module" to "Diametrical Pitch"
- Set the Number of gear teeth to 24
- Set the Diametrical pitch to 25
- Pitch Diameter = Number of Teeth / Diametrical Pitch
- Diametrical Pitch relates to the density and size of the gear teeth
- Change the type from "Spur" to Herringbone
- Set Pressure Angle to 30 ( Just some number that I found that works well for 3D Printing)
- Set Extrude Depth to 0.25"
- Hit the check box.
Now it's up to you to attach this gear to the motor shaft!
Creating the Wheel Gear
First we need to understand how this is all going to go together.
The part that we're going to make must have room for the **bushing **on the end of it and also fit inside of our omni wheel.
The idea is that the wheel spins on a long bolt. A lock nut on the end of our wheel-gear assembly keeps everything tight and the entire bolt threads into the gearbox plate that we will make next.
- Create a new part studio
- Make a new gear with:
- The Half the number of teeth as the first gear
- The SAME DIAMERTICAL PITCH (for some reason the DP changes whenever you change the teeth number, so just be aware of that)
- The same type of gear as the first one (herringbone, spur, or helical whatever you choose)
- 0.25" thick
- 30 degree Pressure Angle
- Add a coupling method to the Omni Wheel. With enough spacing so that the gear teeth are not in contact with the wheel
- Through hole for the bushing to fit into
Creating the Gearbox Plate
This plate attaches the wheel axle to the chassis assembly. We will use the mounting holes on the gearbox as an easy way to attach the plate.
Layout sketch making
- Switch to the DAGU DGO2S Motor Gearbox tab. We will make our part directly on the gearbox since we will be referencing items on the gearbox.
- Create a new sketch on the face of the motor
- Project the gearbox holes onto the current sketch. Turn the holes into construction lines
- Rename your sketch to be titled "Layout Sketch"
- Close out the sketch.
Referencing pitch diameters
Have you noticed the faint sketch line on the gearbox gears? If you don't notice it you may have the gear feature hidden.
The circle is telling you the pitch diameter for your gears. Take note of both of the pitch diameters for your motor pinion and the wheel gear
- Go back to the gearbox tab and edit the layout sketch
- Add in the construction circles and dimension them so that they represent the pitch diameters of your gears
- Add in a circle that represents the wheel (1.5" in diameter)
- Add in another dimenion that ensures the robot with have 1/4" of ground clearance from the lowest hanging object!
- Exit the sketch and create a new sketch ontop of the layout sketch
- Construct through holes for the motor gearbox and a tap hole for the wheel gear assembly.
- Add a clearance hole for the motor pinion gear's coupling method
- Now construct the gearbox plate around the three holes whilst avoiding the clearance hole!
CAD Assembly
Now put all the components in an assembly and ensure that there are no weird interferences
Putting the robot together
Now print all the parts and put the robot together!!
Electrical wiring
I bus
For this project we will be using a certain protocol called I-Bus in order to remotely control our omni car. It is essentially just UART communication. The great thing about it is that it only requires one signal wire to our Arduino and we are able to get data from 10 different channels on our controller! It is extremely easy to use and gives us very fast data with minimal lag.
The I Bus pin on the receiver is circled below. (It took me some time to figure out the right one the first time I was doing this lol)
Wiring
Wiring the robot in accordance to this fritzing diagram. I reccomend using double sticky tape to mount the electronics.
(Triple A batteries should actually be double A batteries as they have more capacity)
Since these are DC motors, you may need to flip the red and black connections if they are spinning the wrong way.
Pairing the receiver and transmitter
If the light on the receiver is not a solid, non-blinking red color, with both the receiver and transmitter turned on, then you will need to pair it.
Steps for pairing
- Turn receiver and transmitter off
- Short out the BIND and VCC pin
- Turn on the receiver (The red light should be blinking really fast)
- While holding the "BIND KEY" on the transmitter, turn on the transmitter
- Transmitter should display something like "RX Binding Ok" and the red light on the receiver shouldn't blink
- Unshort the BIND and VCC pin
Uploading the Code
Install the I-Bus communication library
- Tools -> Manage libraries
- Search for ibus
- Install the IBusBM library
Uploading the actual code
Open the omnicar.ino file and upload that code to the arduino.