Spring 2016 3D SMD: Z-Axis Beam

By Henry Nguyen (Electronics and Control)

Table of Contents

Introduction

When running our accuracy tests, I found that the current beam on our Z-Axis would wobble. After carefully observing the wobbling, I found that this will be a major problem when we needed to assemble a PCB with surface mount components. The wobbling will cause our machine to be very inaccurate and may cause us to fail our machine.

Old Beam

Figure 1. Old Beam

Figure 1. Old Beam

Not only was our old beam wobbling because the holes where the 4mm rod went through were slightly larger than 4mm. This will cause the beam to lean forward due to the weight of our A-axis stepper motor. Now that the beam is being tilt forward, our Z-Axis stepper motor will sometime stall out because of the friction against the 4mm rod and the thread beam.

New Beam

Figure 2. Beam Measurements

Figure 2. New Beam Measurements

For our new beam, I decided to make it approximately 0.754 inches. This meant that our beam will be longer than our older beam. I believed by extending the length, we will be able to prevent the wobbling caused by the two rods. The middle hole shown in the figure above will be tapped for our thread screw. The two holes in the middle is to attached our A-Axis stepper motor bracket.

Figure 3. Z-Axis Beam Manufactured

Figure 3: Z-Axis Beam Manufactured.

I was able to get Z-Axis beam manufactured. I found that after installing this bracket, we were able to solve the problem of our Z-Axis stepper motor stalling due to the proper size hole that the rod is now able to go through perfectly.

Figure 4. Lubricant

Figure 4. Lubricant

It was also important to apply some CRC Heavy Duty Silicone lubricant onto the beam and the thread screw to allow smooth vertical movement of our new beam. The following link is a video of our new beam in action.

https://youtu.be/214bttIEprQ

Conclusion

It was very important to manufacture a new beam for our Z-Axis. Before we would have a lot of error caused by the Makeblock beam that came with our thread drive kit. The old beam would wobble a lot which is a major problem when we are trying to be as accurate as possible. Other times, the poorly manufactured beam would also cause our z-axis stepper motor to stall because it did not move up and down smoothly. By manufacturing this new beam we are able to increase our accuracy of our machine.

 

Spring 2016 3D SMD: Critical Design Review Debrief

By Bao Loc Doan (Project Manager)

Table of Contents

Introduction

The Critical Design Review presentation was supposed to be a time where the 3D SMD group could show the customer and the review board how far along we’ve gotten since the PDR. It was expected that we should have the core design aspects of the project, in manufacturing, systems, and electronics, finished and ready to present. The customer and review board gave us a debrief on areas that we could improve on and move forward. The CDR will be linked below:

Critical Design Review Presentation

Executive Summary

The customer noticed we were missing one aspect on our requirements; what is the heaviest chip that the SMD pick and place machine can pick up? It was decided that the 32U4 chip would be the heaviest, and we will be adding that to our requirements moving forward.

System Design

The weakest feature on our system design was the cabling tree. We neglected to put any cabling tree into our CDR and it dinged us considerably. We understand how important the cabling tree is to the project due to the need of an efficient and tidy cabling tree to avoid any unwanted stress on our wires which could ultimately cause failure of our project launch. A lack of a cabling tree could lead to unorganized wires which is also not very attractive to look at, and is another key point since we want our project to appeal to our customer.

Experimental Results

The format of our experimental results was confusing to the review board and the customer. One of the issues mentioned was the lack of a list of the experiments that were conducted. The 3D SMD group agrees with this assessment, and will move forward by placing an introductory list in the final documentation of the experiments conducted if we need to present anything in the future. Another issue that was brought up was that our experimental results resembled more closely to assembling certain parts rather than testing the prototypes for certain things like speed and accuracy. The 3D SMD group also agrees with this assessment.

Interface Definition

There was negligible comment in regards to improving our interface definition.

PCB

The PCB was not required for the 3D SMD group for Spring 2016.

Hardware Design

Due to the manufacturing division manager being absent at the time of our debrief, there were little comments about our hardware design. We will try to meet up with the manufacturing division manager and assess what we can do better for our final documentation. The customer did mention that there should have been the photo detection circuit model in our Solidworks. At the time of presentation, the 3D SMD group do agree with this assessment. As of right now, since we are moving towards a different design, we will not be implementing the photo detection circuit moving forwards.

Software Design

The code that we presented was a little confusing, admittedly. We had named our A-axis rotation to “B” in our Arduino modules due to compatibility issues in our JAVA GUI. We tried to make this clear in our presentation, but we can see how this can be confusing. The president also mentioned that in the future, we could show where we added each subroutine exactly into our code, which was a good idea. The reason being is that a future semester should be able to look at our software and know exactly what we changed in case Makeblock decides to update any of their software in the future. Moving forward, the 3D SMD group has decided to put comments onto our software or somehow making a visual effect (the president mentioned a program being able to highlight all changes that were done) to show any changes to the code.

Verification and Validation Test Plans

Thanks to our wonderful systems engineer, Christine H. Vu, we had no issues in this category.

Project Update

There was negligible comment in regards to improving our project update. We will try to follow our schedule and hope to have a successful launch.

Demo

Our demo did not do as well as we had hoped. The review board and customer pointed out that our “PCB” at the time was just double sided tape, our nozzle slowly reverted to original position due to it being taped on, the overall appearance of our machine was janky since everything was zip tied and electrical taped together, and said there was definite room for improvement. The 3D SMD group wholeheartedly agrees with all the comments and we hope to make the launch have none of these issues.

 

Spring 2016 3D SMD: X-Axis, Y-Axis, Z-Axis, A-Axis, and Origin Brackets

 

By Henry Nguyen (Electronics and Control)

Table of Contents

Introduction

For our 3D SMD pick and place machine, we were able to get most of our software for controlling our stepper motors done. The only thing left to do is to design and manufacture proper brackets for each of our stepper motors since we purchased 2 new geared stepper motors from Makeblock. The Makeblock geared stepper motors has different screw holes to hold the motor therefore we had to design new brackets and modify our existing brackets in order for it to work. I will be discussing our X,Y,Z, and A axis brackets as well as our origin placement bracket.

 

X-Axis

Figure 1. X-Axis Measurements

Figure 1. X-Axis Measurements

In order to manufacture our X-Axis bracket, I had to consider the dimensions of our geared stepper motors screw hole. I also considered the placement where our X-Axis bracket will need to be placed and design screw holes for its proper location. The diameter of the hole in which our stepper motor will be fitted is approximately .849 inches. Figure 1. shows a more descriptive measurement for everything that needs to be bend and drilled for our X-Axis braacket.

Figure 2. X-Axis Bracket

Figure 2. X-Axis Bracket

I was able to find a local metal shop nearby that was able to manufacture our desired X-Axis design. There are four screw holes placed around the the larger circle above. These measurements had to be exact in order for us to screw in our geared stepper motor properly.

Figure 3. X-Axis Bracket Installed And Coupler Design

Figure 3. X-Axis Bracket Installed And Coupler Design

Figure 3 shows that I was able to successfully install our X-Axis brackets. The two screws on the top was able to attach properly our X-Axis. As we move our Y-Axis, our X-Axis geared stepper motor will be moving along with the machine.

Y-Axis

Figure 4. Y-Axis Measurements

Figure 4. Y-Axis Measurements Figure 5. Y-Axis Bracket

For our Y-Axis geared stepper motor, I found that we could reuse our old X-Axis brackets from Makeblock that was meant for our non-geared stepper motors. This bracket is able to attach properly to our machine. The only problem is that we needed to drill holes to match our new geared stepper motors as shown in Figure 4 and Figure 5. I found that these holes were too close to the large circle therefore I had it professionally drilled in order to prevent any mistakes.

Figure 6. Y-Axis Bracket Installed

Figure 6. Y-Axis Bracket Installed

Figure 6 shows our Y-Axis geared stepper motor attached to our pick and place machine using the old brackets for our X-Axis. As we can see, there are 4 new screws that are screwed into our geared stepper motor. The coupler being used is a 8mm x 4mm coupler in order for these stepper motors to properly spin the 4mm rod on our Y-Axis.

Z-Axis

Figure 7. Z-Axis Measurements

Figure 7. Z-Axis Measurements

Figure 8. Z-Axis Bracket

Figure 8. Z-Axis Bracket

Figure 7 is the design and measurements that I made for our Z-Axis. This time, we will be reusing our old stepper motors originally for our X and Y axis in order to control our Z-Axis thread drive. A unique design I added to this is that the bracket will extend our and bend 90 degrees. The purpose of this is shown in the image below.

Figure 9. Z-Axis Cable Hiding

Figure 9. Z-Axis Cable Hiding

The reason for our Z-Axis bracket to extend is with 2 screws holes is to hide all the wires from our Z and A-axis stepper motors. As a result, I was able to hide the wires underneath this bracket and zip tie it in order to prevent these wires from being exposed. This is done for aesthetics of our machine as well as preventing any wires from being snagged or caught while our machine is running.

A-Axis 

Figure 10. A-Axis Measurements

Figure 10. A-Axis Measurements

Figure 11. A-Axis Bracket

Figure 11. A-Axis Bracket

Figure 10 is my A-Axis design and measurement. This design should be able to allow our stepper motors to properly fit through the center hole as well as being screwed into the four screw holes. The proper measurements are shown in Figure 10. This bracket will also require 2 90 degree bends. In Figure 11, you can see the two screw holes on top. This will allow us to attach this bracket to our Z-Axis thread drive beam. This will allow our A-Axis stepper motor and bracket to move up and down when our Z-Axis is running. The importance of these 90 degree bends is to allow our stepper motor to be parallel with our machine which is crucial when picking and placing components accurately.

Figure 12. A-Axis Bracket Installed

Figure 12. A-Axis Bracket Installed

Figure 12 shows our A-Axis stepper motor being installed onto our thread drive beam. The importance of this stepper motor is to allow rotation for our components in 45, 90, 135, and 180 degrees. Not all boards are created with the components being the same orientation every time therefore this stepper motor and bracket is crucial for the success and completion of a 3D SMD pick and place machine.

Origin Placement

      

    Figure 13. Origin Placement Measurement

Figure 13. Origin Placement Measurement

 Figure 14. Origin Placement Bracket

Figure 14. Origin Placement Bracket

Figure 13 is my design for our origin placement bracket. The dimensions of this is the same as the maximum size of free Eagle PCB of 4.0”x3.2”. Figure 14 is the actual bracket manufactured out of aluminum. The purpose of this bracket is so we will know where our origin is for our machine at all this. Another important use of this bracket is to ensure that when we place a PCB against this bracket, the PCB will be straight and oriented properly for the accuracy of our machine.

Conclusion

Overall, I was able to complete all the necessary brackets for our X, Y, Z, and A-Axis as well as the origin placement bracket. It is extremely important to note that getting proper measurements for all of these brackets is crucial. I had to design brackets that are specific to an exact item (stepper motors). If I did not get the measurements as accurate as possible, we would lose time and money.  All of these brackets is extremely important to get designed and manufactured as soon as possible considering we are getting close to the end of the semester. Without these brackets we will not be able to properly run our machine, perform accuracy tests, and proceed with any progress.

Spring 2016 3D SMD: Software

By Christine Vu (Missions, Systems, and Tests) and Henry Nguyen (Electronics and Control)

Table of Contents

Purpose

This is a summary of all Arduino code modifications for the pick and place machine to work with our needs.

Modifications for Java can be found here.

Our files can be found here: https://github.com/cvuchristine/MakeblockPlotter.git

Required Arduino Code modifications

  1. Pinout Reassignment
  2. Z-Axis Arduino Code Modification
    • The original Makeblock X-Y Plotter Robot Kit controls the Z-axis using a microservo and pen to control. However, we decided to use a stepper motor to control the Z-axis so it can be suspended on a threaded drive.
  3. Addition of A-Axis (rotation of IC Chips)
    • This concept requires an addition of another stepper motor to be able to self-automate and correct the orientation of the IC Chip.
  4. Limiting Switch Feedback (notifies that we’ve gone too far)
    • The addition of the limiting switch needed to be added to the Z-control here.
  5. Microservo control (reel feeders)
    • The microservos will control the reel feeders’ cut-tape, which could help keep the cut-tape away from the vacuum nozzle.
  6. Solenoid Valve Control (vacuum suction)
    • Solenoid valve will be able to close off the vacuum suction since the vacuum pump does not have its own controllable switch.

Updated Me UNO Shield

Using the Me UNO Shield, we were able to select the following ports as shown below. It is important to note that not all ports hold 2 digital I/O or analog pins. Port 5 was also unable to be used because it holds TX and RX pins, and our G-Code lines are sent serially.

The pinouts are shown below:

StepperMotor

Figure 1. Stepper Motor Pinouts and Variables.

SwitchesReels

Figure 2. Limiting Switches and Reel Feeder Pinouts.

Code Processing

Makeblock is an open-source company and provided code for the X-Y Plotter Robot Kit.

URL: https://github.com/Makeblock-official/XY-Plotter-2.0/tree/master/software/GCodeParser

The Makeblock code was originally meant for 2 stepper motors (X-Axis and Y-Axis) and 1 microservo motor (Z-Axis) and two sets of minimum and maximum limiting switches, which was a safety factor used in case the motor moves the axes beyond the X-Y Plotter frame.

Summary of Makeblock X-Y Plotter Arduino Code

The Arduino code provided includes three Arduino files — GCodeParser.ino, process_string.ino, and stepper_control.ino.

GCodeParser.ino

This is the main loop to initiate pinouts and variables. The GCode interfaces with Java by receiving GCode serially line-by-line.

Process_string.ino

The line of G-Code sent through the serial monitor processed here. It search for specific lines such as $ and G-Code. The commands are placed in the table shown below. Often times, the G-Code is followed by a specific X-Y-Z-coordinate.

Standard G’s Definition
G0 Nothing
G1 Move stepper motors at full speed
G2 Create clockwise arc
G3 Create counter-clockwise arc, declare values first, then calculates how many steps
G4 Delays GCode Commands using ‘P’ command (i.e. G4 P200 means delat 200 ms)
G20 Moves steps per inch
G21 Moves steps per mm
G28 Moves back to origin at full speed
G30 Moves back to origin based provided a certain coordinate at full speed
G90 Moves to coordinate at full speed
G91 Moves in increments
G92 Sets current position as origin
M Placed in the Arduino Code — Doesn’t mean anything in Arduino Code
‘$’ Cases Definition
$1 Sets step pinouts
$2 Sets direction pinouts
$3 Sets limiting switch pinouts (for minimum)
$4 Sets limiting switch pinouts (for maxmimum)
$5 Enable Servo for Z-Axis **Removed for our purposes**
$6 Declares how many steps per mm should be moved
$7 Declares feedrate
Customized Definition
$9 Turn on solenoid valve
$10 Turn off solenoid valve
$11 Move microservo 1
$12 Move microservo 2
$13 Move microservo 3
$14 Move microservo 4
Table 1. GCode Commands processed by Arduino.

 

Stepper_control.ino

This file includes functions/subroutines called out by the process_string.ino file. It will calculate how much the motors should be moving.

Flowcharts

Flowcharts were also made to help us understand the code and each purpose of the subroutines and functions in the file.

Loop 1 Define Parameters Loop 2 (Set up) Loop 3 If Serial IS avaible part 1 Loop 3 If Serial Is avaible Part 2 Loop 3, If Serial NOT availble Loop 3, Part 1

Figure 2a. GCodeParser.ino

Process String Loop 1 Process String Loop 2 Part 1 Process String Loop 2 Part 2 Process String Loop 3

Figure 2b. process_string.ino

calculate_deltas calculate_feedrate_delay dda_move_2can_step dda_move_1 do_step getMaxSpeed_disableSteppers init_steppers

Figure 2c. stepper_control.ino

Pinout Reassignment

Blog post on the pinout reassignment can be found here: https://www.arxterra.com/spring-2016-3d-smd-me-uno-shield-and-software/

Z-Axis Code Modification

The Z-Axis was originally controlled by a microservo, which would tilt the pen up and down, as shown on Fig. 3. This was not sufficient to control our vacuum head, so we decided to work with stepper motors and remove the servo control in the code.

Figure3

Figure 3. Original Z-Axis control with microservo.

The original Arduino code included a servo pinout and write attachments.

Z-AxisOriginal

Figure 4. Original Arduino Code setup section included the function servo.attach(), which was used to control the Z-Axis.

The function highlighted in Fig. 4 was commented out, since our stepper motor would not use this function. To remain consistent with the code, we decided to go through each line in the process_string.ino file to determine where the servo library functions are called out and remove them so we could switch to stepper motor control.

Z-Command Z_New

Figure 5. (Left) Original Arduino code. (Right) Modified Arduino Code for Case $1, which initiates the pinouts.

 

In the stepper_control.ino file, there was a function to determine which was the dominant axis to calculate the feedrate delay. Z-coordinates were originally not implemented, so we had to implement this portion.We also added the A-Axis at this point, which is labeled as the “b” variable.

OldfeedrateDelay NewZ-DeltaSteps

Figure 6. (Left) Original Arduino Code. (Right) Modified Arduino Code for both the Z-Axis and A-Axis code.

Addition of A-Axis

The A-axis is controlled by a stepper motor, so it was important to assure that each variable is declared each time the X-Axis and the Y-Axis are called out. Because we decided to utilize the stepper motors similar to the X-Axis and Y-Axis, the feedrates and the steps per mm were the same.

The changes to each call-out are shown below. We decided to use variable “b” because the Java code already uses the variable “a”, and the arduino code can read only one letter at a time.

1 2  gcoderparser float

Figure 6a. Addition of A-axis using the variable ‘B’ in the GCodeParser.ino file.

process 1 Process 2

Figure 6b. Enables the step and directions pins for Me UNO Shield pinouts. This was modified in case ‘$1’.

Process 3 process 4

process_string 1 process_string 2

Figure 6c. Added lines to search for variables of ‘b’ so that motors are able to be moved. If a line ‘B40’ is sent, then the subroutines in the process_string.ino file will know what to do with that command.

process_string 3 process_string 4 process_string 5

Figure 6d. More modification in the case statements to be consistent with the rest of the stepper motors.

process_string 6

Figure 6d. Added variables in the process_string.ino file to read any G-Code commands.

The screenshot of Case 92 as shown above was modified so that the origin of the variable is not only X, Y, and Z but also zero’d for A. Hence, we see that there are 4 values of ‘0.0’.

step 1 step 2

Figure 6e. Addition of A-Axis code in the stepper_control.ino file.

Limiting Switch Feedback

Similar to the X-Axis and the Y-Axis control, we decided to set a limiting switch for the Z-axis to check whether it goes too far up. In the stepper_control.ino file, there is a function called dda_move (). A portion of the code checks whether the limiting switches have been hit at the end of the working area. Fig. 7 shows the portion where the limiting switch for the Z-axis is added. The Z-minimum pin was not used, but had to be included to remain consistent with the amount of variables added to the function.

Z-Canstep

Figure 7. Limiting switch Arduino code added under the dda_move() function.

Microservo Control

For our reel feeders, we decided to attach reel wheels onto four microservos. To control out microservos, we decided to create our own case statement for the Arduino to process in process_string.ino.

With the help of our president, Ryland Watts, we were able to utilize a while statement. His while statement required delays, which we didn’t want to use. A subroutine was created and called out when ‘$’ statements were provided in the process_string.

Table 1 shows the customized code we added. Fig. 8 shows our subroutine.

move_reel

Figure 8. Subroutine move_reel gets called out when ‘$11’, ‘$12’, ‘$13’, or ‘$14’ is in the serial monitor.

caseServo

Figure 9. Case statements for servo control.

In process_string.ino, the move_reel subroutine is called out if the inputs of the ‘$’ are created.

Solenoid Valve Control

For the solenoid valve, we are considering on controlling the value using an n-channel MOSFET. This was based on the lesson taught by Ryland Watts, where we learned how to control DC motors with Arduino digital pins.

SolenoidValveCircuit

Figure 10. Solenoid Valve Circuit for Arduino

The following code is in the process_string.ino, where ‘$9’ and ‘$10’ turns the solenoid valve on and off, respectively. The 12 Volts attached to the solenoid valve is the rated voltage at which the solenoid valve will turn on.

SolenoidValve

Figure 11. Case code to activate the solenoid valve off and on.

Conclusion

The summary of software modifications required thorough understanding of our coding goals and what was already implemented in the Makeblock Arduino code. With the help of our president Ryland Watts, we were able to complete our software modifications.

 

Spring 2016 3D SMD: Verification Test – Vacuum Head Design

By: Christine Vu (Missions, Systems, and Test)

Table of Contents

Vacuum Head Test

To verify the size of the vacuum nozzle design, a test will be conducted to determine that the size of the vacuum provides sufficient pressure to pick up a SMT component.

Requirements

Section 5 Vacuum Head Design I

SMT component size 0402 shall be the smallest component that the pick and place SMD

machine can pick up.

Section 5.1

Vacuum system shall be able to pick up all SMT components as small as size 0402.

Section 5.1.1

Vacuum nozzle shall be smaller than 0.50 ± 0.05 mm.

Section 6 Vacuum Head Design II

ATmega32u4 chip shall be the heaviest component that the pick and place SMD machine can pick up.

Section 6.1

Vacuum suction pad shall be smaller than 0.4″ ± 0.01″.

Applicable Tools

Equipment Type Name (Brand) Tolerance Level
Vaccuum Pressure Gauge Actron CP7802

http://www.amazon.com/Actron-CP7802-Vacuum-Pressure-Tester/dp/B000CPINHA/ref=sr_1_5?ie=UTF8&qid=1461309049&sr=8-5&keywords=vacuum+pressure

+/- 2 psi

 

Background

A trade-off study has been conducted to determine that there is enough vacuum pressure to pick up a heavy component without the attachment of a vacuum nozzle. The link is shown below, written by Henry Nguyen (Electronics & Control):

https://www.arxterra.com/spring-2016-3d-smd-vacuum-pump-trade-off-study-v2/

Because pressure is determined by force over an area, the vacuum nozzle size will affect the required pressure to pick up the heaviest component. If the vacuum nozzle is too large, then the smallest component, 0402 size, would go into the vacuum nozzle. Therefore, it was important to consider size parameters.The heaviest component was provided by ATechTop, who would need to place LM358MX. The test procedures below will verify that the vacuum nozzle size is sufficient to pick up this component.

 

Procedure

  1. Determine actual mass of desired 0402 SMT component. Record under SMT component mass column.
  2. With a T-connector, measure the pressure by connecting both ends of the vacuum tubing and pressure gauge. Fig. 1 is the photo of the vacuum pump.
  3. Turn on vacuum pump and measure pressure before attaching the solenoid valve. Record the value under corresponding measured pressure column.
  4. Measure pressure after attaching the solenoid valve. Record the value under the corresponding measured pressure column.
  5. Calculate the minimum required diameter using the equation below.
  6. Measure the diameter of the vacuum nozzle being used. Using the equation below, plug in the diameter size and calculate the maximum mass allowed.

 

Screen Shot 2016-04-22 at 8.57.04 AM

Equation 1. Obtained from (VMeca, n.d.)

Results

 

SMT Component SMT Component Mass (kg) Vacuum Pressure behind (kPa) Vacuum Pressure front (kPa) Diameter behind(mm) Diameter front (mm)
0402 Resistor 0.000008 23.7 22.01 0.092 0.096
ATmega32u4 0.000143 23.7 22.01 0.39 0.41

 

Note: “Behind” and “Front” are indications of where the vacuum pressure was measured with respect to the solenoid valve.

Calculations

(A) T-connector to tubingScreen Shot 2016-04-22 at 8.49.00 AM

Screen Shot 2016-04-22 at 8.49.10 AM

(B) Pressure Before

Screen Shot 2016-04-22 at 8.49.19 AM

(C) Pressure After

Figure 1 – Test Equipment

Calculations

Calc1

Calc2

 

Conclusion

Our vacuum nozzle diameter indicates the minimum and values in order to pick up our desired SMT components. From calculations, there will be enough pressure for it to pick up the heaviest component, LM358MX, if we were to use a nozzle size of approximately 0.4 mm +/- 0.05mm. The solenoid valve measurements were used to check how much pressure loss there will be when operating the machine, which lost approximately 1 kPa.

 

To re-assure that the heaviest component is picked up, we will consider attaching a suction pad to cover more area and pick up the LM358MX SMT component. This concludes that our vacuum nozzle design is per requirement Section 5.1.1.

References

Datasheet for LM358MX

Mouser Electronics, n.d. Mouser Part #:512-LM358MX

URL:http://www.mouser.com/ProductDetail/Fairchild-Semiconductor/LM358MX/?qs=k6rL%2Fc%252bPp3K5YsPvcEtWGQ%3D%3D

 

Datasheet for SMT Component

Panasonic, 2015. Thick Film Chip Resistors.

URL: https://industrial.panasonic.com/cdbs/www-data/pdf/RDA0000/AOA0000C84.pdf

 

Spring 2016 3D SMD: Origins and Scaling

 

By Henry Nguyen (Electronics and Control) and Christine Vu (Missions, Systems, and Tests)

Table of Contents

Introduction

In order for us to accurately pick and place components on our pick and place machine, we must be able to identify our origins. Once finding our origins, we will be able have proper Gcode location coordinates on our machine. After finding out (0,0) location for (X,Y), we will be able to accept an Eagle board file as long as the PCB starts its origin at the bottom left corner.  Scaling our machine is another important factor that we must address because our machine needs to accurately go to a location based off the Torigins layer from a PCB.

Origins

For our origins, we will begin by hitting out negative X and negative Y limiting switch. From there, we will use our GUI to move our machine X+ and Y+ which coordinates to Gcode values X10 and Y10. This will be our bottom left corner for our PCB. From here we can place our clamping system.

Figure 1. Hitting our X Limiting Switch

Figure 1. Hitting our X Limiting Switch

Figure 2. Releasing our X Limiting Switch

Figure 2. Releasing our X Limiting Switch

In Figure 1, I moved our machine until it pressed our limit switch. This is the maximum our machine is allowed to go in the negative X direction. Next, I will hit out negative Y limit switch. From here, I will move our machine to the positive X and positive Y direction using Gcode coordinates X10 and Y10 as shown in the title picture. This will ensure that our machine will be at the same location every time. We have successfully defined our origin. From here we can place our clamping system.

Scaling

Figure 3. Pen attachment

Figure 3. Pen attachment

According to our Gcode, if we have a Gcode input of X100, it should move our machine 100mm in the positive X direction. In order to test if we truly get 100mm for X100, I attached a pen to our Z-Axis and made it mark location X0 and X100 (Pen attachment shown in Figure 3).

Figure 4. Measurement After Scaling

Figure 4. Measurement After Scaling

Next, I measured the distance between the two using calipers with 0.001 tolerance. Previously with our old stepper motors, when running at 1/8th step, our machine was able to draw exactly  4”x3.2” PCB when given an Eagle to DXF to Gcode file. However, when I changed our Me Stepper Driver to 1/16th step in order to preserve accuracy, the pen drew a 2”x1.6” PCB. This gave me an idea that we should double our Gcode coordinates at 1/16th step.  

Now that we have 5:1 geared stepper motors for our X and Y Axis, we are able to full step our stepper motors while preserving the accuracy we need. When testing our 5:1 gear stepper motors, I found that we are able to step our machine fairly accurately at full step. In order to preserve speed we will be running our tests at full step; however, if we find that it is not accurate enough, we will adjust our Gcode to take half steps.

Because our maximum PCB size, we will be working with is a 4”x3.2”, multiplying by 25.4 will give us the size the Gcode size in millimeters which is 101.6mm x 81.28mm. When measuring the distance for 3.2inches, I found the scaling factor to be 0.654. Therefore, when I input (81.28 x 0.654 = 53.157), X53.157 will give me exactly 3.2 inches. As a result, we will be using a scaling program to scale our X an Y axis by 0.654 in order to accurately place our 0402 components at the correct locations.

Figure 5. Scaling and Clamping System

Figure 5.

Shows that at a scaling of 0.654, our machine was able to draw exactly 3.2 inches. The clamping system shows where our origin should be located (If it was draw by the pen which will be placed at the proper location for our nozzle’s true origin.

Conclusion

Overall, we were able to find our origins for our machine. This is a great breakthrough considering that every PCB, reel feeder components, and IC tray will be dependent on this location. Now we are able to place our reel feeder and IC tray anywhere on our machine as long as we gather the proper Gcode coordinates for it. We were also able to scale our motors to accurately go a certain distance that we want using a scaling factor of 0.654. Now when we receive an Eagle to DXF to Gcode file, we will be given Gcode coordinates that we can scale for our machine to accurately pick and place SMD components.

Spring 2016 3D SMD: Verification Test Plan

By: Christine Vu (Missions, Systems, and Test)

Table of Contents

Purpose

Verification Tests will be conducted to verify the requirements based on the Verification Matrix.

Requirements for Verification Tests

Section 1 EE400D Assembly

The SMD pick and place machine shall pick up and place down all SMT components provided by any EE400D PCB up until the end of Spring 2016.

Section 1.1

Working area must be within 12.2”x15.35”(310mmx390mm) based on the Makeblock X-Y

Plotter Robot Kit.

Section 1.1.2

Surface to hold PCB shall be smooth with dimensions tolerances to be ±.001″, parallelism to .001″, and flatness to .001″ (TCI Precision, 2005).

Section 1.1.3

All pick and place processes shall begin at the bottom left corner of the PCB.

Section 1.1.4

All wires using RJ25 connectors shall have a minimum bend radius of 4x its diameter (Telecommunications Industry Association, 2001).

Section 1.2

Pick and place SMD machine shall change the orientation of each SMT component before placement.

Section 3 Software Design

Software for the SMD pick and place shall accept all EAGLE PCB files of EE400D projects up until Spring 2016.

Section 3.1

Software shall translate all EagleCAD files from EE400D PCB’s to G-Code files.

Section 3.1.1

Software shall include all x-, y-, and z-coordinates for SMD pick and place machine to read.

Section 4 Reel Feeder Design

The SMD pick and place machine shall have four 8mm reel feeders and one IC tray.

Section 4.1

All SMT resistors and capacitors shall remain in cut-tape of the reel feeders until the vacuum nozzle is ready to pick up the component.

Section 4.1.1

All reel feeders shall be installed on the working area, 12.2”x15.35”(310mmx390mm).

Section 4.1.2

Bracket to hold cut-tape of the reel feeders shall be higher than 0.04″.

Section 4.1.3

All motors used to peel off cut-tape of reel feeders must rotate 360°.

Section 4.2

IC tray shall store all IC chips required for one PCB assembly.

Section 4.2.1

IC tray shall be installed within working area, 12.2”x15.35” (310mmx390mm).

Section 5 Vacuum Head Design I

SMT component size 0402 shall be the smallest component that the pick and place SMD

machine can pick up.

Section 5.1

Vacuum system shall be able to pick up all SMT components as small as size 0402.

Section 5.1.1

Vacuum nozzle shall be smaller than 0.02″ ± 0.002″.

Section 6 Vacuum Head Design II

ATmega32u4 chip shall be the heaviest component that the pick and place SMD machine can pick up.

Section 6.1

Vacuum suction pad shall be smaller than 0.4″ ± 0.01″.

 

Summary of Verification

Verification tests will be conducted to reflect the requirements on the physical design of the SMD pick and place machine. A list of procedures will be presented in this document followed by the results and conclusion.

Verification Matrix

Verif_1

Verif_2

Verf_3

 

Verif_4

** Updated 4/29/16: Added new requirement section to consider the heaviest chip can be picked up. Dimension limitations were based on Atmel’s datasheet (2016).

List of Equipment

Applicable tools and software will be listed for each Verification test.

 

Verification Tests

EE400D Assembly

Working Area Test

Working area is defined by the area that includes  PCB to assemble, reel feeders, and IC tray. To verify that our design meets the size criteria for working area, a test will be conducted to calculate its parameters.

Requirements

Section 1 EE400D Assembly

The SMD pick and place machine shall pick up and place down all SMT components provided by any EE400D PCB up until the end of Spring 2016.

Section 1.1

Working area must be within 12.2”x15.35”(310mmx390mm) based on the Makeblock X-Y

Plotter Robot Kit.

Section 1.1.2

Surface to hold PCB shall be smooth with dimensions tolerances to be ±.001″, parallelism to .001″, and flatness to .001″ (TCI Precision, 2005).

Section 1.1.3

All pick and place processes shall begin at the bottom left corner of the PCB.

Section 1.1.4

All wires using RJ25 connectors shall have a minimum bend radius of 4x its diameter (Telecommunications Industry Association, 2001).

Section 1.2

Pick and place SMD machine shall change the orientation of each SMT component before placement.

Applicable Tools

Equipment Type Name (Brand) Tolerance
Mitutoyo S/N 12519090 Caliper 0.001”
Measuring Tape Stanley 33-425 Powerlock 25-Foot by 1-Inch Measuring Tape +/- 3%

Procedure

  1. Record the weight of the heaviest component.
  2. Calculate the required minimum diameter of the vacuum nozzle that the heaviest can be picked up.
  3. Test and measure the pressure.
  4. Attach the Z-Axis with pen attachment to the X-Y Plotter.
  5. Create an EAGLE PCB design by placing capacitors on each corner of the design. A free EAGLE version would allow 4” x 3.2”.
  6. Convert to GCode and send to Makeblock X-Y Plotter.
  7. After the sketch, measure the dimensions of the EAGLE PCB design.

 

Cable Test

A test will be conducted to determine that the bending radius will not exceed a bend radius of 4x its radius.

Applicable Tools

Equipment Type Name (Brand) Tolerance
Mitutoyo S/N 12519090 Caliper 0.001”

Procedure

  1. Connect the wires attached to the X-Axis and Y-Axis.
  2. Control the Y-Axis and move to the farthest end of the plotter with respect to the PCB until the limiting switch is hit. Record the length of the cable.
  3. Control the Y-Axis to the other side of the limiting switch. Record the bend radius as shown as the photo below.

CableTEst

Figure 1. (Wikipedia, 2007).

Product Competitiveness

Objective

To verify that our SMD pick and place machine is designed similar to an industrial machine, a test will be conducted to determine the precision of the SMT component placement.

Requirements

Section 2 Project Competitiveness

The SMD pick and place machine shall be modified from an XY Plotter to have the same error specification of Madell Corporation Model DP2006-2 (n.d).

Section 2.1

Makeblock XY Plotter motors shall be modified to pick and place with 0.002″ error tolerance.

Section 2.1.1

Resolution of all axes motors shall be less than 1.8°/step.

Section 2.1.2

Z-axis motor shall move the vacuum system at 90° with respect to the floor.

Applicable Tools

Equipment Type Name (Brand) Tolerance
Mitutoyo S/N 12519090 Caliper 0.001”

Procedure

  1. Record the length of the SMT component.
  2. On PCB, measure the distance between the centers of the capacitor/resistor pads. Record.
  3. Operate the pick and place machine by picking and placing the SMT component.
  4. Measure the distance between the SMT component pin and the pads.

Software Design

Objective

To verify Software design, a test will be conducted to verify the process of converting an EAGLE file to GCode in order to send it to the modified Makeblock X-Y Plotter Robot Kit to move. The Z-axis software will be modified to control as if it was an X-axis and Y-axis.

Requirements

Section 3.1.1

Software shall include all x-, y-, and z-coordinates for SMD pick and place machine to read.

Applicable Tools

GRemote Graphic User Interface (GUI)

Notepad++ Application

Equipment Type Name (Brand) Tolerance
Mitutoyo S/N 12519090 Caliper 0.001”

Procedure

A test for the X-axis and Y-axis motors have been conducted previously given an EAGLE file from G-Code.

https://www.arxterra.com/spring-2016-3d-smd-conversion-of-eagle-file-to-gcode-initial-process/

  1. Set-up Z-axis movement by attaching stepper motor to Z-axis structure.
  2. Connect stepper motor to Me Stepper Driver. Set switches to H H L (⅛ steps).
  3. Connect corresponding Me Stepper Driver to Port 10.
  4. Plug in Me UNO Shield and turn on switch to provide 12 V to stepper motor.
  5. Zero out Z-axis on GRemote GUI by entering “G92”.
  6. Measure initial height of Z-axis structure to the nearest 0.001 inches.
  7. On GRemote GUI, enter “Z100”.
  8. Wait until stepper motor stops running and measure the final height of the Z-axis structure to the nearest 0.001 inches.

“Z100” is a command that tells the Z-axis structure to move 100 mm when the Me Stepper driver is H H L. This procedure we will confirm the height difference of the Z-axis.

Reel Feeder Design

Objective

To verify the reel feeder design has the correct function, a test will be conducted to determine its parameters and design.

Requirements

Section 4

The SMD pick and place machine shall have four 8mm reel feeders and one IC tray.

Section 4.1

All SMT resistors and capacitors shall remain in cut-tape of the reel feeders until the vacuum nozzle is ready to pick up the component.

Section 4.1.1

All reel feeders shall be installed on the working area, 12.2”x15.35”(310mmx390mm).

Section 4.1.2

Bracket to hold cut-tape of the reel feeders shall be higher than 0.04″.

Section 4.1.3

All motors used to peel off cut-tape of reel feeders must rotate 360°.

Section 4.2

IC tray shall store all IC chips required for one PCB assembly.

Section 4.2.1

IC tray shall be installed within working area, 12.2”x15.35” (310mmx390mm).

Applicable Tools

Hardware:

Reel Feeder

Micro Servo FS-90

Equipment Type Name (Brand) Tolerance
Mitutoyo S/N 12519090 Caliper 0.001”

Procedure

Note: Photos will be attached and documented

  1. Install reel feeder to the aluminum surface. Attache reel with SMT components.
  2. Install the IC tray to the working area.
  3. Install micro servo to reel feeder bracket. Servo wheel shaft shall be placed at an angle of approximately 45°. Record Servo wheel angle.
  4. Attach Z-axis and move the X-Y-axis motors to a component. Measure the clearance around the Z-axis. Record the clearance tolerance, which includes the distance around both the reel feeder and IC tray. Measure the height of the IC tray.
  5. Operate the micro servo by turning 360°. This requires timing of the speed of the micro servo and must be determined in the Arduino Code. Record this time.
  6. Determine initial measurement of the reel on the reel feeder. Record this measurement
  7. With the cut-tape attached to the micro servo wheel shaft, reel in the cut-tape. The SMT components counteract this force by moving back.
  8. Observe the elevation of the reel feeder. Record the height of the reel feeder.
  9. Record the distance of the SMT components traveled.

Results Template

Angle of Servo Shaft Z-Axis Front (in.) Z-Axis Left side  (in.) Z-Axis Right side (in.) Z-axis Height

Vacuum Head Design

Vacuum Head Test

To verify the size of the vacuum nozzle design, a test will be conducted to determine that the size of the vacuum provides sufficient pressure to pick up an SMT component.

Requirements

Section 5 Vacuum Head Design

SMT component size 0402 shall be the smallest component that the pick and place SMD

machine can pick up.

Section 5.1

Vacuum system shall be able to pick up all SMT components as small as size 0402.

Section 5.1.1

Vacuum nozzle shall be smaller than 0.50 ± 0.05 mm.

Section 5.1.2

A solenoid valve for vacuum system shall keep a stable temperature under 160° F during Operation.

Section 6 Vacuum Head Design II

ATmega32u4 chip shall be the heaviest component that the pick and place SMD machine can pick up.

Section 6.1

Vacuum suction pad shall be smaller than 0.4″ ± 0.01″.

Applicable Tools

Equipment Type Name (Brand) Tolerance Level
Pressure Gauge Milton S921

http://www.acmetools.com/shop/tools/milton-s921

+/- 2 psi

Procedure

  1. Determine actual mass of desired 0402 SMT component. Record under SMT component mass column.
  2. With a T-bracket, measure the pressure by connecting both ends of the vacuum tubing and pressure gauge.
  3. Turn on vacuum pump and measure pressure. Record the value under pressure column.
  4. Calculate the minimum required diameter using the equation below.
  5. Measure the diameter of the vacuum nozzle being used. Using the equation below, plug in the diameter size and calculate the maximum mass allowed.

VacuumPumpDecisionPNG

Equation 1. Obtained from (VMeca, n.d.).

IMG_20160414_163826 IMG_20160414_163852

Solenoid Valve Test

The purpose of this document is to verify that the solenoid valve can be used to control the the airflow of the vacuum system without overheating or damage to the vacuum tubing. Increased heat would affect the pressure within the tubing, thus could lead to errors in the operation of the pick and place machine.

References

Aquarium airline tubing is a Tuyau Standard type, which was found to operate at a temperature range of 86 ° F – 176° F (PennPlax, n.d. & Festo, 2016.)

Applicable Tools

Equipment Type Name (Brand) Tolerance Level
Thermometer Gun Fluke 561 Infrared and Contact Thermometer

http://en-us.fluke.com/products/thermometers/fluke-561-thermometer.html#techspecs

±0.5% of reading or ±1°C (±2°F), whichever is greater
12 Vdc Voltage Supply Makeblock Motor Pin connection provides approximately 12 Vdc. N/A
Multimeter Extech MN35 Mini Multimeter

http://www.amazon.com/Extech-MN35-Digital-Mini-MultiMeter/dp/B0012VWR20

0.5 %

Preliminary Calculations

We will estimate how many times the solenoid valve should close when placing one part. We would have to time when the solenoid valve should open and close.

  • Close at PCB (discrepancy may be involved because the PCB locations vary, and the origin will be ignored because it will only be at the origin once. For the ease of this experiment, the opening and closing of the solenoid valve shall be at a minute by minute basis as shown in the calculations)
  • Open at Reel Feeder
  • Close back at PCB

Therefore, for one part to be placed, the solenoid valve must operate in 3 steps. The SMD pick and place machine estimates an assemble rate of 200 parts per hour.

200 parts/hour * 3 steps/part = 600 steps/hour

Convert to minutes:

600 steps/hour * 1 hour/ 60 minutes = 10 steps/minute

During our experiment, we will need to open and close the solenoid valve 10 times every minute.

Test Procedures & Criteria

  1. Connect the solenoid valve to operating voltage 12 Vdc. Solenoid valve should be open.
  2. Open and close the solenoid valve 10 times per minute for one hour.
  3. Every ten minutes, record the temperature of the barbed fitting hose. If the temperature goes higher than 176°F, turn off. (Tip: The temperature gun should record the temperature at the same area and distance to be consistent.)
  4. Measure and record the temperature of the solenoid valve to confirm that it is under 176°F +/- 10°F. under “Actual Final Temperature”.
  5. Cool the solenoid valve to room temperature and repeat one more time.

References

Atmel Corporation. (2016).  ATmega16U4/ATmega32U4.

URL: http://www.atmel.com/images/atmel-7766-8-bit-avr-atmega16u4-32u4_summary.pdf

Festo. (2016). Plastic Tubing, Standard O.D.

URL: https://www.festo.com/cat/en-gb_gb/data/doc_ENGB/PDF/EN/OD-TUBING_EN.PDF

PennPlax, n.d. Aquarium Decorations Betta Accessories Maintenance.

URL: http://www.pennplax.com/pennplax%20pdf/Aquarium-Decorations-Betta-Accessories-Maintenance.pdf

Vmeca, n.d. How to select the proper vacuum pump.

URL: http://www.servikatalogen.no/Katalogdata/pdf/200802-1-2-3.pdf

Wikipedia. (2007). Image of a Cable with Seven Meter Radius.

URL: https://en.wikipedia.org/wiki/Bend_radius#/media/File:Bendradius.svg

Yadav, A. , Mehta, S. , Sawant, S. , Pujari, C. , & Chaudhary, M. (2014). Pick and place robotic

system for assembly of thermostat radiator valve.International Journal of Engineering

Trends and Technology, 11(3), 111-113.

 

Spring 2016 3D SMD: Vacuum Pump Trade-off Study V2

By Henry Nguyen ( Electronics and Control)

Table of Contents

Introduction

In order to find a vacuum pump that best suits our pick and place SMD machine, we needed to compare several different options. Considering pressure and cost will be crucial for this trade off study. Our goal is to find a vacuum pump that is able to pick up surface mount components and IC chips when connected to a 12V solenoid valve. We found that we can modify a 60 -100 gallon Tetra Whisper Aquarium pump to act as a vacuum for the price of $19.00.

—Equipment and Materials

  1. A 5mL syringe with a small needle with a diameter of less than 0.50mm

Syringe 5mL

Figure 1. 5 mL Syringe   

Needles-min

Figure 2. Needle heads

  1. Various surface mount components and IC Chips

ICs-min

Figure 3. Various surface mount components and IC Chips

  1. Vacuum pump (Modified aquarium pump)
    1. Product Dimensions: 3.4 x 5 x 8.4 inches ; 2.1 pounds

Tetra 100 Gal-min

Figure 4. Tetra Aquarium Pump

  1. 3/16” tubing

Tubing-min

Figure 5. Tubing

  1. 12V Solenoid Valve

Figure 6. 12V Solenoid Valve

Figure 6. 12V Solenoid Valve

—Procedure

  1. We shall modify the following aquarium pump in order to turn it into a vacuum pump. The following link provides step-by-step details on how to modify our aquarium pump
    1. http://www.instructables.com/id/Circuit-Board-Lab-POV-Business-Card/step5/
  2. Tubing length shall be cut to be as short as possible to allow maximum suction pressure. The size shall be determined based on the design of our aluminum surface table. (Approximately 1.5 – 3 ft)
  3. A 5mL syringe shall be used as our vacuum head and will be modified by connecting our vacuum to the 12V solenoid valve and then to our syringe.
  4. After setting up our equipment, we shall be testing whether or not our vacuum is able to pick up a 402 component.
  5. Next we will be testing a heavy component in order to determine if our small needle is able to pick up the IC Chip.
  6. Our last step is to test how much mass our vacuum pump is able to pick up. In order to do so, we will have a small scale with an accuracy of 0.1 grams and we will place an object on that scale. We will use our vacuum to see how much grams is deducted of the total mass when attempting to pick up the object. The following video shows a demonstration of this process.
    1. http://www.exair.com/pages/theater.aspx?gi=13001&dlg=1&gf=Vacuum+Generators

 

—Results

The following link is a rapid prototyping of our aquarium pump.

https://www.youtube.com/watch?v=a32c-TGHdyE&feature=youtu.be

Vacuum Strength Test

Figure 7. Strength of Vacuum

For our strength tests of our vacuum, I decided to use an Vero Pica Gomas candy due to ease of access. The mass of this candy is 4.53 grams. I figured that if our vacuum has the strength to pick up this candy, other strength test will not be necessary since the mass any surface mount components we will be required to use will not exceed 4.53 grams. I found that our aquarium vacuum pump was able to successfully lift this candy into the air.

Weight of 37 603 components

Figure 8. 37 0603 components on a scale

Next I decided to weigh 37 0603 components on a scale with a tolerance of 0.01 grams. I found that 37 0603 components did not reach a mass of 0.01 grams. We can safely assume our vacuum will be strong enough to pick up these components.

Picking up 603 component

Figure 9. Vacuum nozzle picking up 0603 component

I found that our vacuum nozzle and vacuum was able to successfully pick up a 0603 component without falling off. The image above shows a 0603 component on the tip of our vacuum nozzle with our vacuum currently running.

To conclude our findings, I found that our aquarium pump was able to be successfully turned into a vacuum pump. A syringe was modified in order for it to be used as a vacuum nozzle; however, we did eventually purchased a vacuum nozzle meant to pick up 0402 components.  We currently only had access to 0603 components therefore we ran our tests with 0603 instead of 0402 components. We found that we were able to successfully pick up our 0603 components. When our solenoid valve was on, our vacuum head became operable and we were able to pick up 0603 components. Once we shut off our solenoid valve, the 0603 components would either fall off our syringe, or stick on to our nozzle. This would not be an issue because the PCB on our machine will have solder paste on it allowing the components to easily be placed onto the PCB.

—Conclusions

The final decision for our vacuum pump is to use the Tetra Whisper 60 – 100 gallon aquarium pump. The cost of this modified vacuum pump is $19 which is extremely cost efficient. We have also found that this pump is very quiet and will not cause much noise when running side-by-side with our X-Y plotter. Our vacuum pump and nozzle is able to pick up a 0603 component which is crucial to the design of our 3D SMD pick and place machine.

—References

Vacuum Pump modification and image:

Sponges, S. (n.d.). Build an SMD Vacuum Pick and Place Tool. Retrieved February 25, 2016, from http://www.instructables.com/id/Circuit-Board-Lab-POV-Business-Card/step5/

Vacuum Pump mass test:

EXAIR: Manufacturing compressed air products since 1983. (n.d.). Retrieved February 25, 2016, from http://www.exair.com/pages/theater.aspx?gi=13001

ICs Image:

Curious Inventor. (n.d.) Hand full of SMDs Labeled. Retrieved February 25, 2016, from

http://store.curiousinventor.com/media/smt/hand_full_of_smds_labeled.jpg

Tetra Whisper Aquarium Pump Image:

Tetra Whisper Air Pump (Non-UL). (n.d.). Retrieved February 26, 2016, from http://www.amazon.com/Tetra-77851-Whisper-Pump-10-Gallon/dp/B0009YJ4N6/ref=sr_1_1?s=pet-supplies

3/16” Tubing Image:

Python. (n.d.). Retrieved February 26, 2016, from http://www.amazon.com/Python-Airline-Tubing-Aquarium-25-Feet/dp/B000255NYQ/ref=pd_bia_nav_t_1?ie=UTF8

 

Spring 2016 3D SMD: Me Uno Shield and Software

By Henry Nguyen (Electronics and Control)

Table of Contents

Introduction

Originally when purchasing our X-Y plotter from MakeBlock, we were given a Me Orion microcontroller. This microcontroller was enough to power two stepper motors for our X and Y movement; however, because we are modifying our X-Y plotter to become a 3D SMD pick and place machine, we are required more stepper motors for our Z-axis and A-axis (rotation). Our solution was to purchase a Me Uno Shield ($10.00) from MakeBlock which has the capability to control four 12v stepper motors.

Me Orion

Figure 1. Me Orion Front

Figure 1. Me Orion Front

Figure 2. Me Orion Back

Figure 2. Me Orion Back

Our Me Orion microcontroller shown above has 8 RJ25 ports. These ports are all mapped to SCL, SDA, power, ground, and 2 pins on an Atmega 328-AU microprocessor. The two red ports 1 and 2 both supply 12v with two PWM pins for stepper motor control. Pins 3,4,5,6,7,8 all supply 5 volts. Due our stepper motors requiring 12 volts, using this microcontroller will limit us to only 2 stepper motors. After proper research, we found that purchasing a Me Uno Shield from MakeBlock and attaching it to an Arduino Uno, we will have the ability to control 4 stepper motors.

Me Uno Shield

Figure 3. Me Uno Shield and Arduino Uno

Figure 3. Me Uno Shield and Arduino Uno       

Figure 4. Me Uno Shield Back

Figure 4. Me Uno Shield Back

As shown above, the Me Uno Shield has 10 total RJ25 ports. Each port has SCL, SDA, power, ground, and 1-2 pins mapped to an arduino uno. The 4 red ports: 1, 2, 9, and 10 are supplied with 12v. Port 1 has PWM Pins (10 and 11) while port 2, 9, and 10 only have 1 PWM pin and a digital pin. We were worried that 2 PWM were needed to control stepper motors; however, after running some tests, and properly mapping out our pins on our software, we found that we were able to control a stepper motor on all red RJ25 ports.

Figure 5. Me Uno Shield 10 Port Pinouts

Figure 5. Me Uno Shield 10 Port Pinouts

The image above is the Me Uno Shield 10 port pinouts. All this information is also shown on back of our Me Uno Shield. (Image provided for easier referencing).

Software

Figure 6. Me Uno Shield Pin Mapping

Figure 6. Me Uno Shield Pin Mapping

The Me Orion and Me Uno Shield did not have the same pin outs; therefore, on our Gcodeparser code, we were required to correctly map out our new pins for each stepper motor we will be using. We found that although we mapped our stepper motors properly on our arduino code, our GRemote (java) did not read our pin outs properly. In order to fix this, we had to evaluate the java code provided by the Gremote in order to understand why our stepper motors will not take any Gcode commands even though our pin outs on our arduino code was correct.

From our GCodeParser_Makeblock Orion folder, we had to navigate to two different files:

GRemoteFull → Source → GRemote.java

Figure 7. GRemote.java Line 1584 - 1598

Figure 7. GRemote.java Line 1584 – 1598

In this GRemote.java file, we found that our stepper motors direction, steps, minimum, and maximum limiting switches for each stepper motor X-Y and servo Z  pins were being taking from the “GRemote.app/contents/settings.ini.” We then decided to navigate to this location.

GRemoteFull → Java → bin → GRemote.app → Contents → Setting.ini

Figure 8. Settings from Me Orion

Figure 8. Settings from Me Orion

As we suspected, we found that the settings were defaulted to the pins from our Me Orion. 11, 10, 17, and 16 is our direction, step, minimum and maximum limiting switches for our X-Axis stepper motor.  3, 9, 13, and 12 is our direction, step, minimum and maximum limiting switches for our Y-Axis stepper motor. 15 is our direction for our Z servo. 174.9781 is our steps_per_mm for X, Y, and Z. After adjusting these pinouts to our Me Uno Shield, we obtain the following settings:

Figure 9. Settings from Me Uno Shield.

Figure 9. Settings from Me Uno Shield.

I was able to adjust our GcodeParser arduino code to allow our Z-axis to be treated as a stepper motors instead of a servo. After many attempts, and mapping my Z-Axis to Port 10 (Digital pin 6 and 7), I was able to control our Z-axis on Port 10. I had to map it properly on the GcodeParser arduino code, and adjust our GRemote settings file as shown in figure 8. In line 10 and 11, the Z-Axis stepper motor is mapped to Port 6 (direction) and Port 7 (step). Although only pin 6 is a PWM pin, as long as we mapped our direction of our stepper motors to the PWM pins, we were able to control our stepper motors without any problems. I then attempted to map our Z-Axis stepper motor to port 1, 2, and 9 on our Me Uno Shield. As long as I properly mapped the pins, I found that I was able to control the stepper motor using our GRemote in any 12V RJ25 ports.

Figure 10. GRemote

Figure 10. GRemote

Now when we open our GRemote, we can see in Figure 10 on the left, each case ($) shows the correct pinouts according to our java and setting.ini file. For case $1, X10, Y12, and Z7 all represents our step pin. For case $2, X11, Y9, and Z6 represents our direction pin. For case $3, X17 and Y8 are our minimum limiting switch pins while Z is left empty because we have yet to implement a limiting switch pin for our Z-Axis stepper motor. For cae $4, X16 and Y13 are our maximum limiting switch pins while Z is left empty for the same reason stated prior. These cases can be found in our arduino process_string module. An example of case $1 is shown below.

Figure 11. Process_string Case $1 Example

Figure 11. Process_string Case $1 Example

Conclusion

Overall, being able to control more than two stepper motors was a breakthrough for us in this project. We are now able to have full control over more than two stepper motors which is crucial for our 3D SMD pick and place machine. We are now able to control X, Y and Z axis. In order to control our A axis, I will need to focus more on software to see how we can add another stepper motor to our GcodeParser. Now that are machine is able to communicate with our GRemote and accept GCode commands properly, we are one step closer to success of this project.

Reference

Me UNO Shield. (n.d.). Retrieved April 04, 2016, from http://learn.makeblock.com/me-uno-shield/

 

Spring 2016 3D SMD: Aluminum Surface Table

By Henry Nguyen (Electronics and Control)

Table of Contents

Introduction

For our 3D SMD pick and place machine, it is extremely vital that we have an aluminum surface table in order to put our PCB, reel feeders, and IC tray. This surface table is to be the exact size of our makeblock X-Y plotter with the dimensions of 21.40” x 19.80” (inches). When designing this aluminum surface table, it is important to get all the dimensions correct and to have about 2 inches of each side in order to have a 1.0 inch bend on each side. This will allow us to attached our aluminum surface legs.

Design

Figure 0 Rough Sketch

Figure 0. Rough Sketch of Aluminum Surface TAble

Before manufacturing, it is vital that we design the aluminum surface table. After taking proper measurements, I was able to design the aluminum surface table on solidworks.

Figure 1. Aluminum Surface

Figure 1. Aluminum Surface

The image above is the aluminum surface with the dimensions of 21.40 x 19.80 x 1.00 inches. There is a slit and two holes on the surface for our reel feeders. Our reel feeder will screw into the holes and the slit is for our cut tape to go through the hole and under the surface table when operating. This is to prevent clutter. There are also 6 holes on the surface table with the dimensions of 21.40 x 1.00 inches. These holes are in the exact location as our XY plotter legs. This is for our legs to connect to our X-Y plotter and the aluminum surface.

Figure 2 Aluminum Surface Leg (Solidworks)

Figure 2: Aluminum Surface Leg (Solidworks)   

Figure 3. Aluminum Surface Leg Dimensions

Figure 3. Aluminum Surface Leg Dimensions

The two images above is the Solidworks design of our aluminum surface legs and dimensions. Our leg will be 0.95 x 7.00 Inches long with 16 holes. These holes will allow us to attach our legs to both our aluminum surface table and X-Y plotter. The dimensions were accurately measured in order for our manufacturer to create an exact fitment. Each hole is 0.160 inches in diameter and is 0.66 inches apart center to center. The thickness of our legs will be 1/8 inch thick (0.125 inches).  

Production

Figure 4. Aluminum Surface Table Assembled

Figure 4. Aluminum Surface Table Assembled

The image above is how our aluminum surface table will look like. The clamping system, reel feeder holes, and slit will be done later when we finalized the exact placement. The clamping system cannot be implemented until we are able to assemble our X-Y-Z-A Axis for our machine which is when we will be able to define our origin. Once finding our origin, we will be able to implement our clamping system and reel feeder placement.

Figure 5. Aluminum Surface Table Manufactured

Figure 5. Aluminum Surface Table Manufactured

Figure 6. Aluminum Leg Manufactured

Figure 6. Aluminum Leg Manufactured

We were able to get our part manufactured with exact sizes as our Solidworks model. The reel feeder placement and clamping system will be defined later. As shown in Figure 6, we were able to attach aluminum surface table and X-Y plotter by our aluminum leg. With the design of multiple holes, we are able to move our aluminum surface table up and down by a multiple of 0.5 inches at a time.

Conclusion

Overall, I believe the design of this aluminum surface table turned out perfectly. The thickness of 1/8 T6 aluminum surface is able to support a PCB and many reel feeders that may be implemented in future semesters. When attaching our aluminum surface to our X-Y plotter, every screw was able to fit with ease. We used two washers and a hex nut for safety when connecting each of our legs to our X-Y plotter and surface table.