lab 1

12
Control Systems LAB Student: Breno Henrique Tavares Gomes Instructor: Dr. Bahram Shahian Course number: 5141 Section: 01 Lab number 2 02/05/2015

Upload: breno

Post on 11-Jan-2016

216 views

Category:

Documents


1 download

DESCRIPTION

lab1 control systems

TRANSCRIPT

Page 1: Lab 1

Control Systems LAB

Student: Breno Henrique Tavares Gomes

Instructor: Dr. Bahram Shahian

Course number: 5141

Section: 01

Lab number 2

02/05/2015

Page 2: Lab 1

Objective: Complete all challenge of chapter 1

For all challenge the same circuit is used. But some parts are not used in some challenges.

Components:

3 Resistors 220 ohms;

1 Resistor 1k ohms;

1 Buzzer;

1 Red LED;

1 LDR(Light Dependent Resistor);

1 Pushbutton;

1 Homework Board;

Circuit:

Where: R1=R3=R4=220 ohms; R1=1k ohms and C1=0.1 microF

Page 3: Lab 1

Challenge 1 Modify the activity 1 using TRUE or FALSE instead of YES or NO

Answer:

Page 4: Lab 1

Challenge 2 Code a program according with the following flowchart:

Answer:

' {$STAMP BS2}

' {$PBASIC 2.5}

' Breno Henrique Tavares Gomes

OUTPUT 5

INPUT 0

Main:

OUT5=1

PAUSE 500

FREQOUT 10, 1000, 1900

OUT5=0

PAUSE 500

GOTO Main

Page 5: Lab 1

Challenge 3

Answer:

' -----[ Title ]-------------------

' {$STAMP BS2}

' {$PBASIC 2.5}

' Breno Henrique Tavares Gomes

' -----[ Declarations ]----------------------------------------------------

Photo PIN 10 ' Alias for photo resistor circuit on P0

LED PIN 5 ' Alias for LED on P5

Buzzer PIN 10 ' Alias for buzzer on P10

PB PIN 13 ' Alias for pushbutton on P13

PBVal VAR Bit ' Bit variable to hold pushbutton value

' -----[ Main Routine ]----------------------------------------------------

DO ' ******** Read Pushbutton

PBVal = PB ' Read Pushbutton Value and assign to PBVal

' ******** Display Pushbutton value

DEBUG CLS,"Pushbutton value = ", DEC PBVal,CR

' ******** Button Pressed Conditional and Code

IF (PBVal = 0) THEN ' If pushbutton pressed is true then,

FREQOUT 10, 1000, 2000

ELSE

HIGH LED ' blink the LED

PAUSE 500

LOW LED

ENDIF

' ******** 1/4 second pause

PAUSE 500

LOOP ' Loop back to DO to repeat continuously

Page 6: Lab 1

Challenge 4

Answer:

Code:

' {$STAMP BS2}

' {$PBASIC 2.5}

' Breno Henrique Tavares Gomes

' -----[ Declarations ]----------------------------------------------------

Photo PIN 0 ' Alias for photo resistor circuit on P0

LED PIN 5 ' Alias for LED on P5

Page 7: Lab 1

Buzzer PIN 10 ' Alias for buzzer on P10

PhotoVal VAR Word ' Variable to hold RC Time value

PhotoMin VAR Word ' Holds minimum light level value

PhotoMax VAR Word ' Hold maximum light level value

' ---[ Initialization ] ------------------------------------------------------

PhotoMin = 500 ' Set minimum light value

PhotoMax = 5000 ' Set maximum light value

PAUSE 1000 ' Allow connection to stabilize -- for Chapter 2

' -----[ Main Routine ]----------------------------------------------------

DO

GOSUB ReadPhoto

GOSUB CheckLightHigh

GOSUB CheckLightLow

GOSUB Checksystem

PAUSE 500

LOOP

' -----[ Subroutines ]-----------------------------------------------------

ReadPhoto: ' Read light level and plot values

HIGH Photo

PAUSE 10

RCTIME Photo,1,PhotoVal

DEBUG DEC PhotoVal, ",", DEC PhotoMin, "," ,DEC PhotoMax,CR

RETURN

CheckLightHigh: ' Test if high light level

IF (PhotoVal < PhotoMin) THEN

DEBUG "LIGHT LEVEL HIGH!",CR

FREQOUT Buzzer,100,3000

PAUSE 100

ENDIF

RETURN

Page 8: Lab 1

CheckLightLow: ' Test if low light level

IF (PhotoVal > PhotoMax) THEN

DEBUG "LIGHT LEVEL LOW!",CR

FREQOUT Buzzer,200,1000

PAUSE 200

ENDIF

RETURN

Checksystem:

HIGH 5

PAUSE 250

LOW 5

RETURN

Challenge 5

Answer:

' {$STAMP BS2}

' {$PBASIC 2.5}

'Breno Henrique Tavares Gomes

' -----[ Declarations ]----------------------------------------------------

Photo PIN 0 ' Alias for photo resistor circuit on P0

LED PIN 5 ' Alias for LED on P5

Buzzer PIN 10 ' Alias for buzzer on P10

PB PIN 13 ' Alias for pushbutton on P13

PBVal VAR Bit ' Bit variable to hold pushbutton value

PhotoVal VAR Word ' Variable to hold RC Time value

FreqVal VAR Word ' Frequency to sound

CountVal VAR Byte ' Number of tones to sound

X VAR Byte ' General Counting variable

Duration VAR Word ' Duration of tone in mili seconds

Page 9: Lab 1

' -----[ Main Routine ]----------------------------------------------------

DO

GOSUB WaitForButton

GOSUB GetFreq

GOSUB GetCount

GOSUB GetDuration

GOSUB SoundTone

PAUSE 1000

LOOP

' -----[ Subroutines ]-----------------------------------------------------

WaitForButton:

DEBUG CLS, "Press the pushbutton to begin",CR

DO

LOOP WHILE (PB=1)

RETURN

GetFreq:

DO

DEBUG CR,"Enter the frequency to play (1 to 4000)",CR

DEBUGIN DEC FreqVal

LOOP UNTIL (FreqVal <= 4000) ' loop until within range

RETURN

GetCount:

DO

DEBUG CR,"Enter the number of times to play (1 to 10)",CR

DEBUGIN DEC CountVal

LOOP WHILE (CountVal > 10) ' loop while out of range

RETURN

Page 10: Lab 1

GetDuration:

DO

DEBUG CR,"Enter the duration of the tone (1 to 1000 seconds)",CR

DEBUGIN DEC Duration

LOOP WHILE (Duration > 1000) ' loop out of range

RETURN

SoundTone:

FOR X = 1 TO CountVal ' Start X at 1 for counting up to CountVal

FREQOUT Buzzer,Duration,FreqVal

DEBUG "Buzzing ", DEC X,CR

NEXT ' Add 1 to X and loop if X <= CountVal

RETURN