The Four Linkz Fishing Adventure was a cartesian movement system that operated in 2.5 degrees of freedom to fulfill the design requirements of our final design project. The goal was to build the mechanical and electrical sub-systems for a project employing this style of motion and integrate them to demonstrate the functionality of our prototype. Through a lighthearted game, players control a joystick to go fishing and collect as many fish as they can in a minute!
Mechanical Design
To begin the mechanical design, we were provided 8020 aluminum bars, 1/4-20 screws, 4 stepper motors (1 toy stepper), and access to 3-D printing. It was important to start with modeling the device and it's fasteners so that the connections were properly executed in our 3-D printed parts, including through holes and countersinks for screws. Additionally, we drilled holes in the 8020 to fasten the cross joints together and tighten the screws into the tapped ends through the side bars. Each of the sliding motion pieces use the same base model so that they slide through the bars without resistance, though the support material did require lots of cleaning to achieve the proper smooth motion.
Each slider features ridged grooves that match that of the belt connected to the pinion on the stepper motor. Slotting the belt into the slider allows for each motor to accurately control the position of the joint. The bottom two joints move in sync in the same axis and are connected to the top bar with t-slot sliding fasteners, and therefore could control the motion of the middle bar, or the other 2-D axis. These three motors would be controlled with the x and y motion of the joystick. Above is a photo of the final assembly without the base boards, and to the left are the slider joints and the motor mount where the stepper motors sat on the end of each bar. The extra half degree of motion would come from the rack and pinion that acted as our "fishing rod". With a magnet on the end that connected with the fish, the rack would lower using a toy stepper motor and pick up the fish on users command. Additionally to the left, the slot drop would allow the rack to slide a fish in underneath and vertically pull up to drop the fish off in our collection zone. Finally are the models we printed for our fish with the hole left for our ferrous nuts to be glued into.
Stepper Motors
To understand the programming for our stepper motors, we also completed an in-class project to program them with a linear screw stepper. This project explained how stepper motors use the fluctuating electrical pulses to operate and require looping feedback to achieve continuous motion. In addition to programming, this project taught us how to combine these motors motions in software to achieve directional control in an axis by combining our linear stage with two other groups. The video to the right demonstrates our motion control to draw a circle with G-Code. Though this system mechanically oriented the motors differently, the motion of rotation is still translated to linear translation, much like the final device uses.
Additionally, we added a homing and drop-off feature for our uses that with the press of a button brings the device back to it's home right in front of the slot and performs a slot function that slides the magnetic end of the rack into the slot and pulls up to drop off the fish. This is executed by adding a directional count to each function call in the loop. When the button is pressed, a while loop will execute that continues to correct the position step by step until the axis is back to it's started position. Once it reaches home, it moves a set distance from that home in the horizontal and subsequently vertical direction to drop the fish from the magnet. While this axis tracking was difficult to implement, it is an important aspect of the game so that users don't bang the rack into the slot and mis-align the rack for the next fishing adventure.
Code
After learning how to control our stepper motors and assembling our mechanical design, it was time to program our game system. The software would be designed using Arduino IDE for better communication interface with the joystick control through the Arduino Mega Ramp. The code uses functions to control the motors directions, and calls these codes in a loop whose path is dictated by if and while statements. For example, if the code is reading a joystick direction left to the orientation of the user, the motors will move one step and continue to loop that way until that if statement is no longer valid and the motion will end.
Conclusion
This project taught me lots about practical implementation of design features and how device control can become very complex very quickly. Understanding how each device functions in the system can impact so much of the architecture in your device, not just in the coding but also in the mechanical design. Getting to see this project from ideation to completion was great practice in delivering a prototype and executing all the goals of project gave us a very fun game that everyone in the room wanted to play. Thank you to my team for all their hard work!
Testing
In final testing, a few modifications were made to better the final prototype, reminding us that the engineering design process is of utmost importance in a project like this.
First, the joystick was originally meant to be mounted on the platform with the homing button, however having the user be able to pick up the piece and move around the board provided more angles to see from for easier gameplay so the joystick component was redesigned to be handheld. Additionally, the wires leading from each stepper, specifically those in motion, would get caught in the belt/pinion and misalign the axis of the two stepper motors on the bottom, so a cable management system was devised. The fish collection also had issues, where the magnets large surface area allowed the light fish pieces to twist up the side of the magnet and roll around which would cause issues in the slotting function, so the exposure of the magnets surface was limited to the bottom edge to better align the fish for drop off. Finally, the homing system would begin it's count at zero from wherever the system turned on, so a proper home was calibrated and then marked on the sides of the bar for easy alignment, so the system is moved to it's start position and then plugged in and now lines up with the slot function every time.
The Four Linkz: