Spring 2016 3DOT Goliath, CDR Debrief

By: Ayman Aljohani (Project Manager)

Introduction:

Critical Design Review(CDR), is an important phase of the project, it presents the design of the project. It also provides a clear view on the project standing and percent completion.

After presenting our CDR, we were debriefed by the president, and the customer on our presentation content .

Here is  the debrief summary:

 

Title Page:

Was good, nothing to comment on.

Executive Summary

weakness:

Too much information was provided in  the executive summary

correction: 

Keep it short and simple

Only explain the major features of the project

System Design

weakness: 

Missing 3Dot Components on the System Block Diagram

Poly fuses

LDO

LIPO Charger

strength: 

Paul commented that the color coding on the system block diagram and  the legend, it was easy to follow. 

Experimental Results:

weakness:

Problem with the analog Schmitt trigger

However, Elec. Engineer, Kevin,  found out the problem and fixed the output of the threshold voltage on 4/20/2016.  The president is also notified about the fix on the threshold voltage issue.

Our goal of the Schmitt trigger is to convert analog signal to a digital signal.

Subsystem Design

No comment, it was good.

Interface Design

weakness:

messing 3DOT components.

correction:

Include 3Dot components

Custom PCB Design

weakness:

 The custom PCB  was not designed to be able to attach onto the 3Dot board as a shield.  The point of this design is to avoid the number of wires being used to connect to the microcontroller.

correction: 

Have custom PCB attach to the 4 pins on the 3Dot.

For future design reference it will follow a similar design shown by the following site:

https://www.adafruit.com/products/94

Software Design

weakness: 

The lockdown code that will disable the robot after 3 hits from the enemy was not included.

Verification & Validation Test Plans

Everything was good for the verification and validation test plans.

Project Updates

strength: 

Smartsheet is good to use  

weakness: 

 The actual cost of the free items was not included 

Fix the uncertainty for the resource report, it should be zero uncertainty. 

WBS should not have a repeated loop process

Project Demonstration

it was a good demo. 

 

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 Pathfinder: Project Tango Preliminary Research

projecttangologoblack

by:

Peiyuan Xu (Project Manager)

Nicholas Lombardo (Project Assistant)

Table of Contents

 

Introduction:

This spring 2016 Pathfinder project will use Google’s Project Tango as a platform to test and implement SLAM (Simultaneous Localization and Mapping) technology for autonomous vehicles. Project Tango uses computer vision to give device the ability to know the position in the relative 3D space as well as the distance from the surrounding objects to the device itself.

 

Physical Description

tango_specs1

The Tango tablet has a physical dimension of 119.77 x 196.33 x 15.36mm.

The weight is 0.82 lbs (370g)

Tango_hw

On the back of the tablet, it has a fisheye camera placed in the middle with an IR projector on the right and a RGB-IR camera on the left. The IR projector and RGB-IR camera work together with IMU (Inertial Measurement Unit) sensors to perform the features of Motion Tracking, Depth Perception and Area Learning.

 

Key Features

  • Motion Tracking

The IMU is used to give feedback on the device orientation and spatial displacement from a reference point. The Motion Tracking feature is usually achieved by integrating readings from orthogonally placed gyroscopes, magnetometers, and accelerometers.

Learn more about Motion Tracking

  • Depth Perception

Tango’s Depth perception can provide feedback on distances between the device and nearby solid objects. Tango uses an approach called structured light sensing where a pattern of light is cast and the size and shape of the pattern seen by the camera is used to determine the distance.

Learn more about Depth Perception

  • Area Learning

Tango’s Area Learning feature helps with motion tracking by correcting drift and helps with navigation of indoors applications. It uses image processing of visual features in a virtual environment to recognize a previously-visited location.

Learn more about Area Learning

 

Limitations:

  • The IR sensors for depth perception is generally restricted to indoor environments (sun and incandescent IR light can drown out structured light sensing). Therefore, in order to accomplish the requirements for both solar panels implementation (under direct sunshine) and Tango applications (without sunshine), the mission course is changed to be at CSULB campus during night time.

 

  • Range of IR sensors practically limits its use to nearby obstacle detection rather than long-range path creation. The range of the IR sensor is from 0.5 meters to 4 meters based on Project tango’s website.

 

Power Test For Tango Tablet

IMG_3208 IMG_3210 IMG_3215

The purpose of this test is to gain the power specs while running point cloud App, screen on, bluetooth on, WiFi on for worst case. 

The result shows that it takes about 2 hours and 16 minutes to run the battery from fully charged (100%) to 14%. In which case, it dose not meet our level 1 requirement of running for 4 hours. Also it is recommended to use a high-power 2A USB hub to charge the Tango Tablet.

Therefore, in order to meet the level 1 requirement, an extra portable charger (Power output: 5V, 2A) with Micro USB cable will be used to charge Tango tablet continuously during the mission.

Reference:

 

Get started with Project Tango

Notice that Project Tango offers APIs in C and Java, and a SDK for Unity. For developers who are already familiar with Android studio and Java development, the Java API is the one to use. Developers who want to be able to write apps with the Android NDK (Native Development Kit) should use the C API, which enables more flexibility on the native and system level. The Unity SDK is good for game development in 3D virtual environment.

Learn more on API Overview

Tutorials can be found here:

Once you have downloaded the sample code and successfully installed the App. you will see a window like this:

Screenshot_2016-04-07-22-38-12

This is the Point Cloud version of a person standing in the Hallway. On the top left, It states that “Average depth(m): 4.352” which means that person is about 4 meters away from the tablet.

On the right side, there are 4 buttons. The first “Bluetooth” button is the custom button that I made in order to connect the tablet to Arduino through BlueTooth while running the Java Point Cloud App. Below the “Bluetooth” button, there are the three buttons that can switch from different orientation and give different point of view of the Point Cloud data.

After we have done that, now it is important to understand how the system should work between Project tango and Arduino and then eventually implement the software modules on Arxterra.

 

Project Tango System Block Diagram

tango_system
Above is the Project Tango System Block Diagram that provided by Professor Hill. The diagram is  divided into two parts. In the Android Operating system, commands will be sent by Arxterra to WiFi Manager API and decoded in Tango Android OS. Then the main point cloud App will process the coordinates and position information from Sensor Event API and Tango XYZij structure and send feedback telemetry back from WiFi Manager API to Arxterra. In the Arduino part, Java Point Cloud App will send command sequence through bluetooth to UART subsystem decoder and then to Arduino board. Then the microcontroller (Arduino mega) will send serial read/write to command decoder to command handler and then to GPIO to control the Ultrasonic sensors, H-bridge motors and servos. From that, our team develop the software modules and tasks breakdown to accomplish the system design.

 

Software Modules and Task Breakdown

Module 1:   Sending commands to WiFi Manager API (Through “cool term”)

Module 2:  WiFi Manager API sending telemetry out to Arxterra

Module 3:  Tango SDK or NDK (Translate XYZij to Tango)

Module 4:  SensorEvent API (IMU)

Module 5:  BlueTooth API to HC-06 Module to Arduino

Module 6:  Arduino to HC-06 to BlueTooth API

Module 7:  Arduino Command Decoder to Command Handler

Module 8:  Arduino Command Handler to GPIO Output to Motors and Servos Control

Module 9:  GPIO Input to Telemetry Send Packets to UART Receiving Subsystem to Android OS

Module 10  Java App Command Sequence Development

 

More on IMU and Coordinate System

Module 3 requires to understand the IMU (Inertial Measurement Unit) and Project Tango Coordinate Frames. The links below explain the Tango Coordinate System Conventions

Coordinate System Convention

The next link explains Android devices IMU sensors in general that includes Tango Tablets as well

Sensors Overview

Research into PCL and ROS

Module 10 requires knowledge of processing point cloud data. This may be as easy as importing a library and using the defined classes/methods for data manipulation.

The PCL (Point Cloud Library) and ROS (Robot Operating System) are both open sources that offers libraries and tools to analyze point cloud data. Many companies and developers are working on building application with PCL or ROS for Project Tango. Some useful Tips and tutorials can be found here:

How to build applications with PCL for Android

Getting Started with Tango and ROS

PCL Documentation

 

Conclusion

The use of Project Tango tablet is ambitious since it is fairly new and requires extensive knowledge of Android App development and Java Programming. In this semester, our team is able to attempt and finish some of the Project Tango modules, that includes  “BlueTooth API to HC-06 Module to Arduino (Blinking LED and Motors Control)”, “Extract Point Cloud Data from Tango and process with Paraview software”. We will have upcoming blog posts to explain and show the steps of how these modules can be done. We hope the research work we have here can benefit the future groups or individual who wants to continue work on Project Tango.

Source Materials:

PCB Design: Schematic – Spring 2016

Posted by: Luis Valdivia(Project Manager)

Written by: Kevin Nguyen(Electronics and Controls)

 

Table of Contents:

  • Introduction
  • Full EagleCAD Schematic
  • Step-Down(Buck) Switching Regulator
  • Servo Status Indicator
  • PCA9685 Connections
  • 3-Pin Headers for Servos and Lightshow
  • Pin Headers for Low Voltage Alarm and Bluetooth

 

Introduction:

One of the main tasks of the Electronics and Controls Engineer is to design the circuit for the PCB. This post will explain the reasonings behind the chosen components on our PCB.

pcbschematic1.1

Fig 1.1 Full EagleCAD Schematic

This is the full schematic for UFO Quadcopter’s PCB. Further detail will be shown in the following figures.

pcbschematic1.2

Fig 1.2 Step-Down(Buck) Switching Regulator

Tasked with redesigning the PCB from last semester, I chose to replace their adjustable LDO voltage regulator with an LMR14050 buck converter. The reason for this is because LDO regulators lower voltage by burning excess power while buck converters lower voltage by storing the excess power. For the quadcopter’s circuit, a 5V output is required from a 14.8V supply. Dropping that much voltage using an LDO will waste a lot of power. Using the buck converter, the supply voltage will be able to drop down to 5V while maintaining enough current to power the PCA9685, servos, and light show. Capacitors are placed in parallel with the input and output to smooth the ripples since switching circuits may cause some fluctuation. The inductor is a storage device used for storing energy. The size of the inductor will determine the current output of the buck. The LMR14050 can output a maximum of 2A, which will be enough to power the servos and light show. The resistor network on the right side of the buck is used to adjust the voltage. The values I used will result in a regulated 5V output.

pcbschematic1.3

Fig 1.3 Servo Status Indicator

This is a simple LED status indicator. It is connected to the same node that powers the servos. If the LED is lit, the servos should be powered on. The resistor is used to lower the current to protect the LED. With a constant voltage of 5V, the higher the resistance the lower the current.

pcbschematic1.4

Fig 1.4 PCA9685 Connections

The PCA9685 is the same chip used within the Adafruit Servo Driver. Since weight is a major issue for our project, I chose to implement the servo driver in our PCB so that we won’t have to add a third board to our setup. The left side of the PCA shows the connections for power and input. The right side is the PWM outputs for controlling the servos and light show. The PCA is connected to the MultiWii through I2C. The MultiWii is the master device and the PCA is the slave device. The Serial Data and Serial Clock signals from the MultiWii will be able to control all 8 servos and light show. The A0-A5 pins are used to set the address of the PCA. Since we are only using 1 slave device, I grounded all addressing pins which would set the PCA address to 0.

pcbschematic1.5

Fig 1.5 3-Pin Headers for Servos and Lightshow

8 3-Pin Headers are included for the servos. 4 for the servos rotating in the X direction and 4 for the servos rotating in the Y direction. A 3-Pin Header is also used for the light show. Each header includes a pin for data, power, and ground. The control signal will be coming from the PCA9685. These components will be powered by the regulated 5V from the buck.

pcbschematic1.6

Fig 1.6 Pin Headers for Low Voltage Alarm and Bluetooth

To keep things nice and tidy, I made pin headers on the PCB for the voltage alarm and the bluetooth module. This will hold all the components on the board and keep things from swinging around during flight.

UFO Light show setup

Posted by: Luis Valdivia (Project manager)

By: Anthony Becerril (Mission, Systems, and Test Engineer)

Table of contents:
    Intro
    Step 1: Hardware via Circuit
    Step 2: Software via Arduino integration
    Additional Resources

 

Intro:

This UFO Quadcopter post is in regards to the custom light show that is created through use of a 24 LED Adafruit NeoPixel Ring and follows along previous light show posts. The following will break down the proper setup for hardware and software and additional resources available.

 

Step 1: Hardware via Circuit

The first step consists of setting up the appropriate circuit to properly power the ring. The following setup is emulated via breadboard although it is to be implemented onto the Printed Circuit Board (PCB) for efficiency and optimal space on the quadcopter. Protection of the ring is important for the lifetime of the LEDs. As stated by the Adafruit NeoPixel Best Practices, The following should be followed:

 

  • 1000 microfarads capacitor should be added in parallels to power and ground terminals
  • 300-500 ohm resistor between arduino data output to neopixel data input
  • Minimize distance between arduino and ring
  • Avoid connect ring to a live circuit. If necessary, connect ground first, then power, then data. Disconnect in reverse order.

 

Other practices are listed along with more details on powering, library installation, and more. The link should be thoroughly explored before moving forward. The ones listed are important for this specific setup mainly due to the high voltage battery and making sure the appropriate precautions are taken. Figure 1-1 (below) gives an overview of our circuit used.

Figure 1-1 (Fritzing diagram)

lightshow

We only used 3 terminals of the ring: one power, one ground, and one data. The power supply for the emulation is a 5 volts power supply whereas when using the PCB we will be implementing such components to step down the LiPo battery used to power the quadcopter.

 

Step 2: Software via Arduino Integration

After completing the hardware, software comes next through use of the Arduino IDE. Following the Arduino Library installation, the Arduino software is now able to test the ring with the “strandtest” example code to result as follows:

 

https://youtu.be/qTRpvA696YY

 

From all this, the possibilities of different lights show are many when considering the many different patterns available. Next steps are creating a code to be operational via bluetooth then having successful Arxterra application control for a custom light show settings.

 

Additional Resources:

Previous Blog Post: How to Light Show (Spring 2015)

Previous Blog Post: Creating Neopixel Ring Light Show (Fall 2015)

Adafruit NeoPixel Ring – 24 x 5050 RGB LED with Integrated Drivers

Adafruit NeoPixel UberGuide

Spring 2016 RoFi: Center of Mass Report

Christopher Andelin (Project Manager)

Mario Ramirez (Systems Engineer)

Qui Du (Manufacturing Engineer)

Andrew Laqui (Electronics and Controls Engineer)

Henry Ruff (Electronics and Controls Engineer)

Center of Mass Report

Mario Ramirez (Systems Engineer)

 

Qui Du and I ran a center of mass simulation using Qui’s SolidWorks design, https://www.arxterra.com/spring-2016-rofi-mechanical-design-rev-2/.  SolidWorks takes into account each hardware component of RoFi including the: mass, material, and dimensions.  From this simulation, we achieved the following results.

figure 1

Figure 1: Front View

 

figure 2

Figure 2: Side View

Figure 1 and Figure 2 shows RoFi in a neutral standing position with the center of mass being the black and white circle.  Further research has led us to the conclusion that we want a lower center of mass to allow RoFi to easily traverse inclines and make sharp turns.  A possible solution is to lower the batteries back down to the feet or lower the backpack for the batteries,  however, we will not move the batteries to the feet per customer’s request.  Further testing in SolidWorks shows that lowering the backpack will cause servos to hit,  therefore, we have decided to keep the current center of mass.  Our current model will lead to wider turns and more exaggerated movements while traversing over inclines.

Spring 2016 RoFi: Prototype

Christopher Andelin (Project Manager)

Mario Ramirez (Systems Engineer)

Qui Du (Manufacturing Engineer)

Andrew Laqui (Electronics and Controls Engineer)

Henry Ruff (Electronics and Controls Engineer)

Table of Contents

Head Prototype

Qui Du (Manufacturing Engineer)

Objective

Since the 3D head is not printed yet, we realized that if we are to be successful, we need to begin coding the walking frames now.  We want to replicate the final 3D printed head so when we implement the 3D printed head there will be minimal errors with RoFi’s stability.

Materials

I decided to use an aluminum encased designer glasses box because it can easily be shaped and retain form.

figure 1

Figure 1: Aluminum Encased Box

Method

I measured the box and cut it to form the size of the SolidWorks 3D printed head. I bent the back of the box to form a battery holder.

figure 2

Figure 2: Prototype vs. 3D Model

Figure 3 shows the general look of the prototype.

figure 3

Figure 3: Prototype Head

Next, I cut holes into the front of the head for the ultrasonic sensor.

I attached the Arduino Mega board under the head top cover.

Figure 4 shows how all components have been organized in the head.

figure 4

Figure 4: Layout

Figure 5 shows the finalized prototype.

figure 5

Figure 5: Finalized Prototype

Conclusion

We were able to successfully have RoFi surpass the incline threshold with the prototype head.  We are hoping that replacing the prototype head with the 3D printed head will be successful too.

 

Spring 2016 3DOT Goliath, Making Laser Tag Possible: Putting it all Together

By: Kevin Moran (Electronics and Control Engineer), Tae Lee (Systems- Provided the musical notes code needed for this game)

 

In this post, I will be discussing the final results for the IR Emitter when being used alongside with a Schmitt Trigger and the code that will be used to determine when the 3DoT Rover gets hit 3 times by an IR emitter.

I will first show below what happens when this final circuit is connected to an Arduino analog pin, although the Schmitt trigger is technically used to convert an analog signal to digital, I feel it is important to understand these changes in analog first.

  • I first tested the output by connecting it to the Analog input of my Arduino Uno
  • The final output of the signal by using the correct resistors values has very little noise and it is controlled within our 0-5V range
  • When the IR light hits the receiver, the signal from the photo-transistor is passed by the Schmitt trigger. This trigger then inverts the signal, and reduces the noise from the input giving us the output shown here.

1

As can be seen this signal is inverted from the original IR receiver signal, and the final output has relatively zero noise.

 

 

Since this trigger is an analog to digital converter, I also decided to test the output with a digital Arduino pin.

  • I decided to test the circuit with an Arduino Digital Input (2) just to ensure if asked, the PCB would work with either analog or digital input.
  • The concept is the same, except the outputs are either 0v or 1v.
  • The signal in the output is different from the analog output, they are peaks.
  • As you can see from the Arduino plotter, the circuit detects the IR light faster, and counts more hits/second.

2

 

However upon closer inspection, I was told my output is not supposed to be spiked, but rather look similar to the analog output. One reason might be the Op-Amp I was told to use. I will continue testing and resolve this issue.

 

The Code:

3

 

This code is used to track the number of hits on the 3DoT Rover when testing with the analog pin. It consists of a loop that is activated once the voltage on the receiver reaches 3.5v, and counts the number of times it reaches this level or higher. Below I present the pseudo code and the flow chart in hopes of better explaining this code.

4

 

 

Flowchart:

5

 

 

Once the micro-controller detects 3 hits, it will play a short song and then reset, and start over again.

Sources:

https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage

 

 

Spring 2016 3DOT Goliath, Making Laser Tag Possible: The emitter

By: Kevin Moran (Electronics and Control Engineer)

In this post I will be discussing the IR emitter that is being used to make this game possible, and the components that go along with it:

 

Components:

IR LED: NTE30047

Transistor: 2N2222

Resistors: 8.6k and 110 ohm

 

The NPN transistor acts like a current regulator to ensure the IR LED is provided just enough current. The base which is connected to the 8.8k ohm resistor is connected to a digital pin on our micro-controller (3DoT or Arduino Nano) and this allows us to control when the emitter is on or off. The 110 ohm resistor is connected between the 5V supply and the positive side of the IR LED, while the ground is then connected to the collector.

1

 

This is the resistor value that allows us to use this NPN transistor as an on/off switch.
 

 

Fritzing Diagram:

 

2

 

 

 

Eagle CAD schematic:

 

 

3

 

Sources:

Jeffrey Cool: Division Manager

https://learn.sparkfun.com/tutorials/transistors