What it does

Our robot can play Mini-Golf! It can drive, turn, and hit a ball with a paddle. It also has a few additional features, such as an LED display to display the paddle swing magnitude, a limit switch to automatically reset the paddle position, and an external power switch for convenience.

How we built it

The robot has 3 wheels, the front two of which are independently driven by two 12V geared DC motors. The motors are controlled using an HG788 H-Bridge IC for each. The inputs are two dual-axis joysticks, one which controls translational movement and another which controls the speed and amplitude of the paddle swing. The swing's magnitude is displayed on 5 blue LEDs. The paddle also has input from a limit switch to recenter the servo when the paddle has swung back too far backwards. The H-Bridges, two joysticks, indicator LEDs, and limit switch are all wired to an Arduino Uno, which handles everything on the software end.

In the main loop of our program, the movement joystick is first read on both axes (ADC) to determine whether forward, backwards, right turn, or left turn is desired. the movement is then executed for a given interval. Our way of speed control is adjusting this (hardcoded) interval as desired. The paddle's joystick is then read on both axes to determine whether an increment, decrement, reset, or hit is desired.

Challenges we ran into

Most of the challenges we ran into were on the hardware side. Firstly, we did not anticipate parasitic capacitance and interference from external electric fields on the digital input pins, which, when we figured out the issue, was simple to solve with pull-down resistors. We also had to change the paddle design a few times as we had issues with rigidity. The paddle's limit switch also gave us a bit of trouble, and we ended up adding a debounce capacitor to the pin reading it to improve reliability. The wires connecting the limit switch to the Arduino also seem to be very weakly connected mechanically, and they fully disconnected themselves a few times.

Accomplishments that we're proud of

Our robot has a few features that elevate its usability. First of all, the swing speed and amplitude customizability will help the robot perform its task tremendously. Also, the limit switch on the paddle is an excellent feature which allows our hits to be very consistent, even with an inconsistent servo. The turning and translational controls are quite robust, which helps the user to accurately place the paddle where it needs to be relative to the ball. The mechanical strength of the paddle is also quite high, especially given the materials used to build it.

What we learned

Through this project, we learned important details to consider when using Arduinos in robotics. Most importantly, we learned that the Arduino IOs sometimes require external resistors to discharge their internal capacitances.

What's next for Steve, the mini-golf robot

Disassembly :((

Built With

Share this project:

Updates