Andrew Chin

Mechanical Engineer | Product Designer | Innovator

Machine Design Project

For this Machine Design project, I, along with a team of 4 other students, designed and built an arcade button-pressing mechanism capable of rapidly and accurately targeting multiple buttons using a single motor. This involved developing a low-inertia linkage system in SolidWorks, optimizing speed and torque through an inertia-matched transmission, and integrating sensors with closed-loop PID control on an Arduino to ensure precise positioning. We fabricated components in the machine shop, assembled the device to meet tight tolerances, and implemented safety features such as limit switches and hard stops. Through iterative testing and optimization, we refined the mechanism to achieve reliable, high-speed performance under competition conditions.

Mechanism Unfolded Mechanism Folded

Design Requirements & Constraints

Below is the board to which our mechanism would mount. Note that the button placement and mounting holes for our mechanism served as the main constraints for our design. The button locations were used to determine and calculate optimal transmission angles for our mechanism which served as the foundation for our design.

Button Board

Transmission Angle Design

Utilizing SolidWorks, I constructed a 2-D layout of the 4-bar linkage mechanism that would be able to press the 3 button pairs. I engaged in an iterative design process optimizing transmission angles, ground pivot points, and coupler geometry.

Transmission Angle 1
Transmission Angle 1
Deviation = 16.78 degrees
Transmission Angle 2
Transmission Angle 2
Deviation = 23.70 degrees
Transmission Angle 3
Transmission Angle 3
Deviation = 12.70 degrees

Mechanism Design & Manufacturing

The transmission angle design was used to inform the length of our linkages, the ground pivot locations and coupler geometry. The full assembly of our mechanism was modeled within SolidWorks including the DC motor, shoulder bolts, sleeve and oil bearings, linkages, ground pivots, hard stops, transmission timing belt gears, and solenoid.

CAD Mechanism

Linkages

The linkage geometry was designed and modeled within SolidWorks. The design was optimized for structural stability and the minimization of weight. This is seen by the trusses built into the interior of the links which maintain the integrity of the part while removing mass. Note that FEA was conducted on the linkages factoring in the worst case loading. These parts were machined from the provided aluminum sheet using a Waterjet and CNC Mill.

CAD Model
Input Link CAD
Input Link
CAD Model
Follower Link CAD
Follower Link
Machined Links
Machined Links
Waterjet & CNC Tormach Mill

Coupler

The coupler was designed in SolidWorks to hold our solenoid button actuator and the provided acrylic button presser.

Coupler CAD Back Coupler CAD Front

The coupler was 3D printed with PLA due to its complex geometry. This also worked to significantly reduced its weight when compared to aluminum alloy. The solenoid was fixed in place with mounting screws. The acrylic button presser was mounted to the solenoid via a press fit and stabilized with two thin steel rods.

Coupler Real Angle 1 Coupler Real Angle 2

Ground Plate & Motor Components

The base plate, mechanical hard stops and motor mounting plate of our mechanism were machined via Waterjetting and CNC Milling. They were assembled to the mounting board as displayed below.

We note that the transmission ratio required to actuate our mechanism was calculated via inertia matching based upon the weight, dimensions and inertial centers of the linkages and coupler assembly (solenoid included). We achieved a transmission ratio of 2.5. For an added safety factor we sourced our transmission components for a ratio of 3. Note a timing belt was chosen as it was relatively inexpensive and provided us with mounting flexibility. Additional components such as spacers and stabilizers were designed and FDM printed to refine the operation of our timing belt transmission.

Base Plate Components Labeled

Arduino PID Controller State Machine

The Arduino IDE used to operate our mechanism was a PID Controlled State Machine. Each button on the board (Red, Blue, Yellow and Green) is fixed on the mounting board and its location is calibrated to its corresponding encoder count value within the DC motor. During operation, the DC motor rotates until the encoder count matches the target button. This brings the coupler of the mechanism to the button to be pressed.

When the mechanism turns on it enters the Calibration State. Here a default voltage is supplied to the motor which moves the mechanism to the starting first button position. Hitting the hard stop limit switch transitions the mechanism to the Wait State. The mechanism then waits for a target button to light, which reads in a high value to a digital pin on the Arduino. This signals the transition to the state correlated with the target button. Once in the new state, the target position is updated and the PID values (Kp, Kd, and Ki) are updated based upon the previous state. The PID values are used to calculate the desired PWM voltage and output to the motor. As the coupler approaches the button position, the supplied voltage decreases according the specified PID values and the solenoid actuates the buttons. This logic cycle continues until the time limit of 1 minute is reached.

State Machine Flow Chard Logic

Budget

Below is the budget sheet used to track our team's finacial expenditures. Note that we remained underbudget with $12 left of our $100 allotment.

Budget
← Back to Projects