8.4 - Implementation

Home Page

Contents:

  • Bill of Materials
  • Fabrication and Assembly
  • Electronics and Circuitry
  • Software Development

Bill of Materials

All components used may be obtained via the TIW, excluding the buttons which can be replaced with available joystick components and the cup. The quantity of rubber bands will depend on elastic strength.

ComponentQuantity
12x24 .25in acrylic1
M3 25mm Screws2
M3 20mm Screws10
M3 16mm Screws8
M3 Lock Nuts14
M3 Nuts14
M3 Washers10
6mm Axles 3in4
6mm Ball Bearings8
Small Cup1
Rubber Bands2
ELEGOO UNO R31
9V DC Batteries2
9V Battery Connectors2
Buttons2
L 298N Motor Controller1
Assorted Breadboard Wires~25
1kOhm Resistor1
2kOhm Resistor1
12V Geared DC Motor - 100 RPM1
PLA Filament

Table 1: Materials list for full mechanism

Note that the 12V Geared DC Motor can be replaced with 10 RPM rather than 100 RPM. Doing so removes the necessity of the rubber bands.

Fabrication and Assembly

Linkage Mechanism Assembly

We laser cut the majority of the mechanism out of 0.25" acrylic. Note that the DXFs are not to scale. We also 3D printed one part to assist the laser cut parts in securing the motor.

Provided below are the DXFs of our linkages:

Figure 22: Linkage DXF's. Note: not all linkages are to scale. Each linkage is 0.5" wide and have been scaled down for ease of visibility.

These are the DXFs for our base:


Figure 23: Base DXF's. Note: not all figures to scale.

For the motor mount, we laser cut a vertical holder and 3D printed a base to rest the motor on.


Figure 24: Motor mount DXF and 3D printed support.

Figure 25: Linkage DXF that connects the motor to the full mechanism.

Figure 26: Cup holder DXFs.

We used 6 mm rods to connect our cup holder to the joints of the links of the 4 bar to allow it to rotate with the mechanism. We used M3 screws and lock nuts to assemble the holder. We used 6mm ID bearings to allow for rotation and reduce friction.

Figure 27: Close shot of the final assembly of the cup holder mechanism.

We assembled the four-bar by connecting the joints using 3M screws and lock nuts. We also had two rubber bands to help the lifting mechanism operate with limited torque. We press fit bearings into the rotating arm. We cut a special slot into the input link so that our motor shaft can rotate the link. We attempted to use a higher torque motor, but the resulting electrical issues caused us to return to the lower torque, 100 RPM motor, and usage of rubber bands to supplement the decreased torque.

Figure 28: Image of the full final assembly.

Electronics and Circuitry

Below is an image of the finalized electronics elements of the design.

Figure 29: Close up image of the electronics configuration.

We utilized the provided motor drivers to control our 12V DC motor. Rather than using a bulky 12V power source, we fed two rechargeable 9V batteries in series through a voltage divider to output 12V to the motor controller. To enable better control of the system, two buttons were used. The red button reversed the polarity outputted by the motor driver, changing the direction of the motor, while the blue button activated the motor to move the mechanism up/down. An ELEGOO UNO R3 was used to control the system.

Software Development

Below is the C++ code uploaded to the Uno.

Figure 30: Code running to control the mechanism.

The code itself is quite simple. Initially, we had basic controls implemented to test each component. When we were certain of the functionality of each component, we created this simple code to convert user interaction into mechanism motion. We define first the pins necessary for use. Three are pins which output to the motor controller while two correspond to the button inputs. These buttons are input pullups, as is standard for button integration. An interrupt is used for the motor direction button. This ensures that the direction is changed only when the button is initially pressed, no matter how long it is held. In contrast, the state of the activation button is read every loop such that the mechanism is in motion only when the user desires. Overall, the code is rudimentary and its development simple.