Overview

This assignment required teams to design and build a Cartesian motion system with 2.5 degrees of freedom (DOF) to perform a specific task of their choice. The project involved creating both mechanical and electrical subsystems, integrating them to demonstrate a functional prototype.

Learning Objectives

  1. Develop methods for implementing ideal joints, such as revolute, prismatic, spherical, and universal joints.
  2. Design mechanical components with practical shapes, considering function, mechanical load, accuracy, fabrication method, and assembly method.
  3. Integrate and test a prototype that combines mechanical and electrical components​

Work Plan and Distribution

Our team, called "The Four Scribes," named our project "The Fifth Scribe." Its purpose is to take a word or phrase as input in the code and write it on paper in a variable font.

Initially, as shown in the sketches, we planned to use a rack and pinion system to control the up-and-down movement of the writing tool. However, due to certain challenges, we decided on an alternative mechanism for the final design.

With a team of four, we divided the work into four main components: the end pieces, the carriages, the end effector, and the coding.

I am responisble for transfering all the letters and numbers into individual gcode and write few matlab functions to allow users to type input, which will be generated as the corresponding words in order without overlapping.

Parts list:

 

  • 3 large stepper motors
  • 3 driven pins
  • 3 driving pins
  • 1 small stepper motor
  • 4 aluminum beams
  • belt material as necessary
  • 3-D printed parts (2 driven pin endpieces, 2 motor endpieces, 3 carriages, 1 end effector)

 

 

In-class prototype

Before starting our team projects, we practiced in class by creating a single linear stage that could be controlled through Repetier and was equipped with a sensor to detect the "zero" coordinate. Once each group completed their linear stage, three groups collaborated to assemble a system that would serve as the foundation for our individual team projects.

The one on the right is a video of the 3-group cartesian system moving in a square pattern and returning to zero.

 

 

 

 

 

 

 

The simulation in Solidworks is shown below:

Carriages

The picture below are my teammates' carriage desgin.  The initial linear stage design wasn’t ideal since certain height differences are overlooked when creating the first carriage, so they made a taller version that helped us determine the optimal belt height for smooth carriage movement.

The Driven Pin Carriage

The design allows a 1in x 1in aluminum beam to screw in at hole A, with the driven pin positioned at B. The belt is fixed on one side of C and passes freely on the other, enabling carriage movement.

 

The Y-Driving Motor Carriage

This motor holder carriage builds on my teammate's end piece design, featuring a counterbored hole for the beam screw and four holes for mounting the stepper motor. Key areas were thickened to support the motor's weight.

 

The End Effector Carriage

This carriage was designed in OnShape with a 3D model of the stepper motor for a snug fit and secure screw mounts, using the projection feature for accuracy

The End Effector1

Our initial end effector used a rack-and-pinion mechanism to move the pen, but it faced issues with excessive friction and alignment. The rack often got stuck, and it didn’t stay perpendicular to the paper. Although we considered solutions like adding slots to stabilize the rack, limited testing time due to 3D printing issues led us to choose a simpler design.

The End Effector2

Shown to the right is a CAD image of the end effector we used. It includes a slot for the motor arm and an adjustable slot to hold various writing utensils. We drilled holes at specific points to secure it to the motor arm and to tighten the utensil with screws.

Coding

I am responsible for the coding part of this project. First thing first, the gcode of every 26 letter in a specific font(in this case I choose font 5)are generated throught the website cnc-apps.com. Then I wrote few matlab functions that allow users to type input so that the corresponding gcode of the input letter can be generated one by one in order without overlapping with each other. Finally, the gcode generated on CNCapps are only composed of x and y axism, but for this 2.5 DOF Cartesian system I have to write the other function in the end to keep the x value the same, then change y value to be the same as the ones of x, and add a new z value that has the original value of y. However, I am not able to figure the e value in the z-axis without testing the actual system. The steps of how to figure this out will be shown latter.

Adjustment to Coding

The screenshot on the left is my first version of code. It has many defects such as the words are too small to write clearly and it needs to be copied and pasted into repetier mannually after running. Moreover,the lack of function to ensure that they are generated one after the other make the letter overlap, which means every length of the letter needs to be calculated and included into the generation of next letter so that they will not all initiate from the origin and overlap. I figure out the ideal size of the words by firstly testing it, and before that I used NC viewer to provide me with a general feedback of the correctness of the code.

All Three Linear Stages and Testing

We spent hours testing the code, first verifying letter formation, then adjusting the pen lift between letters. We faced issues with either too little pressure, causing faint lines, or too much pressure, resulting in drag and distorted letters.

In the image, we successfully determined the optimal way to lift the marker in the code. The long streaks beside each letter resulted from testing different marker heights and angles. The soft-tipped marker provides greater flexibility in pressure application and reduces drag on the page.

We utilized a combination of MATLAB and Repetier to manage the system's operation, leveraging G-code generated through the Text to Gcode Line tool. This setup allowed precise control of the system's motion and writing functionality.

 

The flexibility of this approach meant that altering the output font was as simple as replacing the existing G-code with a new set. Additionally, the system could store multiple G-code files, enabling users to switch between different fonts effortlessly. This modularity not only enhanced customization but also made it easy to adapt the system for diverse tasks and stylistic preferences.

Final Demo

We showcased our project to the class, demonstrating its functionality. On the right is a video of the completed system writing "BUME," an abbreviation for Boston University Mechanical Engineering. Additionally, the system successfully performed tests with other words, including "Good" and "Food."