Auto-Alignment Laser Mirrors First Semester Report Fall Semester 2013

Size: px
Start display at page:

Download "Auto-Alignment Laser Mirrors First Semester Report Fall Semester 2013"

Transcription

1 Auto-Alignment Laser Mirrors First Semester Report Fall Semester Full Report- by Michael M. Rader Prepared to partially fulfill requirements for ECE401 Department of Electrical and Computer Engineering Colorado State University Fort Collins, Colorado Project Advisor: Jorge Rocca Approved By: Jorge Rocca

2 Abstract For the purposes of safety, efficiency and accuracy, it is essential for lasers to be aligned when performing experiments. Natural and human phenomena will constantly cause beam misalignments, so people working with optics necessarily perform alignments of lenses and mirrors throughout their experiments and applications, either manually or by using autoalignment systems. It s ideal to use auto-alignment systems as this tends to be quicker and more accurate. It is possible to purchase auto-alignment systems commercially; however, our goal is to produce one on-site. Hopefully, we will be able to produce it somewhat cheaper than it would be to buy; however, it s also important that we can have a system that we can alter as we see fit to our uses. This customizability is something that just doesn t exist on the market. The system has already been built and works well, primarily due to David Yazdani s efforts over the last year. My goal is to duplicate David s design so we have four systems in total, and to find ways to make the code more robust and efficient as it s the best part of the system to tweak at this point. One of the most important features I need to add to the system is a feature that will stop the motors from moving when the laser beam is interrupted. So far we have produced two systems that work as expected and desired. The beam auto-aligns and remains stable for up to 12 hours (and likely beyond). The new code is slightly more efficient, and I am still working on implementing the code that will stop the beam when it is interrupted. 2

3 Table of Contents Title Page... 1 Abstract... 2 Table of Contents... 3 List of Figures : Introduction : Previous Work... 8 A Modes of Operation... 8 B Mounts and Stepper Motors C Quadrant Photodetector Module D Microcontroller E Motor Driver F Wireless/Power Supply PCB G Front Panel and Front Panel PCB : Current Work A Starting State B Back Panel C Code : Conclusion and Future Work A Future Work i.) Hardware ii.) Software iii.) Testing iv.) Optimization v.) Time Table for Next Semester B Conclusion Appendix A - Abbreviations Appendix B - Budget Appendix C - Timelines Appendix D Previous Code Appendix E New Code Appendix F Parts List for Motor Driver PCB Appendix G Parts List for Wireless PCB Appendix H Parts List for Front Panel PCB

4 List of Figures Figure Beam Alignment Arrangement Figure Side View of Mirror Arrangement Figure Algorithm for Auto-Alignment Code Figure Wireless Control of Manual Alignment Figure Mirror/Motor Mount with Stepper Motors Figure CAD Design of Motor/Mirror Mounts Figure 2.05(a)- Physical Module Figure Figure 2.05(b)- Circuit Diagram of Module Figure Top-Down View of Encased Quadrant Photodiode Figure Motor Driver PCB Figure Motor Driver Schematic Figure Wireless PCB Figure Wireless PCB Schematic Figure 2.11(a)-Solidworks Schematic of Front Panel Figure 2.11(b)-Front Panel Figure PCB of Front Panel Figure Schematic of Original Back Panel Design Figure Cost Comparison of Lemo and Hirose Connectors Figure 3.03(a)- Schematic of Back Panel Figure 3.03(b) Implemented Back Panel Figure 4.1 Timetable for Next Semeseter 4

5 Introduction At the ERC, we have a variety of optical experiments that requires laser beams to be constantly and accurately aligned. For example, the laser system we created the latest auto-alignment control system for uses a low power HeNe laser as a continuous reference signal for high-power laser pulses which are sent infrequently. For this and other systems, alignment is essential for the following reasons: 1.) Alignment is essential for accuracy and precision in experiments 2.) If misaligned, the beam of the reference laser could cause misalignment of the high power laser which could harm someone who is operating the laser system or damage components. Consequently, it s important for those working in optics to keep their beams as aligned as accurately as possible as often as possible. Due to constant misalignments, this can become time consuming for the experimenter who needs to keep manually aligning the beam. This is where an auto-alignment system becomes important. An auto-alignment system improves the experimenter s work efficiency as well as the level of accuracy in alignment since a human aligning the system can only get it moderately centered, but an auto-alignment system has a higher degree of accuracy and consistency that simply can t be achieved by manual adjustment. It s also important to note that the potential for this laser system to harm someone presents an ethical ramification to the design of our auto-alignment system. Misrepresentation of this system, under-testing of this system, and shoddy work could all potentially harm someone working on these laser systems. Auto-alignment laser systems already exist on the market; however, we intent to produce a similar system on-site that is cheaper and more convenient to our needs than commercial systems. While it s possible our system won t ultimately be as cheap as a budget commercial system, it s beneficial to be able to modify the auto-alignment system in a way that best fits the needs of those working at the ERC. There is a degree of customizability in creating our own system that we wouldn t be able to achieve through a commercial purchase. It s also important to note that the ERC has a general ethos of building as many things on site as possible, and building this system befits the ethos. This is a continuing project, building on the previous work and research of students and researchers. I have been working with David Yazdani, who worked on this system as a senior design project last year. Most advancements on the physical system were driven by David this semester, with me assisting him and learning how the system works. 5

6 The history of this project and David s efforts before I came onto the project are discussed in Chapter II. The work that the two of us did over the semester is listed in Chapter III. Finally, the work I will be doing without David next semester is listed in Chapter IV. Our alignment system, as seen in figure 1, is two mounts with 1 mirrors attached which reflect the beam. Each mount has two linear actuator stepper motors that can adjust the mirror horizontally and vertically. This arrangement allows us four degrees of freedom so as to adjust the position and angle of the beam. Figure 1.1 Top-Down Beam Alignment Arrangement Our auto-alignment system is a basic feedback system. Our plant, the portion of the system we adjust, is the mirror mounts. By adjusting these mirrors, we can adjust the beam. These mirrors are adjusted using high-resolution (1.5 µm linear travel) linear actuator stepper motors. The input to this system is a 7.5 V step input that comes from the motor driver PCB which is in turn driven by the microcontroller. The feedback to this system is provided by splitting a smaller beam off of the primary beam at a 90⁰ angle (see figure 1.2). This split-off beam is then directed onto a quadrant photodiode. This quadrant photodiode can send out a signal indicating how far the split off beam is from the center of the photodiode. The code s algorithm then adjusts the motors accordingly, with the final goal of minimizing the distance from the center of the quadrant photodiode. 6

7 Figure 1.2 Side View of Mirror Arrangement Using the code, we can tweak the resolution of the system as well as its accuracy and the tolerance of the system can be altered. The benefit of this is that we can lower the tolerance, so the system adjusts the mirrors less often, or we can raise the tolerance so that the motors are in a near perpetual state of minor adjustments. The benefit of this flexibility is that we can use this auto-alignment system for a wider range of situations and applications. From this point on, a majority of the changes made to the system will be made through the code as the physical design of the system is satisfactory. There are two modes of operation with this system, manual and auto-alignment. As discussed in Chapter 2, the user can easily switch between these modes. In manual mode, the user can adjust the mirror mounts either by moving the 5-Way Tactile Switch on the front panel or by controlling it wirelessly via remote control. 7

8 2 Previous Work This system is the product of years of research and design, passing through several hands and seeing a variety of iterations. This section focuses primarily on the most recent iteration, starting in Summer 2012 as an undergraduate research project which continued into the 2012/2013 school year as a senior design project. The major components of one system are: (2) mirror/motor mounts with two linear actuator stepper motors each to adjust the position and angle of the beam. This is the plant of the feedback system (2) QP U-SD2 quadrant photodiode modules to detect alignment feedback from the beam (1) MSP430FG4618 Ultra-Low-Power Microcontroller with FET debugging to analyze feedback and return a value to the motor drive PCB (4) Allegro A3979 Microstepping DMOS Driver with Translator (1) Motor Driver PCB (1) Wireless/Power Supply PCB (1) Front Panel PCB A Modes of Operation The auto-alignment system is actually capable of two modes of operation, manual and autoalignment. The auto-alignment mode employs the feedback detection from the Quadrant Photodiode Detectors, the microcontroller polls the values from the detectors using an ADC, averages them, then compares them to an initial 0 value to see how far the beam is from center using the iterative algorithm in Figure 2.1 8

9 Figure 2.1 Algorithm for Auto-Alignment Code The second mode of alignment is manual alignment. This feature is essential for the experimenter to initially align the beam or make small adjustments. There is a human element that is necessary for our design, that is, the beam will stay aligned in the spot that the experimenter chooses, and the auto-alignment system holds it in that spot. The manual alignment can be controlled either by the front panel joystick or wirelessly via the remote seen in Figure 2.2. Figure 2.2 Wireless Control of Manual Alignment A switch on the front panel of the system determines if the system is operating in manual or auto-alignment mode. 9

10 B Mounts and Stepper Motors The mounts for the mirrors and motors are machined on site in the CNC. These mounts previously used 3 mirrors, but were adjusted to accept 1 mirrors by David. The mount design can be seen in Figure 2.3. The Solidworks CAD design for the mounts is also shown in Figure 2.4. Figure 2.3 Mirror/Motor Mount with Stepper Motors Figure 2.4 CAD Design of Motor/Mirror Mounts The stepper motors are Hayden-Kerk H4U linear actuators. Each 7.5 Volt input produces a 1.5 µm linear step from the linear actuator. These linear actuators are custom made, so there is a roughly 2 month lead time for Hayden-Kerk to produce more motors. 10

11 C Quadrant Photodiode Detector Module The quadrant photodiode detector module is encased in a machined case seen in Figure 2.6 and a HeNe line filter is placed over the photodiode to prevent additional noise from affecting the values. The design of the quadrant photodiode itself can be seen in Figure 2.5(a)-(b) Figure 2.5(a) Physical Module Figure 2.5(b)-Circuit Diagram of Module When a beam strikes the photodiode, a photocurrent is produced. This photocurrent is then passed through a Current to Voltage Amplifier. These voltages are then passed into Sum and Difference amplifiers. The module finally returns the following values: (V3+V4)-(V1+V2) = (Top Voltage-Bottom Voltage) (V2+V3)-(V1+V4) = (Left Voltage - Right Voltage) (V1+V2+V3+V4) = Vsum (Voltage Sum) At the moment, we are only utilizing the positional value of the photodiodes, the Top-Bottom and Left-Right. In the future, the Voltage Sum will be utilized to determine if the laser beam is striking the photodiodes or not. The microcontroller initially polls the values coming from the photodiode when the beam is blocked; this gives the code a zero-value to work from, which is the value the algorithm is iteratively seeking. After this initial polling, if the system is set on auto-alignment mode then the microcontroller will continue constantly polling the quadrant photodiode. The code polls the photodiodes 100 times, and then averages this value out. The basic algorithm in the code simply determines that, if the Top Voltage-Bottom Voltage is greater than the zero-value, then move the y-axis motor on the mount forward to move the beam in the y direction. If Top-Bottom is less than the 0-value, then the y-axis motor will move back, moving the beam in +y direction. The same process is used in Left-Right, but with the x-axis motor. 11

12 Figure 2.6 Top-Down View of Encased Quadrant Photodiode D Microcontroller We are using a Texas Instruments MSP430FG4618 Ultra-Low-Power Microcontroller with FET debugging. The benefit of this microcontroller is that we can easily make changes to the code and download them to the microcontroller via a USB debugger. We are utilizing the IAR IDE software to download and debug the code to the microcontroller. This IDE will accept and interpret Assembly/C/C++ code; our code is a mixture of these languages. 12

13 E Motor Driver The PCB for the motor driver can be seen Figure 2.7. This PCB is the product of a previous senior design project. There are four identical motor driver modules on this PCB, one for each stepper motor. Figure 2.7 Motor Driver PCB This PCB accepts input from the microcontroller and then drives the motors. A list of parts required for this PCB can be found in Appendix F. A schematic of the PCB can be found in Figure 2.8. This PCB takes in voltage values of +5 and +12. The primary benefit of these drivers is to simplify driving the motors and to allow fractional stepping of the motors (1/2, 1/4, 1/16). Figure 2.8 Motor Driver Schematic 13

14 F Wireless/Power Supply PCB The wireless PCB can be seen in Figure 2.9, its schematic is in Figure 2.10, and a list of parts for it can be found in Appendix G. Figure 2.9 Wireless PCB This board can take input from the front panel as well as the wireless remote seen in Figure 2.2 and is then directly passed to the motor controller for manual control of the motors. Figure 2.10 Wireless PCB Schematic 14

15 G Front Panel and Front Panel PCB The most recent addition to the system before I came onto the project is the Front Panel + Front Panel PCB. A picture of the current front panel can be found in Figure 2.11(a) and its Solid Works design can be found in Figure 2.11(b). Figure 2.11(a) Solidworks Schematic Figure 2.11(b) Front Panel The intent of the front panel is to make the system more user friendly, keep the system fully enclosed, and to provide a more aesthetic design. The LCD Display on the front panel shows the currently selected mount as well as the selected resolution of the motor steps. The user can also use the front panel to manually control the motors and switch between modes of operation. The LED arrays on the front panel indicate which direction the motor mounts are currently moving, this is helpful in determining when the auto-alignment system is getting close to full alignment as the LED indicators will light up less frequently and in a more uniform circular pattern. The front panel was machined on-site using the CNC. The schematic of the front panel PCB can be found in Figure and a list of its components can be found in Appendix H. 15

16 Figure 2.12 PCB of Front Panel 16

17 3 Current Work A- Starting State of Project The status of the project when I began was this: (1) Encased system with no back panel and wires connecting directly to the PCBs (1) Non-Encased system Uncommented/Undocumented, Cluttered Code The first several weeks was dedicated to David explaining the system to me while I worked on understanding and characterizing the code. Professor Rocca determined that the system should have a back panel and connectors so that we could easily attach and detach the connections to the system and move it if needed. B- Back Panel The first design for this back panel (Figure 3.1) utilized Molex connectors. This design was fully implemented. David and I soldered wire connections, connected the wires running from the motors and photodiodes to male Molex connectors, and we attached the internal connections to female Molex connectors. These female Molex connecters were then epoxy glued using JB Weld into the back panel to hold them in place. It was then determined that this design was flawed as it allowed noise to effect the signal coming from the photodiodes and going to the motors, it was difficult to connect and disconnect the connections, and the design was not very aesthetically pleasing. 17

18 Figure 3.1 Schematic of Original Back Panel Design The second design for the back panel used circular bayonet lock shielded RF connectors. We were initially advised to use Lemo connectors for this; however, the cost of these connectors was not budget-effective. After some research, I was able to find a much cheaper alternative from Hirose Electric Co Ltd. A table of cost comparisons and the connectors needed is found in Figure 3.2. Figure 3.2 Cost Comparison of Lemo and Hirose Connectors We have since determined that the Hirose connecters are sufficiently shielded for our uses, so it s fortunate that we did not purchase the Lemo connecters given the cost savings here. We also purchased shielded wire for the motor and photodiode connections. David then designed a new back panel design based on a sketch I made using datasheet values for the connectors. This new design was machined by David on site in the CNC. The schematic of the new back panel is in Figure 3.3(a) and the actual back panel can be seen in Figure 3.2(b). 18

19 Figure 3.3(a) Schematic of Panel Figure 3.3(b) Implemented Back Panel David machined two back panels, and then machined one more front panel for the second system. We then soldered all of the connections for the first and second systems. Ultimately, we assembled both systems and tested them in our testing arrangement in the teaching lab. Finally, we were able to test both systems in the actual lab, installing them and seeing if the beam remained aligned. Both systems were tested successfully, so we installed the new shielded wires in the lab and connected them to the permanent mounts. One system is now being used regularly in this lab while the other system is installed in the teaching lab for future testing purposes. 19

20 B- Code The second major project of the semester was working on the code. The original code, as seen in Appendix D, was almost entirely uncommented. It also had several unused variables, unused lines of code, old commented out code and inefficient arrangement of functions. Through the semester I was able to characterize the code, commenting on it as thoroughly as I could. I also removed all unused lines of code and unused variables, added function prototypes to increase compiling speed, and consolidated 8 functions down into one single function. The new code is in Appendix E. This code has been tested, the auto-alignment feature is working perfectly but there is a bug in the manual alignment code that I have not been able to locate yet. One of the features requested by Professor Rocca s graduate student Reed Hollinger is code that stops the motors from adjusting when the beam is interrupted. This change requires the following simple pseudo-code: If (No Beam) Do not move motors, wait Else Follow original iterative algorithm (Figure 2.1) I ve had this algorithm determined since the feature was requested. However, determining if the beam is on the photodiode is actually somewhat difficult. The values that we receive from the photodiode give us the difference between the top and bottom and the left and right. Since there is always some light striking the photodiode, the values we get during beam-broken conditions merely looks like the beam is close to the center. Since the value is never going to be exactly the same as the zero-value, the motors will continue adjusting to reach the center, causing unpredictability. Through analysis of the values reaching the photodiode, it is clear that the best way to implement this algorithm is to use the Vsum value. I will discuss this more in Part 4. 20

21 4 Conclusion and Future Work A- Future Work David has completed the requirements of his senior design project and will not be joining me as a team member next semester, so all continuing work will be mine. The tasks that remain are: i. - Hardware I have already ordered the motors, LCDs, 5-Way tactile switches, connectors, and photodiodes for the next two systems. The parts I have yet to order are: (2) Metal Cases for Systems (Custom from Rose-Bopla) (2) Microcontrollers (2) Front Panel PCBs The parts I need to machine are: (2) Back Panels (2) Front Panels (4) Metallic plates to rest PCBs on (4) Mirror/Motor Mounts I need to solder components to: (2) Wireless PCB (2) Motor Drive PCBs ii. - Software It seems that the Vsum value coming from the quadrant photodiode module is connected to the microcontroller. However, since this value is not used in the code, it is not actually documented where. I need to determine where this value is being read, if it s being read, and use that to implement the shut-off feature in the code. I also still need to debug the new code in order to determine where the bug is that is keeping the manual mode from working. 21

22 iii. Testing My intent is to begin testing midway through the semester. Ideally, both systems will be assembled by then, so I can begin extensive testing to make sure they are functioning correctly. Part one of testing is to connect the assembled system in the teaching lab and let it run for at least 4 hours to see if remains aligned. Part two of testing is to connect the assembled system in Reed s lab to see if it can run for at least 8 hours and remain aligned. This is the benefit of the modularity design of the system, as it is easy to swap out systems without having to replace the mirror or wire arrangements in the labs. Testing of the software should also be done by the ides of March, at the very latest. That is, the new software should function precisely as accurately as the old software and also stop moving the motors when the beam is interrupted. iv. Optimization The final process is optimization, this occurs after the systems have been tested and are working as desired. I will search for any additional features that can be added to the system in order to improve its function and efficiency. For example: Reed has suggested a PID controller to stabilize movement of the motors Dr. Milton has suggested a matrix-based algorithm for the code Clayton has stated that a manual for the system would be helpful for those using the system in the labs. 22

23 v. Time Table for Next Semester The breakdown of tasks is as follows: Figure 4.1 Timetable for Next Semeseter Hardware: Phase 1 Solder components to Wireless/Motor Driver PCBs/Order remaining parts Phase 2 Machine mounts/attaching motors Phase 3 Machine front and back panels + plates for PCBs Phase 4 All parts should arrive by this point, begin assembly Phase 5 Finalize assembly of both systems + Attach wires Software: Phase 1 Implement code change to stop motors when beam is interrupted Phase 2 Fix manual alignment code Phase 3 Debug remaining code and comment fully Testing: Phase 1 Test two new systems in teaching lab + Test new code Phase 2 Fix inevitable problems that arise during testing Phase 3 Test two new systems in Reed s lab Phase 4 Fix inevitable problems that arise during testing Phase 5 Test code on every system + Test optimized features Phase 6 Wrap-up Phase Optimization: Phase 1 Decide which new features can be added to optimize system+code Phase 2 Plan how to implement features Phase 3 Implement features Phase 4 Compare features to previous and determine if they are superior 23

24 B Conclusion There are some unique difficulties to working on a continuing project. Not being involved in the initial process of assembling and characterizing the parts of the system makes it harder to understand the system as a whole. While I feel comfortable with it now, it did take a while to understand how it worked. I am very pleased with the current state of the system. We have an aesthetic and stable design that is easy to connect and disconnect, which is precisely what we wanted. I hope to be able to replicate this design as well for the next two systems, and that they will be equally satisfactory. 24

25 Appendix A - Abbreviations 1) Laser Light amplification via the stimulated emission of radiation 2) HeNe Helium Neon 3) PCB Printed circuit-board 4) FET Flash Emulation Technology 5) ADC Analog to Digital Controller 6) LCD Liquid-Crystal Display 7) ERC Engineering Research Center 8) CAD Computer-Aided Design 9) CNC Computer Numerical Control 10) IDE Integrated Development Environment 11) RF Radio Frequency 12) PID Proportional, Integral, Derivative 25

26 Appendix B - Budget Many of the needed components were purchased in the previous semester, consequently it ll be much cheaper this semester. This Semester: Linear Actuator Motors(4)~$1700 Circular RF Shielded Connectors(24)~$680 Quadrant Photodiodes(4)~$800 Shielded Wire~$ Next Semester (Estimated) Microcontrollers(2)~$198 Front Panel PCB (1) ~$50 Metal cases for systems(2) ~$Unknown (guess: $100) Estimated total for 4 systems ~$7100 Estimated total for 1 system~$1800 This is excellent since our goal was to bring the cost in under $2,

27 Appendix C - Timelines Timeline 1: Design a back panel for the control system in Solidworks and machine it. 9/25 Test the currently established control system and determine any features or fixes that I might need to add. - 9/30 Establish a list of conditions that might negatively impact our system -10/25 Retest system under list of conditions that might negatively impact our system, need to determine that it s completely robust 10/31 Install 1 st Functional System in Reed s Lab and Test (David and Michael) 11/5 Add Shutoff Feature in Code for Beam-Break Conditions (Michael) Finish by 11/5 Machine case for second system (David) Finish by 10/31 Order PCBs for additional systems (David) Finish by 10/31 Assemble second system (David and Michael) Finish by 11/20 Test second system (Michael) Finish by 11/30 Have new code completely written and commented and tested (Michael) Finish by 11/30 Install 2 nd system in Reed s lab (David and Mcihael) Finish by end of Fall semester (or over break) Note: This should satisfy David s senior design requirements Order parts for third and fourth systems and do partial assembly (Michael) Finish by end of Fall semester (or over break) 27

28 Timeline 2 Design a back panel for the control system in Solidworks and machine it. Finish by 9/25 (Completed by David) Test the currently established control system and determine any features or fixes that I might need to add. (Completed by David and Michael) Finish by 9/30 Establish a list of conditions that might negatively impact our system (Michael) Finish by 10/25 Retest system under list of conditions that might negatively impact our system, need to determine that it s completely robust (David and Michael) Finish by 10/31 Install 1 st Functional System in Reed s Lab and Test (David and Michael) Finish by 11/5 Add Shutoff Feature in Code for Beam-Break Conditions (Michael) Finish by 11/5 Machine case for second system (David) Finish by 10/31 Order PCBs for additional systems (David) Finish by 10/31 Assemble second system (David and Michael) Finish by 11/20 Test second system (Michael) Finish by 11/30 Have new code completely written and commented and tested (Michael) Finish by 11/30 Install 2 nd system in Reed s lab (David and Mcihael) Finish by end of Fall semester (or over break) Note: This should satisfy David s senior design requirements Order parts for third and fourth systems and do partial assembly (Michael) Finish by end of Fall semester (or over break) 28

29 Timeline 3 Design a back panel for the control system in Solidworks and machine it. Finish by 9/25 (Completed by David) Test the currently established control system and determine any features or fixes that I might need to add. Finish by 9/30 [tested, works] (completed by David, Michael and Reed) Install first functional system in Reed's lab and test (Completed by David, Michael and Reed, works) Machine front and back panels for second system Finish by 10/11/13 (Completed by David) Machine new back panel to accomodate shielded connectors in back of system as requested by professor Rocca(Completed by David) Order PCBs and parts for additional systems Finish by 10/11/13 12/1/13 Assemble second system Finish by 11/15/13 (Michael and David, in progress) Test second system Finish by 11/22/13 (Michael and David, in progress) Write new code that is faster, more reliable and will stop moving motors if the beam is broken - Finish by 11/22/13 (Michael) Assemble and 3rd and 4th systems and install by end of spring semester 29

30 Timeline 4 Design a back panel for the control system in Solidworks and machine it. Finish by 9/25 (Completed by David) Test the currently established control system and determine any features or fixes that I might need to add. Finish by 9/30 [tested, works] (completed by David, Michael and Reed) Install first functional system in Reed's lab and test (Completed by David, Michael and Reed, works) Machine front and back panels for second system Finish by 10/11/13 (Completed by David) Machine new back panel to accomodate shielded connectors in back of system as requested by professor Rocca(Completed by David) Order PCBs and parts for additional systems Finish by 10/11/13 12/1/13 Next Semester Assemble second system Finish by 11/15/13 (Michael and David, in progress) Test second system Finish by 11/22/13 (Michael and David, in progress) Write new code that is faster, more reliable and will stop moving motors if the beam is broken - Finish by 11/22/13 (Michael) 30

31 Appendix D - Previous Code #include "msp430xg46x.h" #include <intrinsics.h> // Intrinsic functions #include <stdio.h> #include <string.h> int i1=0; int ib1=0; int i2=0; int ib2=0; int i3=0; int ib3=0; int ib4=0; int i4=0; int mm2=0; int mm1=0; int mm3=0; int mm4=0; int size=0; int tempx=0; int mount=0; unsigned int e, d, c, b, a, x, j, z,p, counter,nothing ; // Character //position index for string transmission volatile unsigned int i; unsigned long int Results[6], test[50], read0[101], read1[101], read2[101], read3[101], read4[101], read5[101], sum[6], compare[6], difference, AutoComp[4]; float number = 0.0; void delay(int x) for(int i=0;i<1000;i++) for(int j=0; j<x; j++) i++; void bmovemotor2(int x) mm2++; P2DIR = BIT4+BIT6; P3OUT = BIT4; if(i1%2==0) P3OUT = BIT6; if(i1%2==1) P3OUT &= ~BIT6; P3OUT &= ~BIT6; i1++; if(i1==10000) i1=0; void movemotor2(int x) mm2--; P3DIR = BIT4+BIT6; P3OUT &= ~BIT4; if(ib1%2==0) P3OUT = BIT6; 31

32 if(ib1%2==1) P3OUT &= ~BIT6; P3OUT &= ~BIT6; ib1++; if(ib1==10000) ib1=0; void movemotor1(int x) mm1--; P4DIR = BIT2; P2DIR = BIT3; P4OUT = BIT2; if(i2%2==0) P2OUT = BIT3; if(i2%2==1) P2OUT &= ~BIT3; P2OUT &= ~BIT3; i2++; if(i2==10000) i2=0; void bmovemotor1(int x) mm1++; P4DIR = BIT2; P2DIR = BIT3; P4OUT &= ~BIT2; if(ib2%2==0) P2OUT = BIT3; if(ib2%2==1) P2OUT &= ~BIT3; P2OUT &= ~BIT3; ib2++; if(ib2==10000) ib2=0; void movemotor3(int x) mm3--; P2DIR = BIT7; P4DIR = BIT6; P2OUT = BIT7; if(i3%2==0) P4OUT = BIT6; if(i3%2==1) P4OUT &= ~BIT6; P4OUT &= ~BIT6; i3++; 32

33 if(i3==10000) i3=0; void bmovemotor3(int x) mm3++; P2DIR = BIT7; P4DIR = BIT6; P2OUT &= ~BIT7; if(ib3%2==0) P4OUT = BIT6; if(ib3%2==1) P4OUT &= ~BIT6; P4OUT &= ~BIT6; ib3++; if(ib3==10000) ib3=0; void movemotor4(int x) mm4--; P5DIR = BIT0; P2DIR = BIT1; P5OUT = BIT0; if(i4%2==0) P2OUT = BIT1; if(i4%2==1) P2OUT &= ~BIT1; P2OUT &= ~BIT1; i4++; if(i4==10000) i4=0; void bmovemotor4(int x) mm4++; P5DIR = BIT0; P2DIR = BIT1; P5OUT &= ~BIT0; if(ib4%2==0) P2OUT = BIT1; if(ib4%2==1) P2OUT &= ~BIT1; P2OUT &= ~BIT1; ib4++; if(ib4==10000) ib4=0; // *********************************************** // * changestep subroutine controls motor speed * // * button is P10.7, MS1 is P3.7, MS2 is P4.7 * 33

34 // *********************************************** void changestep() P4DIR = BIT7; P3DIR = BIT7; size++; if(size%4==0) //full P4OUT &= ~BIT7; P3OUT &= ~BIT7; if(size%4==1) // 1/2 P4OUT &= ~BIT7; P3OUT = BIT7; if(size%4==2) // 1/4 P3OUT &= ~BIT7; P4OUT = BIT7; if(size%4==3) // 1/16 P4OUT = BIT7; P3OUT = BIT7; for(int k=0; k<10;k++) delay(5000); void manual() P4DIR =BIT7; P3DIR =BIT7; while((p7in&bit4)!=bit4) int tempx = P10IN; if((tempx & BIT7) ==BIT7) changestep(); volatile int temp=0; volatile int temp2=0; P5DIR=0; P4DIR =BIT7; P10DIR=0; P3DIR =BIT7; P2DIR=0; P7DIR=0; P7DIR =BIT0+BIT5; temp=p7in&bit6; if(temp==bit6) mount= mount+1; for(int i=1; i<100;i++) delay(1000); if(mount%2==0) P7OUT =BIT0; P7OUT &= ~BIT5; if(mount%2==1) 34

35 P7OUT =BIT5; P7OUT &= ~BIT0; temp=p2in&bit6; if(temp==bit6) if(mount%2==0) movemotor1(1); if(mount%2==1) movemotor3(1); //left temp=p2in&bit0; if(p2in&bit0==bit0) //right if(mount%2==0) bmovemotor1(1); if(mount%2==1) bmovemotor3(1); temp=p2in&bit2; if(temp==bit2) //down if(mount%2==0) movemotor2(1); if(mount%2==1) movemotor4(1); temp=p7in&bit7; if(temp==bit7) //up if(mount%2==0) bmovemotor2(1); if(mount%2==1) bmovemotor4(1); P7DIR = BIT7; P7OUT &= ~BIT7; P7DIR=BIT0+BIT5; P2DIR = BIT6; P2OUT &= ~BIT6; P2DIR = 0; P7DIR=BIT0+BIT5; P7OUT&=~BIT0; P7OUT&=~BIT5; void main(void) WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P6DIR=0; P7DIR =0; P6SEL = 0xFF; // Enable A/D channel inputs ADC12CTL0 = ADC12ON + MSC + SHT0_2; // Turn on ADC12, set sampling //time ADC12CTL1 = SHP + CONSEQ_1; // Use sampling timer, single sequ ADC12MCTL0 = INCH_0; // ref+=avcc, channel = A0 35

36 ADC12MCTL1 = INCH_1; // ref+=avcc, channel = A1 ADC12MCTL3 = INCH_3; // ref+=avcc, channel = A3 ADC12MCTL4 = INCH_4; // ref+=avcc, channel = A4- ADC12MCTL5 = INCH_5; ADC12MCTL6 = INCH_6; ADC12MCTL7 = INCH_7+ EOS; // ref+=avcc, channel = A5, //end seq ADC12IE = 0x08; // Enable ADC12IFG.3 ADC12CTL0 = ENC; // Enable conversions // enable_interrupt(); // Enable interrupts FLL_CTL0 = XCAP14PF; do IFG1 &= ~OFIFG; for (i = 0x47FF; i > 0; i--); while ((IFG1 & OFIFG)); // Configure load caps // Clear OSCFault flag // Time for flag to set // OSCFault flag still set? // --- Initialize serial port (USCI) for baud 8-N-1 P2SEL = 0x30; // P2.5,4 = USCI_A0 RXD/TXD UCA0CTL1 = UCSSEL_1; // CLK = ACLK UCA0CTL1 = UCSSEL_2; // CLK = SMCLK UCA0BR0 = 0x37; // /19200 = = 0x37 UCA0BR1 = 0x00; // UCA0MCTL = 0x0C; // --- Initialize Basic Timer Module for periodic interrupts // Useful only for the beginning! BTCTL = BT_ADLY_32; // Interrupt every 32 mseconds BTCNT1=0x00; BTCNT2=0x00; // --- Main program starts here UCA0CTL1 &= ~UCSWRST; IE2 = UCA0RXIE; IE2 = BTIE; a=0; b=0; d=0; e=0; x=0; z=0; difference = 50; counter = 0; for(j=0;j<101;j++) read0[j] = 0; read1[j] = 0; read2[j] = 0; read3[j] = 0; // **Initialize USCI state machine** // Enable USCI_A0 RX interrupt // Enable Basic Timer interrupt sum[0] = 0; sum[1] = 0; sum[2] = 0; sum[3] = 0; compare[0] = 2047; compare[1] = 2047; compare[2] = 2047; compare[3] = 2047; 36

37 ADC12CTL0 = ADC12SC; // Start conversion while(1) // --- Go to sleep, waiting for interrupts _BIS_SR(LPM0_bits + GIE); printf("???\n"); // Enter LPM0, interrupts enabled // --- Interrupt routines --- #pragma vector=adc12_vector interrupt void ADC12ISR (void) if (z == 0) //delay(1000); z++; for (z=1;z<52;z++) read0[z] = ADC12MEM5; read1[z] = ADC12MEM0; read2[z] = ADC12MEM4; read3[z] = ADC12MEM1; read4[z] = ADC12MEM3; read5[z] = ADC12MEM6; //diode1 //diode2 ADC12CTL0 = ADC12SC; if (z == 1) sum[0] = read0[0]; sum[1] = read1[0]; sum[2] = read2[0]; sum[3] = read3[0]; sum[4] = read4[0]; sum[5] = read5[0]; else if (z < 51) sum[0] = sum[0] + read0[z]; sum[1] = sum[1] + read1[z]; sum[2] = sum[2] + read2[z]; sum[3] = sum[3] + read3[z]; sum[4] = sum[4] + read4[z]; sum[5] = sum[5] + read5[z]; else compare[0] = (sum[0]/50); compare[1] = (sum[1]/50); compare[2] = (sum[2]/50); compare[3] = (sum[3]/50); compare[4] = (sum[4]/50); compare[5] = (sum[5]/50); z = 1000; 37

38 nothing=0; for(j=0;j<101;j++) read0[j] = ADC12MEM5; read1[j] = ADC12MEM0; read2[j] = ADC12MEM4; read3[j] = ADC12MEM1; read4[j] = ADC12MEM3; read5[j] = ADC12MEM6; ADC12CTL0 = ADC12SC; // Start conversion if (j == 0) sum[0] = read0[0]; sum[1] = read1[0]; sum[2] = read2[0]; sum[3] = read3[0]; sum[4] = read4[0]; sum[5] = read5[0]; else if (j < 100) sum[0] = sum[0] + read0[j]; sum[1] = sum[1] + read1[j]; sum[2] = sum[2] + read2[j]; sum[3] = sum[3] + read3[j]; sum[4] = sum[4] + read4[j]; sum[5] = sum[5] + read5[j]; else Results[0] = (sum[0]/101); Results[1] = (sum[1]/101); Results[2] = (sum[2]/101); Results[3] = (sum[3]/101); Results[4] = (sum[4]/101); Results[5] = (sum[5]/101); no_operation(); ADC12CTL0 = ADC12SC; // Set breakpoint here // Start conversion if(results[0]>compare[0]+5) if(mm4>-1000) movemotor4(1); if(results[0]<compare[0]-5) if(mm4<1600) bmovemotor4(1); if(results[1]>compare[1]+5) if(mm3<850) bmovemotor3(1); if(results[1]<compare[1]-5) if(mm3>-850) movemotor3(1); 38

39 if(results[3]>compare[3]+5) if(mm2>-1600) movemotor2(1); if(results[3]<compare[3]-5) if(mm2<1600) bmovemotor2(1); if(results[4]>compare[4]+5) if(mm1>-1200) movemotor1(1); if(results[4]<compare[4]-5) if(mm1<1200) bmovemotor1(1); int temp4 = P7IN&BIT4; if(temp4!= BIT4) manual(); 39

40 Appendix E - New Code /******************************************************************************/ /* Michael M. Rader (michaelmrader@gmail.com) */ /* Control System for Auto-Alignment of Laser Mirrors */ /* This program includes manual and auto-alignment routines for */ /* Alignment of laser alignment mirrors for the EUV labs */ /******************************************************************************/ /**************/ /*Header Files*/ /**************/ #include "msp430xg46x.h" #include <intrinsics.h> #include <stdio.h> #include <string.h> //Includes definitions for MSP microcontroller /***********************/ /*Variable Declarations*/ /***********************/ int i1=0; int ib1=0; int i2=0; int ib2=0; int i3=0; int ib3=0; int i4=0; int ib4=0; int mm1=0; int mm2=0; int mm3=0; int mm4=0; int size=0; int tempx=0; int mount=0; unsigned int j, z; // Character position index for string transmission //volatile unsigned int Results[6], i; volatile unsigned int i; unsigned long int Results[6],read0[101],read1[101],read2[101],read3[101],read4[101],read5[101],sum[6],compare[6]; float number = 0.0; /*********************/ /*FUNCTION PROTOTYPES*/ /*********************/ void delay(int x); void movemotor1(int x); void bmovemotor1(int x); void movemotor2(int x); void bmovemotor2(int x); void movemotor3(int x); void bmovemotor3(int x); void movemotor4(int x); void bmovemotor4(int x); void changestep(); void manual(); /***************/ /*Main Function*/ /***************/ void main(void) WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P6DIR = 0; // All channels of Port 6 are input P7DIR = 0; // All channels of Port 7 are input P6SEL = 0xFF; // Enable A/D channel inputs on all channels on port 6 ADC12CTL0 = ADC12ON + MSC + SHT0_2; // Turn on ADC12, set sampling time (16 cycles, 3.2 us) ADC12CTL1 = SHP + CONSEQ_1; // Use sampling timer, single sequence of all channels 40

41 ADC12MCTL0 = INCH_0; // ref+=avcc, channel = A0 ADC12MCTL1 = INCH_1; // ref+=avcc, channel = A1 ADC12MCTL2 = INCH_2; // ref+=avcc, channel = A2 ADC12MCTL3 = INCH_3; // ref+=avcc, channel = A3 ADC12MCTL4 = INCH_4; // ref+=avcc, channel = A4 ADC12MCTL5 = INCH_5; // ref+=avcc, channel = A6 ADC12MCTL6 = INCH_6; // ref+=avcc, channel = A7 ADC12MCTL7 = INCH_7+ EOS; // ref+=avcc, channel = A8, end seq ADC12IE = 0x08; // Enable ADC12IFG.3 (IFG refers to Interrupt Flag) ADC12CTL0 = ENC; // Enable conversions FLL_CTL0 = XCAP14PF; // Configure load caps to dampen parasitic capacitance /*The following sequence checks to see if the quartz oscillator has failed*/ do IFG1 &= ~OFIFG; // Clear OSCFault flag delay(19); // Delay for 19 us while flag sets while ((IFG1 & OFIFG)); // Checks if OSCFault flag still set /* Initialize serial port (USCI) for baud 8-N-1 */ P2SEL = 0x30; // P2.5,4 = USCI_A0 RXD/TXD UCA0CTL1 = UCSSEL_1; // CLK = ACLK UCA0CTL1 = UCSSEL_2; // CLK = SMCLK UCA0BR0 = 0x37; // /19200 = = 0x37 UCA0BR1 = 0x00; // UCA0MCTL = 0x0C; // /* Initialize Basic Timer Module for periodic interrupts */ /* Useful only for the beginning! */ BTCTL = BT_ADLY_32; // Interrupt every 32 mseconds BTCNT1=0x00; BTCNT2=0x00; // --- Main program starts here UCA0CTL1 &= ~UCSWRST; IE2 = UCA0RXIE; IE2 = BTIE; // Initialize USCI state machine // Enable USCI_A0 RX interrupt // Enable Basic Timer interrupt z=0; //Simple dummy variable for interrupt routine /*The below routine zeros out read matrices*/ for(i=0;i<101;i++) read0[i] = 0; read1[i] = 0; read2[i] = 0; read3[i] = 0; /*Set sum matrices to 0*/ sum[0] = 0; sum[1] = 0; sum[2] = 0; sum[3] = 0; /*Set compare matrices to constant 2047*/ compare[0] = 2047; compare[1] = 2047; compare[2] = 2047; compare[3] = 2047; ADC12CTL0 = ADC12SC; // Start conversion while(1) //Enter infinite loop while waiting for interrupt _BIS_SR(LPM0_bits + GIE); // Enter Low Power Mode and enable interrupts printf("???\n"); 41

42 /*******************/ /*INTERRUPT ROUTINE*/ /*******************/ #pragma vector=adc12_vector interrupt void ADC12ISR (void) if (z == 0) //This loop is only accessed once z++; for (z=1;z<52;z++) read0[z] = ADC12MEM5; //diode1 read1[z] = ADC12MEM0; read2[z] = ADC12MEM4; read3[z] = ADC12MEM1; //diode2 read4[z] = ADC12MEM3; read5[z] = ADC12MEM6; ADC12CTL0 = ADC12SC; if (z == 1) sum[0] = read0[0]; sum[1] = read1[0]; sum[2] = read2[0]; sum[3] = read3[0]; sum[4] = read4[0]; sum[5] = read5[0]; else if (z < 51) sum[0] = sum[0] + read0[z]; sum[1] = sum[1] + read1[z]; sum[2] = sum[2] + read2[z]; sum[3] = sum[3] + read3[z]; sum[4] = sum[4] + read4[z]; sum[5] = sum[5] + read5[z]; else compare[0] = (sum[0]/50); compare[1] = (sum[1]/50); compare[2] = (sum[2]/50); compare[3] = (sum[3]/50); compare[4] = (sum[4]/50); compare[5] = (sum[5]/50); z = 1000; for(j=0;j<101;j++) read0[j] = ADC12MEM5; read1[j] = ADC12MEM0; read2[j] = ADC12MEM4; read3[j] = ADC12MEM1; read4[j] = ADC12MEM3; read5[j] = ADC12MEM6; ADC12CTL0 = ADC12SC; // Start conversion if (j == 0) 42

43 sum[0] = read0[0]; sum[2] = read2[0]; sum[3] = read3[0]; sum[4] = read4[0]; sum[5] = read5[0]; else if (j < 100) sum[0] = sum[0] + read0[j]; sum[1] = sum[1] + read1[j]; sum[2] = sum[2] + read2[j]; sum[3] = sum[3] + read3[j]; sum[4] = sum[4] + read4[j]; sum[5] = sum[5] + read5[j]; else Results[0] = (sum[0]/101); Results[1] = (sum[1]/101); Results[2] = (sum[2]/101); Results[3] = (sum[3]/101); Results[4] = (sum[4]/101); Results[5] = (sum[5]/101); no_operation(); ADC12CTL0 = ADC12SC; // SET BREAKPOINT HERE // Start conversion if(results[0]>compare[0]+5) if(mm4>-1000) movemotor4(1); if(results[0]<compare[0]-5) if(mm4<1600) bmovemotor4(1); if(results[1]>compare[1]+5) if(mm3<850) bmovemotor3(1); if(results[1]<compare[1]-5) if(mm3>-850) movemotor3(1); if(results[3]>compare[3]+5) if(mm2>-1600) movemotor2(1); if(results[3]<compare[3]-5) 43

44 if(mm2<1600) bmovemotor2(1); if(results[4]>compare[4]+5) if(mm1>-1200) movemotor1(1); if(results[4]<compare[4]-5) if(mm1<1200) bmovemotor1(1); int temp4 = P7IN&BIT4; if(temp4!= BIT4) // should!= be =??? manual(); /**********************/ /*FUNCTION DEFINITIONS*/ /**********************/ /**********************************************************/ /*DELAY FUNCTION */ /*INPUTS: integer x */ /*Creates an arbitrary period of delay given by integer x */ /*125 ns instruction cycle time */ /*Delay is given roughly by function 125*(x+1)[us] */ /**********************************************************/ void delay(int x) for(int i=0;i<1000;i++) for(int j=0; j<x; j++) i++; /**********************************************************/ /*MOVE MOTOR FUNCTIONS */ /*INPUTS: integer x */ /*Each input will step the motor by 1 linear step */ /*1 linear step is about 1.5 um */ /**********************************************************/ void bmovemotor2(int x) mm2++; //Counter variable to keep motor within a maximum range P2DIR = BIT4+BIT6; // P3OUT = BIT4; if(i1%2==0) P3OUT = BIT6; if(i1%2==1) P3OUT &= ~BIT6; P3OUT &= ~BIT6; 44

45 i1++; if(i1==10000) i1=0; void movemotor2(int x) mm2--; //printf("2"); P3DIR = BIT4+BIT6; P3OUT &= ~BIT4; if(ib1%2==0) P3OUT = BIT6; if(ib1%2==1) P3OUT &= ~BIT6; P3OUT &= ~BIT6; //delay(10); ib1++; if(ib1==10000) ib1=0; void movemotor1(int x) mm1--; P4DIR = BIT2; P2DIR = BIT3; P4OUT = BIT2; if(i2%2==0) P2OUT = BIT3; if(i2%2==1) P2OUT &= ~BIT3; P2OUT &= ~BIT3; //delay(10); i2++; if(i2==10000) i2=0; void bmovemotor1(int x) mm1++; P4DIR = BIT2; P2DIR = BIT3; P4OUT &= ~BIT2; if(ib2%2==0) P2OUT = BIT3; if(ib2%2==1) P2OUT &= ~BIT3; P2OUT &= ~BIT3; //delay(10); ib2++; if(ib2==10000) ib2=0; void movemotor3(int x) mm3--; 45

46 P2DIR = BIT7; P4DIR = BIT6; P2OUT = BIT7; if(i3%2==0) P4OUT = BIT6; if(i3%2==1) P4OUT &= ~BIT6; P4OUT &= ~BIT6; //delay(10); i3++; if(i3==10000) i3=0; void bmovemotor3(int x) mm3++; P2DIR = BIT7; P4DIR = BIT6; P2OUT &= ~BIT7; if(ib3%2==0) P4OUT = BIT6; if(ib3%2==1) P4OUT &= ~BIT6; P4OUT &= ~BIT6; //delay(10); ib3++; if(ib3==10000) ib3=0; void movemotor4(int x) mm4--; P5DIR = BIT0; P2DIR = BIT1; P5OUT = BIT0; if(i4%2==0) P2OUT = BIT1; if(i4%2==1) P2OUT &= ~BIT1; P2OUT &= ~BIT1; // i4++; if(i4==10000) i4=0; void bmovemotor4(int x) //probably need a forward and a backward function mm4++; P5DIR = BIT0; P2DIR = BIT1; P5OUT &= ~BIT0; if(ib4%2==0) P2OUT = BIT1; if(ib4%2==1) P2OUT &= ~BIT1; P2OUT &= ~BIT1; 46

47 // ib4++; if(ib4==10000) ib4=0; void changestep() //button is P10.7, MS1 is P3.7, MS2 is P4.7 //printf("button"); P4DIR = BIT7; P3DIR = BIT7; size++; if(size%4==0) //full P4OUT &= ~BIT7; P3OUT &= ~BIT7; if(size%4==1) // 1/2 P4OUT &= ~BIT7; P3OUT = BIT7; if(size%4==2) // 1/4 P3OUT &= ~BIT7; P4OUT = BIT7; if(size%4==3) // 1/16 P4OUT = BIT7; P3OUT = BIT7; for(int k=0; k<10;k++) delay(5000); void manual() P4DIR =BIT7; P3DIR =BIT7; //printf("i am awesome\n"); while((p7in&bit4)!=bit4) //printf("manloop\n"); int tempx = P10IN; //printf("%d\n", tempx); if((tempx & BIT7) ==BIT7) changestep(); volatile int temp=0; volatile int temp2=0; P5DIR=0; P4DIR =BIT7; P10DIR=0; P3DIR =BIT7; P2DIR=0; P7DIR=0; P7DIR =BIT0+BIT5; temp=p7in&bit6; //printf("%d\n", temp); if(temp==bit6) // printf("%d\n", temp); mount= mount+1; for(int i=1; i<100;i++) delay(1000); if(mount%2==0) P7OUT =BIT0; //printf("0\n"); 47

48 P7OUT &= ~BIT5; if(mount%2==1) //printf("1\n"); P7OUT =BIT5; P7OUT &= ~BIT0; temp=p2in&bit6; if(temp==bit6) //left //printf("left\n"); if(mount%2==0) movemotor1(1); if(mount%2==1) movemotor3(1); temp=p2in&bit0; if(p2in&bit0==bit0) //right //printf("right\n"); if(mount%2==0) bmovemotor1(1); if(mount%2==1) bmovemotor3(1); temp=p2in&bit2; if(temp==bit2) //down // printf("down\n"); if(mount%2==0) movemotor2(1); if(mount%2==1) movemotor4(1); temp=p7in&bit7; if(temp==bit7) //up //printf("up\n"); if(mount%2==0) bmovemotor2(1); if(mount%2==1) bmovemotor4(1); P7DIR = BIT7; P7OUT &= ~BIT7; P7DIR=BIT0+BIT5; P2DIR = BIT6; P2OUT &= ~BIT6; P2DIR = 0; P7DIR=BIT0+BIT5; P7OUT&=~BIT0; P7OUT&=~BIT5; 48

49 Appendix F - Parts List for Wireless PCB C1.22uf ND C2.1uf ND C3.1uf ND C4.1uf ND C5.1uf ND C6.1uf ND C7.1uf ND C8.1uf ND C9.1uf ND C10.1uf ND C11.1uf ND C12.1uf ND C13 10uf ND D1 LED D2 LED D3 LED ND D4 LED ND D F1 J1 J2 J3 J4 J5 J6 J7 J8 J10 J11 J12 Q F1451CT-ND WM4200 WM4204 WM4204 WM4200 WM4204 WM4204 WM4204 WM4621 WM4200 WM4204 WM4200 LM317 R1 100 P100GCT-ND R2 698 P698HCT-ND R3 499 P499HCT-ND R4 130 P130GCT-ND R5 1k P1.00KHCT-ND R6 1k P1.00KHCT-ND R7 100k P100KHCT-ND R8 1k P1.00KHCT-ND R9 1k P1.00KHCT-ND R10 100k P100KHCT-ND R11 1k P1.00KHCT-ND R12 1k P1.00KHCT-ND 49

50 R13 100k P100KHCT-ND R14 1k P1.00KHCT-ND R15 1k P1.00KHCT-ND R16 100k P100KHCT-ND R17 1k P1.00KHCT-ND R18 1k P1.00KHCT-ND R19 100k P100KHCT-ND R20 1k P1.00KHCT-ND R21 1k P1.00KHCT-ND R22 100k P100KHCT-ND R23 100k P100KHCT-ND R P220GCT-ND R P130GCT-ND R P130GCT-ND R27 10 P10GCT-ND SW1 SW2 CKN1047-ND CKN1047-ND U LM340 LM340T-5.0-ND U3 dc-dc conv ND U4 Decoder ND U5 Receiver RXM-315-LR 50

51 Appendix G - Parts List for Motor Driver PCB Part Value Device Package Library Sheet C1 0.1uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C10 0.1uF CAP SparkFun 1 C11 0.1uF CAP SparkFun 1 C12 0.1uF CAP SparkFun 1 C13.33uF CAP_POL1206 EIA3216 SparkFun 1 C uF CAP SparkFun 1 C19 0.1uF CAP SparkFun 1 C20 0.1uF CAP SparkFun 1 C21 0.1uF CAP SparkFun 1 C22 0.1uF CAP SparkFun 1 C23 0.1uF CAP SparkFun 1 C24 0.1uF CAP SparkFun 1 C25 0.1uF CAP SparkFun 1 C26 0.1uF CAP SparkFun 1 C27 0.1uF CAP SparkFun 1 C28 0.1uF CAP SparkFun 1 C29 0.1uF CAP SparkFun 1 C30 0.1uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C uF CAP SparkFun 1 C45 100uF CAP_POLG PANASONIC_G SparkFun 1 C46 100uF CAP_POLG PANASONIC_G SparkFun 1 C47 100uF CAP_POLG PANASONIC_G SparkFun 1 C48 100uF CAP_POLG PANASONIC_G SparkFun 1 Part Value Device Package Library Sheet 51

CPE/EE 323 Introduction to Embedded Computer Systems Homework V

CPE/EE 323 Introduction to Embedded Computer Systems Homework V CPE/EE 323 Introduction to Embedded Computer Systems Homework V 1(15) 2(15) 3(25) 4(25) 5(20) Total Problem #1 (15 points) Power, Low power systems A sensor platform features a microcontroller, a sensor,

More information

2.996/6.971 Biomedical Devices Design Laboratory Lecture 6: Microprocessors II

2.996/6.971 Biomedical Devices Design Laboratory Lecture 6: Microprocessors II 2.996/6.971 Biomedical Devices Design Laboratory Lecture 6: Microprocessors II Instructor: Dr. Hong Ma Oct. 1, 2007 Structure of MSP430 Program 1. Declarations 2. main() 1. Watch-dog timer servicing 2.

More information

CPE 325: Embedded Systems Laboratory Laboratory #11 Tutorial Analog-to-Digital Converter and Digital-to-Analog Converter

CPE 325: Embedded Systems Laboratory Laboratory #11 Tutorial Analog-to-Digital Converter and Digital-to-Analog Converter CPE 325: Embedded Systems Laboratory Laboratory #11 Tutorial Analog-to-Digital Converter and Digital-to-Analog Converter Aleksandar Milenković Email: milenka@uah.edu Web: http://www.ece.uah.edu/~milenka

More information

Using peripherals on the MSP430 (if time)

Using peripherals on the MSP430 (if time) Today's Plan: Announcements Review Activities 1&2 Programming in C Using peripherals on the MSP430 (if time) Activity 3 Announcements: Midterm coming on Feb 9. Will need to write simple programs in C and/or

More information

ECE 492 WINTER 2015 GROUP 2. Texas Instruments MSP430-FR Bit ADC Setup Guide

ECE 492 WINTER 2015 GROUP 2. Texas Instruments MSP430-FR Bit ADC Setup Guide APPLICATION NOTE MIKE PAPPAS ECE 492 WINTER 2015 GROUP 2 Texas Instruments MSP430-FR5969 12-Bit ADC Setup Guide March 2015 Table of Contents Preface... 3 Pin Assignments... 4 Configuring the ADC... 4 Sampling

More information

Design Document. May Logging DC Wattmeter. Team Member: Advisor : Ailing Mei. Collin Christy. Andrew Kom. Client: Chongli Cai

Design Document. May Logging DC Wattmeter. Team Member: Advisor : Ailing Mei. Collin Christy. Andrew Kom. Client: Chongli Cai Design Document May13-06 Logging DC Wattmeter Team Member: Ailing Mei Andrew Kom Chongli Cai David Hoffman Advisor : Collin Christy Client: Garmin International Qiaoya Cui 0 Table of Contents EXECUTIVE

More information

Name: Clint Furrer Project Number: TI003 Project Description: Safety Walking Lights. Description:

Name: Clint Furrer Project Number: TI003 Project Description: Safety Walking Lights. Description: Description: This project addresses the concern and problem of pedestrians walking with automotive traffic. I walk to and from a bus stop every morning and evening for work. There is usually low light

More information

ECGR 4101/5101, Fall 2016: Lab 1 First Embedded Systems Project Learning Objectives:

ECGR 4101/5101, Fall 2016: Lab 1 First Embedded Systems Project Learning Objectives: ECGR 4101/5101, Fall 2016: Lab 1 First Embedded Systems Project Learning Objectives: This lab will introduce basic embedded systems programming concepts by familiarizing the user with an embedded programming

More information

Analog Peripherals. Introduction. Objectives

Analog Peripherals. Introduction. Objectives Analog Peripherals Introduction In this section we ll take a look at the MSP430 analog peripherals. It s not possible in this limited amount of time to give you a complete overview of the possible analog

More information

MSP430. More on MSP430

MSP430. More on MSP430 MSP430 More on MSP430 CodeComposer TI recently launched Code Composer Essentials v3. This IDE s latest version (version 3) supports all available MSP430 devices. The new features of CCE v3 include: - Free

More information

University of Texas at El Paso Electrical and Computer Engineering Department. EE 3176 Laboratory for Microprocessors I.

University of Texas at El Paso Electrical and Computer Engineering Department. EE 3176 Laboratory for Microprocessors I. University of Texas at El Paso Electrical and Computer Engineering Department EE 3176 Laboratory for Microprocessors I Fall 2016 LAB 06 Analog to Digital Conversion Goals: Bonus: Pre Lab Questions: Display

More information

CPE 323: MSP430 Timers

CPE 323: MSP430 Timers CPE 323: MSP430 Timers Aleksandar Milenkovic Electrical and Computer Engineering The University of Alabama in Huntsville milenka@ece.uah.edu http://www.ece.uah.edu/~milenka Outline Watchdog Timer TimerA

More information

University of Texas at El Paso Electrical and Computer Engineering Department. EE 3176 Laboratory for Microprocessors I.

University of Texas at El Paso Electrical and Computer Engineering Department. EE 3176 Laboratory for Microprocessors I. University of Texas at El Paso Electrical and Computer Engineering Department EE 3176 Laboratory for Microprocessors I Fall 2016 LAB 08 UART Communication Goals: Learn about UART Communication and the

More information

ECE 492 WINTER 2015 GROUP 2. Texas Instruments MSP430-FR Bit ADC Setup Guide

ECE 492 WINTER 2015 GROUP 2. Texas Instruments MSP430-FR Bit ADC Setup Guide APPLICATION NOTE MIKE PAPPAS ECE 492 WINTER 2015 GROUP 2 Texas Instruments MSP430-FR5969 12-Bit ADC Setup Guide March 2015 Table of Contents Preface... 3 Pin Assignments... 4 Configuring the ADC... 4 Sampling

More information

EEL 4924 Electrical Engineering Design (Senior Design) Team Baudiophile. Wireless Headphones

EEL 4924 Electrical Engineering Design (Senior Design) Team Baudiophile. Wireless Headphones EEL 4924 Electrical Engineering Design (Senior Design) Final Design Report 25 April 2012 Team Baudiophile Wireless Headphones Team Members: Name: Stephen Brewer Name: Eli Chen Project Abstract Our project

More information

C Language Programming through the ADC and the MSP430 (ESCAPE)

C Language Programming through the ADC and the MSP430 (ESCAPE) OpenStax-CNX module: m46087 1 C Language Programming through the ADC and the MSP430 (ESCAPE) Matthew Johnson Based on C Language Programming through the ADC and the MSP430 by Matthew Johnson This work

More information

ECE2049: Embedded Computing in Engineering Design A Term Fall 2017 Lecture #16: Interrupts and Event Driven Code

ECE2049: Embedded Computing in Engineering Design A Term Fall 2017 Lecture #16: Interrupts and Event Driven Code ECE2049: Embedded Computing in Engineering Design A Term Fall 2017 Lecture #16: Interrupts and Event Driven Code Reading for Today: Example code Reading for Next Class: Review all since exam 1 HW #4 (on

More information

Copyright 2015 by Stephen A. Zajac & Gregory M. Wierzba. All rights reserved..spring 2015.

Copyright 2015 by Stephen A. Zajac & Gregory M. Wierzba. All rights reserved..spring 2015. Copyright 2015 by Stephen A. Zajac & Gregory M. Wierzba. All rights reserved..spring 2015. Copyright 2015 by Stephen A. Zajac & Gregory M. Wierzba. All rights reserved..spring 2015. Copyright 2015 by Stephen

More information

CPE 323 Introduction to Embedded Computer Systems: ADC12 and DAC12. Instructor: Dr Aleksandar Milenkovic Lecture Notes

CPE 323 Introduction to Embedded Computer Systems: ADC12 and DAC12. Instructor: Dr Aleksandar Milenkovic Lecture Notes CPE 323 Introduction to Embedded Computer Systems: ADC12 and DAC12 Instructor: Dr Aleksandar Milenkovic Lecture Notes Outline MSP430: System Architecture ADC12 Module DAC12 Module CPE 323 2 ADC12 Introduction

More information

Getting Started with the Texas Instruments ez430

Getting Started with the Texas Instruments ez430 1 of 6 03.01.2009 01:33 HOME Running Your Code>> Getting Started with the Texas Instruments ez430 Working with the Workbench Software Step 1: Each program needs an associated project. The project includes

More information

// Conditions for 9600/4=2400 Baud SW UART, SMCLK = 1MHz #define Bitime_5 0x05*4 // ~ 0.5 bit length + small adjustment #define Bitime 13*4//0x0D

// Conditions for 9600/4=2400 Baud SW UART, SMCLK = 1MHz #define Bitime_5 0x05*4 // ~ 0.5 bit length + small adjustment #define Bitime 13*4//0x0D /****************************************************************************** * * * 1. Device starts up in LPM3 + blinking LED to indicate device is alive * + Upon first button press, device transitions

More information

ECE2049 Homework #2 The MSP430 Architecture & Basic Digital IO (DUE Friday 9/8/17 at 4 pm in class)

ECE2049 Homework #2 The MSP430 Architecture & Basic Digital IO (DUE Friday 9/8/17 at 4 pm in class) ECE2049 Homework #2 The MSP430 Architecture & Basic Digital IO (DUE Friday 9/8/17 at 4 pm in class) Your homework should be neat and professional looking. You will loose points if your HW is not properly

More information

CPE 323 Introduction to Embedded Computer Systems: MSP430 System Architecture An Overview

CPE 323 Introduction to Embedded Computer Systems: MSP430 System Architecture An Overview CPE 323 Introduction to Embedded Computer Systems: MSP430 System Architecture An Overview Aleksandar Milenkovic Electrical and Computer Engineering The University of Alabama in Huntsville milenka@ece.uah.edu

More information

Interrupts, Low Power Modes

Interrupts, Low Power Modes Interrupts, Low Power Modes Registers Status Register Interrupts (Chapter 6 in text) A computer has 2 basic ways to react to inputs: 1) polling: The processor regularly looks at the input and reacts as

More information

CPE 325: Embedded Systems Laboratory Laboratory #7 Tutorial MSP430 Timers, Watchdog Timer, Timers A and B

CPE 325: Embedded Systems Laboratory Laboratory #7 Tutorial MSP430 Timers, Watchdog Timer, Timers A and B CPE 325: Embedded Systems Laboratory Laboratory #7 Tutorial MSP430 Timers, Watchdog Timer, Timers A and B Aleksandar Milenković Email: milenka@uah.edu Web: http://www.ece.uah.edu/~milenka Objective This

More information

Texas Instruments Mixed Signal Processor Tutorial Abstract

Texas Instruments Mixed Signal Processor Tutorial Abstract Texas Instruments Mixed Signal Processor Tutorial Abstract This tutorial goes through the process of writing a program that uses buttons to manipulate LEDs. One LED will be hard connected to the output

More information

CPE 323: MSP430 Serial Communication

CPE 323: MSP430 Serial Communication CPE 323: MSP430 Serial Communication Aleksandar Milenkovic Electrical and Computer Engineering The University of Alabama in Huntsville milenka@ece.uah.edu http://www.ece.uah.edu/~milenka Outline Introduction

More information

ECE2049 Homework #4 Analog-to-Digital Conversion and the ADC12 (Due Thursday 2/15/2018 to box outside AK-011 by 9 am)

ECE2049 Homework #4 Analog-to-Digital Conversion and the ADC12 (Due Thursday 2/15/2018 to box outside AK-011 by 9 am) ECE2049 Homework #4 Analog-to-Digital Conversion and the ADC12 (Due Thursday 2/15/2018 to box outside AK-011 by 9 am) PLEASE (NEATLY) SHOW ALL WORK! Comment all code well. Do not make the grader guess

More information

Lab 4 Interrupts ReadMeFirst

Lab 4 Interrupts ReadMeFirst Lab 4 Interrupts ReadMeFirst Lab Folder Content 1) ReadMeFirst 2) Interrupt Vector Table 3) Pin out Summary Objectives Understand how interrupts work Learn to program Interrupt Service Routines in C Language

More information

Timers and Clocks CS4101 嵌入式系統概論. Prof. Chung-Ta King. Department of Computer Science National Tsing Hua University, Taiwan

Timers and Clocks CS4101 嵌入式系統概論. Prof. Chung-Ta King. Department of Computer Science National Tsing Hua University, Taiwan CS4101 嵌入式系統概論 Timers and Clocks Prof. Chung-Ta King Department of Computer Science, Taiwan Materials from MSP430 Microcontroller Basics, John H. Davies, Newnes, 2008 Recall the Container Thermometer Container

More information

ECE2049: Embedded Computing in Engineering Design C Term Spring 2018 Lecture #15: More ADC Examples

ECE2049: Embedded Computing in Engineering Design C Term Spring 2018 Lecture #15: More ADC Examples ECE2049: Embedded Computing in Engineering Design C Term Spring 2018 Lecture #15: More ADC Examples Reading for Today: TI example code Reading for Next Class: Users Guide 6.2, Davies Ch 6.6-6.9 HW #4 (on

More information

Lab 1: I/O, timers, interrupts on the ez430-rf2500

Lab 1: I/O, timers, interrupts on the ez430-rf2500 Lab 1: I/O, timers, interrupts on the ez430-rf2500 UC Berkeley - EE 290Q Thomas Watteyne January 25, 2010 1 The ez430-rf2500 and its Components 1.1 Crash Course on the MSP430f2274 The heart of this platform

More information

Fall. Accelerometer RGB LED control Vishal Shah Rebel Sequeira Pratiksha Patil Pranali Dhuru Chris Blackden. George Mason University

Fall. Accelerometer RGB LED control Vishal Shah Rebel Sequeira Pratiksha Patil Pranali Dhuru Chris Blackden. George Mason University Fall 13 Accelerometer RGB LED control Vishal Shah Rebel Sequeira Pratiksha Patil Pranali Dhuru Chris Blackden George Mason University Introduction The ECE 511 course gave us the opportunity to team up

More information

Lab 4: Interrupt. CS4101 Introduction to Embedded Systems. Prof. Chung-Ta King. Department of Computer Science National Tsing Hua University, Taiwan

Lab 4: Interrupt. CS4101 Introduction to Embedded Systems. Prof. Chung-Ta King. Department of Computer Science National Tsing Hua University, Taiwan CS4101 Introduction to Embedded Systems Lab 4: Interrupt Prof. Chung-Ta King Department of Computer Science, Taiwan Introduction In this lab, we will learn interrupts of MSP430 Handling interrupts in MSP430

More information

Lecture 5: MSP430 Interrupt

Lecture 5: MSP430 Interrupt ECE342 Intro. to Embedded Systems Lecture 5: MSP430 Interrupt Ying Tang Electrical and Computer Engineering Rowan University 1 How A Computer React to Inputs? Polling: the processor regularly looks at

More information

Review Activity 1 CALL and RET commands in assembler

Review Activity 1 CALL and RET commands in assembler Today's Plan: Announcements Review Activity 1 CALL and RET commands in assembler Lecture test Programming in C continue Announcements: Projects: should be starting to think about. You will need to provide

More information

Create and Add the Source File

Create and Add the Source File IAR Kickstart Procedure Create and Add the Source File 8. Create the Source File From the IAR Embedded Workbench menu bar, select File New File. In the untitled editor window that appears, type the following

More information

volatile int results[5]; // variables para la interrupcion del acelerometro //Funciones del acelerometro para mandar y recibir información

volatile int results[5]; // variables para la interrupcion del acelerometro //Funciones del acelerometro para mandar y recibir información Anexo A. Código de programación #include #include #include "lcdlib.h" // variables para guardar informacion de los canales analógicos volatile int results[5]; // variables para la interrupcion

More information

Accelerometer-Based Musical Instrument

Accelerometer-Based Musical Instrument Accelerometer Music Instrument University of Texas at Austin TI Innovation Challenge 2015 Project Report Team Leader: Team Members: Advising Professor: Video Texas Instruments Mentor (if applicable): Date:12/13/2014

More information

Interfacing CMA3000-D01 to an MSP430 ultra low-power microcontroller

Interfacing CMA3000-D01 to an MSP430 ultra low-power microcontroller Interfacing CMA3000-D01 to an MSP430 ultra low-power microcontroller 1 INTRODUCTION The objective of this document is to show how to set up SPI/I2C communication between VTI Technologies CMA3000-D01 digital

More information

Modules For Six Months Industrial Training On WIRELESS EMBEDDED SYSTEM DESIGN

Modules For Six Months Industrial Training On WIRELESS EMBEDDED SYSTEM DESIGN Modules For Six Months Industrial Training On WIRELESS EMBEDDED SYSTEM DESIGN 1 st Week Introduction to Embedded System a) Tool Hardware tool and Software tool b) Embedded designing, course study c) Board

More information

Beam Stabilizer Add-on Card

Beam Stabilizer Add-on Card Beam Stabilizer Add-on Card User s Manual September 19, 2011 Revision A 1 Introduction: Beam stabilizers are used to correct for dynamic laser beam pointing errors in optical systems. These pointing errors

More information

Why embedded systems?

Why embedded systems? MSP430 Intro Why embedded systems? Big bang-for-the-buck by adding some intelligence to systems. Embedded Systems are ubiquitous. Embedded Systems more common as prices drop, and power decreases. Which

More information

Models 1417 and 1437 User s Manual. High-Speed Photodetector Modules

Models 1417 and 1437 User s Manual. High-Speed Photodetector Modules Models 1417 and 1437 User s Manual High-Speed Photodetector Modules Handling Precautions The detector is sensitive to electrostatic discharges and could be permanently damaged if subjected even to small

More information

UC Berkeley EE40/100 Lab Lab 6: Microcontroller Input/Output B. Boser, etc.

UC Berkeley EE40/100 Lab Lab 6: Microcontroller Input/Output B. Boser, etc. UCBerkeleyEE40/100Lab Lab6:MicrocontrollerInput/Output B.Boser,etc. NAME1: NAME2: SID: SID: Microcontrollersareverymuchslimmeddowncomputers.Nodisks,novirtualmemory,nooperatingsystem.Thinkofthem justlikeothercircuitcomponentswiththeaddedbenefitofbeingconfigurablewithaprogram.becauseofthis,

More information

ECE2049: Embedded Computing in Engineering Design C Term Spring 2019 Lecture #22: MSP430F5529 Operating Mode & the WDT

ECE2049: Embedded Computing in Engineering Design C Term Spring 2019 Lecture #22: MSP430F5529 Operating Mode & the WDT ECE2049: Embedded Computing in Engineering Design C Term Spring 2019 Lecture #22: MSP430F5529 Operating Mode & the WDT Reading for Today: User's Guide 1.4, Ch 16 Reading for Next Class: Review all since

More information

EMBEDDED SYSTEMS COURSE CURRICULUM

EMBEDDED SYSTEMS COURSE CURRICULUM On a Mission to Transform Talent EMBEDDED SYSTEMS COURSE CURRICULUM Table of Contents Module 1: Basic Electronics and PCB Software Overview (Duration: 1 Week)...2 Module 2: Embedded C Programming (Duration:

More information

FAE Summit Interfacing the ADS8361 to the MSP430F449 Low Power Micro Controller

FAE Summit Interfacing the ADS8361 to the MSP430F449 Low Power Micro Controller FAE Summit February 2004 FAE Summit 2004 - Interfacing the ADS8361 to the MSP430F449 Low Power Micro Controller Tom Hendrick High Performance Analog - Data Acquisition Products Group LAB OBJECTIVES This

More information

Rear Distance Detection with Ultrasonic Sensors Project Report

Rear Distance Detection with Ultrasonic Sensors Project Report Rear Distance Detection with Ultrasonic Sensors Project Report 11.29.2017 Group #6 Farnaz Behnia Kimia Zamiri Azar Osaze Shears ECE 511: Microprocessors Fall 2017 1 Table of Contents 1. Abstract 3 2. Motivation

More information

Texas Instruments Microcontroller HOW-TO GUIDE Interfacing Keypad with MSP430F5529

Texas Instruments Microcontroller HOW-TO GUIDE Interfacing Keypad with MSP430F5529 Texas Instruments Microcontroller HOW-TO GUIDE Interfacing Keypad with MSP430F5529 Contents at a Glance PS PRIMER MSP430 kit... 3 Keypad... 4 Interfacing keypad... 4 Interfacing keypad with MSP430F5529...

More information

Phi-panel backpack assembly and keypad options Dr. John Liu 12/16/2012

Phi-panel backpack assembly and keypad options Dr. John Liu 12/16/2012 Phi-panel backpack assembly and keypad options Dr. John Liu 12/16/2012 1. Introduction:... 3 Currently available:... 3 2. Backpack assembly... 4 3. Connecting to a keypad... 6 4. Rotary encoder keypads...

More information

AC : DESIGN OF DATA ACQUISITION SYSTEM FOR COMPUTER ENGINEERING EDUCATION

AC : DESIGN OF DATA ACQUISITION SYSTEM FOR COMPUTER ENGINEERING EDUCATION AC 2007-3083: DESIGN OF DATA ACQUISITION SYSTEM FOR COMPUTER ENGINEERING EDUCATION Yoon Kim, Virginia State University YOON G. KIM is an Assistant Professor of Computer Engineering in the Department of

More information

5xx Active & Low Power Mode Operation

5xx Active & Low Power Mode Operation 5xx Active & Low Power Mode Operation 38 Lab 2: ULP Operation Lab Goals Learn ULP Best Practices Learn & understand how to configure two key modules of the 5xx to achieve ultra-low power operation. Power

More information

ENGR 40M Project 3c: Switch debouncing

ENGR 40M Project 3c: Switch debouncing ENGR 40M Project 3c: Switch debouncing For due dates, see the overview handout 1 Introduction This week, you will build on the previous two labs and program the Arduino to respond to an input from the

More information

MT2 Introduction Embedded Systems. MT2.1 Mechatronic systems

MT2 Introduction Embedded Systems. MT2.1 Mechatronic systems MT2 Introduction Embedded Systems MT2.1 Mechatronic systems Mechatronics is the synergistic integration of mechanical engineering, with electronics and intelligent computer control in the design and manufacturing

More information

Freeduino USB 1.0. Arduino Compatible Development Board Starter Guide. 1. Overview

Freeduino USB 1.0. Arduino Compatible Development Board Starter Guide. 1. Overview Freeduino USB 1.0 Arduino Compatible Development Board Starter Guide 1. Overview 1 Arduino is an open source embedded development platform consisting of a simple development board based on Atmel s AVR

More information

CONTENTS: Program 1 in C:

CONTENTS: Program 1 in C: CONTENTS: 1) Program 1 in C (Blink) 2) Program 2 in C (Interrupt ) 3) ADC example 4) Addressing Modes 5) Selected Assembly instructions 6) ADC10 register descriptions Program 1 in C: /* * PHYS319 Lab3

More information

How-To: Make an RGB combination door lock (Part 1)

How-To: Make an RGB combination door lock (Part 1) How-To: Make an RGB combination door lock (Part 1) Written By: Feitan 2017 www.botsbits.org Page 1 of 14 INTRODUCTION Part 2 can be found here 2017 www.botsbits.org Page 2 of 14 Step 1 How-To: Make an

More information

MSP430FG4618 Programming Reference Revision 3

MSP430FG4618 Programming Reference Revision 3 MSP430FG4618/F2013 Experimenter Board MSP430FG4618 Programming Reference Revision 3 George Mason University 1. CPU Registers The CPU incorporates sixteen 20-bit registers. R0, R1, R2 and R3 have dedicated

More information

Shack Clock kit. U3S Rev 2 PCB 1. Introduction

Shack Clock kit. U3S Rev 2 PCB 1. Introduction Shack Clock kit U3S Rev 2 PCB 1. Introduction Thank you for purchasing the QRP Labs Shack Clock kit. This clock uses the Ultimate3S QRSS/WSPR kit hardware, but a different firmware version. It can be used

More information

Project Plan. Project Plan. May Logging DC Wattmeter. Team Member: Advisor : Ailing Mei. Collin Christy. Andrew Kom. Client: Chongli Cai

Project Plan. Project Plan. May Logging DC Wattmeter. Team Member: Advisor : Ailing Mei. Collin Christy. Andrew Kom. Client: Chongli Cai Project Plan May13-06 Logging DC Wattmeter Team Member: Ailing Mei Andrew Kom Chongli Cai Advisor : Collin Christy Client: Garmin International David Hoffman Qiaoya Cui Table of Contents Need Statement...

More information

VKey Voltage Keypad Hookup Guide

VKey Voltage Keypad Hookup Guide Page 1 of 8 VKey Voltage Keypad Hookup Guide Introduction If you need to add a keypad to your microcontroller project, but don t want to use up a lot of I/O pins to interface with it, the VKey is the solution

More information

WIRELESS EMBEDDED SYSTEM DESIGN

WIRELESS EMBEDDED SYSTEM DESIGN Modules For Six Weeks Industrial Training On WIRELESS EMBEDDED SYSTEM DESIGN 1 st Week 1 st Day Introduction to Embedded System a) Tool Hardware tool and Software tool Introduction b) Embedded designing,

More information

Designing for Ultra-Low Power with MSP430

Designing for Ultra-Low Power with MSP430 Designing for Ultra-Low Power with MSP430 Christian Hernitscheck MSP430 FAE Europe Texas Instruments 2006 Texas Instruments Inc, Slide 1 Agenda Introduction to Ultra-Low Power Looking for Ultra-Low Power

More information

MSP430 Microcontroller Basics

MSP430 Microcontroller Basics MSP430 Microcontroller Basics John H. Davies AMSTERDAM BOSTON HEIDELBERG LONDON NEW YORK OXFORD PARIS SAN DIEGO SAN FRANCISCO SINGAPORE SYDNEY TOKYO Newnes is an imprint of Elsevier N WPIGS Contents Preface

More information

ECE2049: Embedded Computing in Engineering Design C Term Spring 2018

ECE2049: Embedded Computing in Engineering Design C Term Spring 2018 ECE2049: Embedded Computing in Engineering Design C Term Spring 2018 Lecture #19: Using SPI The LCD Screen and DAC Reading for Today: User's Manual Ch 35, Davies 101.5, DAC datasheet Reading for Next Class:

More information

Homework 6: Printed Circuit Board Layout Design Narrative

Homework 6: Printed Circuit Board Layout Design Narrative Homework 6: Printed Circuit Board Layout Design Narrative Team Code Name: Home Kinection Group No. 1 Team Member Completing This Homework: Stephen Larew E-mail Address of Team Member: sglarew @ purdue.edu

More information

Interfacing CMR3000-D01 to an MSP430 ultra low-power microcontroller

Interfacing CMR3000-D01 to an MSP430 ultra low-power microcontroller Interfacing CMR3000-D01 to an MSP430 ultra low-power microcontroller 1 INTRODUCTION The objective of this document is to show how to set up SPI/I2C communication between VTI Technologies CMR3000-D01 digital

More information

Lab 5: LCD and A/D: Digital Voltmeter

Lab 5: LCD and A/D: Digital Voltmeter Page 1/5 OBJECTIVES Learn how to use C (as an alternative to Assembly) in your programs. Learn how to control and interface an LCD panel to a microprocessor. Learn how to use analog-to-digital conversion

More information

MAXREFDES82#: SMART FORCE SENSOR

MAXREFDES82#: SMART FORCE SENSOR System Board 6266 MAXREFDES82#: SMART FORCE SENSOR Maxim s MAXREFDES82# features a next generation industrial, smart force sensor. Mounted on a quadrant of load cells channeled into a multi-channel, 24-bit

More information

Butterfly Laser Diode Mount

Butterfly Laser Diode Mount LM14S2 Butterfly Laser Diode Mount Operating Manual LM14S2 Laser On TEC Driver LD Driver THORLABS, Inc. Ph: (973) 579-7227 435 Route 206N Fax: (973) 383-8406 Newton, NJ 07860 USA www.thorlabs.com 10614-D02

More information

O T Auto-Aligning Straight Line Laser System.

O T Auto-Aligning Straight Line Laser System. O T - 7 0 0 0 Auto-Aligning Straight Line Laser System. Laser Alignment At A Glance. X=0.000 Y=0.000 OT-7000 RF Auto Aligning Straight Line Laser System Photonics, Inc. How Laser Alignment Works. The principle

More information

Build and Test Plan: IGV Team

Build and Test Plan: IGV Team Build and Test Plan: IGV Team 2/6/2008 William Burke Donaldson Diego Gonzales David Mustain Ray Laser Range Finder Week 3 Jan 29 The laser range finder will be set-up in the lab and connected to the computer

More information

DIRRS+ Digital Infra-Red Ranging System Ideal for robotics projects. Singles (SKU # Pack (SKU #35100)

DIRRS+ Digital Infra-Red Ranging System Ideal for robotics projects. Singles (SKU # Pack (SKU #35100) Ltd DIRRS+ Digital Infra-Red Ranging System Ideal for robotics projects a division of Singles (SKU #35090 4 Pack (SKU #35100) Infrared Distance Measurement 5V Output Signal 3 Output Modes Reliable Optics

More information

CAUTION: TTL Only, Do Not Use ± 12 V RS-232

CAUTION: TTL Only, Do Not Use ± 12 V RS-232 DIRRS+ Digital Infra-Red Ranging System Ideal for robotics projects Singles (SKU #35090) 4 Pack (SKU #35100) Infrared Distance Measurement 5V Output Signal 3 Output Modes Reliable Optics Easy to use Open

More information

ARM: Microcontroller Touch-switch Design & Test (Part 1)

ARM: Microcontroller Touch-switch Design & Test (Part 1) ARM: Microcontroller Touch-switch Design & Test (Part 1) 2 nd Year Electronics Lab IMPERIAL COLLEGE LONDON v2.00 Table of Contents Equipment... 2 Aims... 2 Objectives... 2 Recommended Timetable... 2 Introduction

More information

Network Embedded Systems Sensor Networks Fall Hardware. Marcus Chang,

Network Embedded Systems Sensor Networks Fall Hardware. Marcus Chang, Network Embedded Systems Sensor Networks Fall 2013 Hardware Marcus Chang, mchang@cs.jhu.edu 1 Embedded Systems Designed to do one or a few dedicated and/or specific functions Embedded as part of a complete

More information

Application Report. 1 Hardware Description. John Fahrenbruch... MSP430 Applications

Application Report. 1 Hardware Description. John Fahrenbruch... MSP430 Applications Application Report SLAA309 June 2006 Low-Power Tilt Sensor Using the MSP430F2012 John Fahrenbruch... MSP430 Applications ABSTRACT The MSP430 family of low-power microcontrollers are ideal for low-power

More information

DC - Devices and Controller

DC - Devices and Controller 123 DC - Devices and Controller 1 DC-0010 Diode laser controller MK1-HP The diode laser module is connected via the 15 pin HD SubD jacket at the rear of the controller. The controller reads the EEPROM

More information

UNIVERSAL MOTION INTERFACE (UMI) ACCESSORY

UNIVERSAL MOTION INTERFACE (UMI) ACCESSORY USER GUIDE UNIVERSAL MOTION INTERFACE (UMI) ACCESSORY Contents This user guide describes how to use the UMI-77, UMI-A, UMI-Flex, and UMI-Flex accessories. Introduction... What You Need to Get Started...

More information

Hands-On: Implementing an RF link with MSP430 and CC1100

Hands-On: Implementing an RF link with MSP430 and CC1100 Hands-On: Implementing an RF link with MSP430 and CC1100 Keith Quiring MSP430 Applications Engineer Texas Instruments 2006 Texas Instruments Inc, Slide 1 Overview Introduction Target Hardware Library File

More information

Lost Item Pager. Project Description. Russ Kinley

Lost Item Pager. Project Description. Russ Kinley Lost Item Pager Project Description Russ Kinley Introduction The lost item pager will have a base unit that is stationary, consisting of a few page buttons and a digital display. Each of the buttons will

More information

ACU6. Technical Reference Manual. Specifications Interfacing Dimensions. Document topics. ANSARI Controller Unit Type 6 technical reference manual

ACU6. Technical Reference Manual. Specifications Interfacing Dimensions. Document topics. ANSARI Controller Unit Type 6 technical reference manual ACU6 Technical Reference Manual ANSARI Controller Unit Type 6 technical reference manual Document topics Specifications Interfacing Dimensions Document Version: 1.03 13. January 2013 By ANSARI GmbH Friedrich-Ebert-Damm

More information

This manual provides information for the final user application developer on how to use SPC57S-Discovery microcontroller evaluation board.

This manual provides information for the final user application developer on how to use SPC57S-Discovery microcontroller evaluation board. User manual SPC570S-DISP: Discovery+ Evaluation Board Introduction This manual provides information for the final user application developer on how to use SPC57S-Discovery microcontroller evaluation board.

More information

EECS 373 Midterm 2 Fall 2018

EECS 373 Midterm 2 Fall 2018 EECS 373 Midterm 2 Fall 2018 Name: unique name: Sign the honor code: I have neither given nor received aid on this exam nor observed anyone else doing so. Nor did I discuss this exam with anyone after

More information

Lecture test next week

Lecture test next week Lecture test next week Write a short program in Assembler doing. You will be given the print outs of all the assembler programs from the manual You can bring any notes you want Today: Announcements General

More information

6. General purpose Input/Output

6. General purpose Input/Output Chapter 6 6. General purpose Input/Output This chapter starts with a description of one of the simplest integrated peripherals of the MSP430 the General Purpose 8-bit Input Output (GPIO). The Input/Output

More information

Wireless Sensor Networks (WSN)

Wireless Sensor Networks (WSN) Wireless Sensor Networks (WSN) Operating Systems M. Schölzel Operating System Tasks Traditional OS Controlling and protecting access to resources (memory, I/O, computing resources) managing their allocation

More information

EE445L Fall 2010 Final Version A Page 1 of 10

EE445L Fall 2010 Final Version A Page 1 of 10 EE445L Fall 2010 Final Version A Page 1 of 10 Jonathan W. Valvano First: Last: This is the closed book section. You must put your answers in the boxes on this answer page. When you are done, you turn in

More information

Procedure: Determine the polarity of the LED. Use the following image to help:

Procedure: Determine the polarity of the LED. Use the following image to help: Section 2: Lab Activity Section 2.1 Getting started: LED Blink Purpose: To understand how to upload a program to the Arduino and to understand the function of each line of code in a simple program. This

More information

University of Florida EEL 4744 Spring 2014 Dr. Eric M. Schwartz Department of Electrical & Computer Engineering 1 April Apr-14 9:03 AM

University of Florida EEL 4744 Spring 2014 Dr. Eric M. Schwartz Department of Electrical & Computer Engineering 1 April Apr-14 9:03 AM Page 1/15 Exam 2 Instructions: Turn off cell phones beepers and other noise making devices. BEAT UCONN! Show all work on the front of the test papers. If you need more room make a clearly indicated note

More information

Intelligent Machines Design Laboratory EEL 5666C

Intelligent Machines Design Laboratory EEL 5666C Atocha Too Donald MacArthur Center of Intelligent Machines and Robotics & Machine Intelligence Laboratory Intelligent Machines Design Laboratory EEL 5666C TABLE OF CONTENTS Abstract 3 Executive Summary

More information

V1BOOST-STEPPER Unipolar Stepper Motor BoosterPack for the MSP430 LaunchPad. User s Guide

V1BOOST-STEPPER Unipolar Stepper Motor BoosterPack for the MSP430 LaunchPad. User s Guide V1BOOST-STEPPER Unipolar Stepper Motor BoosterPack for the MSP430 LaunchPad User s Guide Revised July 2012 CONTENTS 1 Introduction... 3 1.1 Overview... 3 1.2 Features... 3 1.3 Additional Information...

More information

ECE PRACTICE EXAM #2 Clocks, Timers, and Digital I/O

ECE PRACTICE EXAM #2 Clocks, Timers, and Digital I/O ECE2049 -- PRACTICE EXAM #2 Clocks, Timers, and Digital I/O Study HW3, Class Notes, Davies Ch 2.6, 5.8, 8, 9.2-3, 9.7, MSP43F5529 User's Guide Ch 5, 17, 28 Work all problems with your note sheet first

More information

BUILDING YOUR KIT. For the Toadstool Mega328.

BUILDING YOUR KIT. For the Toadstool Mega328. BUILDING YOUR KIT For the Toadstool Mega328 www.crash-bang.com @crashbang_proto This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Congratulations! You re

More information

Large Solderable Breadboard Hookup Guide

Large Solderable Breadboard Hookup Guide Page 1 of 5 Large Solderable Breadboard Hookup Guide Introduction Solderless breadboards are great for prototyping. But they re not exactly mechanically robust. It seems like something, somewhere is always

More information

NAND/NOR Logic Gate Equivalent Training Tool Design Document. Team 34 TA: Xinrui Zhu ECE Fall Jeremy Diamond and Matthew LaGreca

NAND/NOR Logic Gate Equivalent Training Tool Design Document. Team 34 TA: Xinrui Zhu ECE Fall Jeremy Diamond and Matthew LaGreca NAND/NOR Logic Gate Equivalent Training Tool Design Document Team 34 TA: Xinrui Zhu ECE 445 - Fall 2017 Jeremy Diamond and Matthew LaGreca Table of Contents 1.0 INTRODUCTION 1.1 Objective 1.2 Background

More information

PH 481/581 Physical Optics Winter 2018

PH 481/581 Physical Optics Winter 2018 PH 481/581 Physical Optics Winter 2018 Laboratory #1 Week of January 15 Read: Section 5.2 (pp.151-175) of "Optics" by Hecht Do: 1. Experiment I.1: Thin Lenses 2. Experiment I.2: Alignment Project 3. Experiment

More information

임베디드시스템기초 (# ) #11. Serial Communications 한림대학교전자공학과이선우

임베디드시스템기초 (# ) #11. Serial Communications 한림대학교전자공학과이선우 임베디드시스템기초 (#514115 ) #11. Serial Communications 한림대학교전자공학과이선우 Contents General Serial communications Asynchronous serial communications (UART) 2 Parallel vs. Serial 패러럴 ( 병렬 ) 데이터통신 복수의신호선을이용 ( 대개 8/16/32bit)

More information

KIT 134. INTRODUCTION TO LCD S

KIT 134. INTRODUCTION TO LCD S The aim of this kit is to show how to use a 16x2 alphanumeric Liquid Crystal Display (LCD) with a PC. First we show how to connect it to the parallel port and echo and handle keyboard input. Then we show

More information