10.4 - Implementation

10.4 - Implementation

CAD Design

In order to start the Fabrication and Assembly Step, the entirety of the design was modeled and assembled in SolidWorks to ensure that all the components would interact with each other properly. The final CAD Assembly in Shown in Figure 1.

image-20260502-053520.png

Figure 1: SolidWorks Assembly of Mechanism

Fabrication & Assembly

In order to assemble the matcha whisker, two different fabrication techniques were utilized: laser cutting and 3D printing. Three of the links and all of the gears were laser cut, and these parts are shown below in Figure 2. All of the links were cut from 3 mm acrylic while the gears were cut from 6 mm acrylic, both using the Trotec Ruby laser cutting machines at Texas Invention Works. Laser cutting was selected due to the need for precise meshing between all gears and accurate connection points between each of the links. The laser cutter is able to produce the specific geometry required with high accuracy and repeatability. Acrylic was chosen as the material because it is strong enough for our application while also maintaining a clean aesthetic.

image-20260502-055246.png

 

Figure 2: Laser Cut Components of the Build

The second fabrication technique employed was 3D printing. This method was used for any components with three-dimensional features, including the full mount assembly that holds all components together, the whisk holder, spacers, main slider link, wire cover, and several custom-made connectors. All prints were produced from PETG High Flow filament at 20% infill, with the exception of the blue bottom mount base, which was printed in PLA due to limited PETG printer availability at Texas Invention Works.

The assembly process relied primarily on the geometry of each component to slot parts together through press fits, with Gorilla two-part epoxy used to secure critical connections. Assembly began by mounting the two bottom base pieces together with screws, with mount spacers placed between them to create sufficient clearance for the whisk to glide along the bottom of the bowl. The mount top piece was then glued onto the bottom piece and connected on the top surface of the 8 mm shaft mounts, forming the completed base assembly shown in Figure 4.

image-20260502-060602.png

Figure 3: Base Mount (Mount Bottom Piece + Mount Spacers + Mount Top Piece)

After completing the base mount, the 8 mm shafts were slid into their press-fit mounts. Linear bearings were placed inside their housings and inserted onto these shafts simultaneously. A separate 8 mm shaft was inserted through the main slider link along with another linear bearing and the whisk holder, completing the main slider link assembly. This assembly was then placed onto the linear bearing housings and secured with M3 screws, as shown in Figure 5.

image-20260502-131539.png

 

Figure 4: Main Slider Link Assembly

Link assembly followed by first cutting the 6 mm shafts to length and pressing the 6 mm ID ball bearings onto them, as shown in Figure 6. The coupler links were press fit onto these ball bearings and later secured with super glue to prevent slippage during testing. Custom 3D printed connector pieces were made to join the crank and coupler links at each revolute joint while still permitting rotation. The ends of the crank links were attached to either the 3D printed motor shaft extender, which extended the existing motor shaft to the required length, or to the output shaft of the final gear in the gear train. It should be noted that one of the crank links was later redesigned as a fully 3D printed component. The original design consisted of a laser cut link, a 3D printed connector, and a press fit 6 mm stainless steel shaft, but this configuration introduced too much slack and prevented smooth rotation. Consolidating these into a single printed part resolved the issue entirely.

image-20260502-131950.png

Figure 5: Link Placement

The final structural step was assembling the gear train. The compound gear train uses an 11-tooth driving gear meshed with a 32-tooth driven gear, producing a gear ratio of approximately 2.9:1. This ratio ensures the vertical crank completes nearly three full revolutions for every one revolution of the horizontal crank, generating the asymmetric zig-zag whisking path required for effective matcha preparation. Spacers were used during the assembly process to ensure that we had consistent meshing between each of the gear’s teeth without any tilting in the gears.

image-20260502-131620.png

Figure 6: Gear Train Assembly

Electronics & Circuitry

As seen in Figure 7, the 9V power supply's positive terminal is connected to the VCC input on the L298N motor driver and the negative terminal to the GND on the L298N. The GND of the L298N is then connected to the GND pin on the Arduino Uno to establish a common ground. For motor control, the OUT1 and OUT2 pins on the L298N are connected to the two terminals of the Greartisan 12V gearbox motor. For direction control, IN2 on the L298N is connected to digital pin 8 of the Arduino and IN3 to digital pin 9. For speed control, the ENA pin on the L298N is connected to PWM-capable digital pin 10 of the Arduino. A push button is wired between digital pin 2 and ground, with the internal pull-up resistor enabled in software, allowing the user to toggle the whisking motion on and off with a single press.

Matcha Whisker Electrical Schematic.png

Figure 7: Circuit Schematic

 

Table 1: Circuitry Component List

Component

Quantity

Notes

Component

Quantity

Notes

Arduino Uno

1

Microcontroller

Gearitisan 12V Gearbox Motor (3200 RPM)

1

Brushed DC motor acting as Input Rotary Power

L298N Motor Driver Module

1

Dual H-Bridge driver; supports up to 2A per channel (with heatsink)

Push Button

1

Digital Input to toggle motor on/off

9V DC Power Supply

1

Must supply sufficient current for motor

Jumper Wires

1 Set

For wiring connections

Software Development

The Arduino code is designed to toggle the DC motor on and off using a single push button, allowing the user to start and stop the whisking motion without needing to disconnect power. Motor speed and direction are set directly in software rather than through a potentiometer, since the whisking motion operates at a fixed speed.

The motor control pins — IN2, IN3, and ENA — are initialized as outputs using pinMode(). The button pin is initialized as an input with the internal pull-up resistor enabled via INPUT_PULLUP, meaning the pin reads HIGH at rest and LOW when the button is pressed.

Table 2: Setting Motor Direction with IN2 and IN3

IN2

IN3

Motor Behavior

IN2

IN3

Motor Behavior

LOW

LOW

Motor stops (brake)

HIGH

LOW

Motor rotates forward

LOW

HIGH

Motor rotates backward

HIGH

HIGH

Motor stops (brake)

A latch variable tracks the current toggle state of the button. On the first press, the latch is set LOW and the motor is driven at a PWM value of 250 out of 255, which corresponds to nearly full motor speed and was determined through testing to provide sufficient torque for effective whisking without stalling the gear train. On the second press, the latch returns to HIGH and the motor speed is set to 0, stopping the mechanism. A 100 ms delay is included after each press to debounce the button and prevent unintended double triggers.

#define enA 10 #define in2 8 #define in3 9 #define button 2 int motorSpeed = 0; void setup() { pinMode(enA, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(button, INPUT_PULLUP); Serial.begin(9600); } uint8_t buttonLatch = HIGH; void loop() { if (buttonLatch == HIGH && digitalRead(button) == LOW) { Serial.println("Button Pressed"); buttonLatch = LOW; delay(100); } else if (buttonLatch == LOW && digitalRead(button) == LOW) { Serial.println("Button Pressed Again"); buttonLatch = HIGH; delay(100); } if (buttonLatch == HIGH) { motorSpeed = 250; digitalWrite(in2, LOW); digitalWrite(in3, HIGH); analogWrite(enA, motorSpeed); } else { motorSpeed = 0; digitalWrite(in2, LOW); digitalWrite(in3, HIGH); analogWrite(enA, motorSpeed); } }