of 14
7/31/2019 BS Accelerometer Rev1
1/14
7/31/2019 BS Accelerometer Rev1
2/14
2. Quick Start
Make Sure you have the following equipment
- BASIC Stamp Module
- Compatible Carrier Board
- Programming Cable (Serial Cable or Serial/USB cable)
- Power Supply
- 80486 or higher PC running Windows
Connect the chip, Data cable, and Power Supply (or Battery) to the Board
PDI Studio V 2
7/31/2019 BS Accelerometer Rev1
3/14
If you dont have a serial port in your computer, you can use a USB to Serial
adapter. (If you have a serial port in your machine, just skip these steps and go
3.Installation and Test of software.)
STEP 1. Installation of drivers
To use this adapter, simply plug it in to
your machine's USB port.
Then, install the drivers. They are
available on the Parallax CD, or can be
downloadable via internet.
http://www.parallax.com/detail.asp?
product_id= 28850 or
http://www.parallax.com/detail.asp?product_id=800-00030
Copy (if using the Parallax CD) orunzip (if downloaded) the driver files to
a temporary folder that is easy to locate on your system. For the purposesof these instructions we will use the folder: C:\temp\FTDI
Plug the USB device into your system. A "Found New Hardware" message
should appear, followed by the Found New Hardware Wizard dialog.
Select install from a list or specific location(advanced), click on the
Next button.
Select "Search for the best driver in these locations," (1) mark the
checkbox next to "Include this location in the search:" and enterthe path,
C:\temp\FTDI, or (2) click the browse button to find the folder
When the installation is complete, you will see a dialog. Click on theFinish button.
STEP 2: USB COM Port Identification
Click on "Start" button
Click on "Control Panel"
Double-click on "System" icon
Click on "Hardware" tab
Click on "Device Manager" button
Expand "Ports (COM & LPT)" tree by clicking on the [+] icon
PDI Studio V 3
http://www.parallax.com/detail.asp?product_id=28850http://www.parallax.com/detail.asp?product_id=28850http://www.parallax.com/detail.asp?product_id=800-00030http://www.parallax.com/detail.asp?product_id=28850http://www.parallax.com/detail.asp?product_id=28850http://www.parallax.com/detail.asp?product_id=28850http://www.parallax.com/detail.asp?product_id=800-000307/31/2019 BS Accelerometer Rev1
4/14
The port will be listed as "USB Serial Port (COMx)" as shown below (Note
that your COM port assignment may differ from the image below). Record
your COM port number for programs that require manual assignment.
PDI Studio V 4
7/31/2019 BS Accelerometer Rev1
5/14
PDI Studio V 5
Pin Description
-
PIN Name Description1 SOUT Serial Out: Rx (DB9 pin 2/ DB25 pin3)2 SIN Serial In: Tx (DB9 pin 3/ DB25 pin2)3 ATN Attention: DTR (DB9 pin 4/ DB254 VSS System Ground5-20 PO-P15 General Purpose I/O21 VDD 5V DC22 RES Reset23 VSS System Ground (same as pin 4)24 VIN Unregulated Power In
7/31/2019 BS Accelerometer Rev1
6/14
3. Installation and Test of Software
1. Get the Software
- If you have the CD : go Software BASIC Stamp Windows
- If you dont have the CD, go to http://www.parallax.com downloads
BASIC Stamp Software
2. Install and Run the program
3. Testyour PCs connection to the BASIC Stamp: Run Identify (from the menu
bar)
4. Setting the board type Enter $STAMP directive into the Editor Window by
clicking on the toolbar icon.
5. Setting the version or programming language Enter $PBASIC directive
into the Editor Window by clicking on the toolbar icon (It depends on what board
you have. See page 2 ofProgramming with the Basic Stamp Editor)
PDI Studio V 6
http://www.parallax.com/http://www.parallax.com/7/31/2019 BS Accelerometer Rev1
7/14
6. Type the line DEBUG Hello World! below the compiler directive
7. Download this program into the BASIC Stamp. You may (1) select Run Run
from menu bar, (2) press Ctrl-R from the keyboard, or (3) click on the Run icon
on the toolbar.
- If the program typed correctly, a progress bar window should appear, then
Debug terminal window should appear and display Hello World!
PDI Studio V 7
7/31/2019 BS Accelerometer Rev1
8/14
7/31/2019 BS Accelerometer Rev1
9/14
7/31/2019 BS Accelerometer Rev1
10/14
7/31/2019 BS Accelerometer Rev1
11/14
' Trig routines courtesy Tracy Allen, PhD. (www.emesystems.com)
Arccosine:
disp = disp */ 983 / 3 ' normalize input to 127
angle = 63 - (disp / 2) ' approximate angle
DO ' find angle
IF (COS angle
7/31/2019 BS Accelerometer Rev1
12/14
#SELECT $STAMP
#CASE BS2, BS2E
Scale CON $200 ' 2.0 us per unit
#CASE BS2SX
Scale CON $0CC ' 0.8 us per unit
#CASE BS2P
Scale CON $0C0 ' 0.75 us per unit
#CASE BS2PEScale CON $1E1 ' 1.88 us per unit
#ENDSELECT
HiPulse CON 1 ' measure high-going pulse
LoPulse CON 0
DegSym CON 176 ' degrees symbol
' -----[ Variables ]-------------------------------------------------------
pulse VAR Word ' pulse input
xmG VAR Word ' g force (1000ths)
ymG VAR Word
brads VAR Word ' binary radians
degrees VAR Word
' -----[ Initialization ]--------------------------------------------------
Setup:
DEBUG "Memsic 2125 Rotation", CR,
"--------------------"
' -----[ Program Code ]----------------------------------------------------
Main:
DO
GOSUB Read_G_Force ' read X and Y
brads = (xmG / 8) ATN (ymG / 8) ' calculate angle
degrees = brads */ 360 ' convert to degrees
DEBUG CRSRXY, 0, 3
DEBUG "Axis A(g)", CR,
"X ", (xmG.BIT15 * 13 + " "),
DEC (ABS xmG / 1000), ".", DEC3 (ABS xmG), " g", CR,
"Y ", (ymG.BIT15 * 13 + " "),
DEC (ABS ymG / 1000), ".", DEC3 (ABS ymG), " g", CR, CR,
"Tilt = ", DEC3 brads, " Brads", CR,
" ", DEC3 degrees, " Degrees"
PAUSE 200 ' update about 5x/second
LOOP
END
' -----[ Subroutines ]-----------------------------------------------------
Read_G_Force:
PULSIN Xin, HiPulse, pulse ' read pulse outputpulse = pulse */ Scale ' convert to uSecs
xmG = ((pulse / 10) - 500) * 8 ' calc 1/1000 g
PULSIN Yin, HiPulse, pulse
pulse = pulse */ Scale
ymG = ((pulse / 10) - 500) * 8
RETURN
PDI Studio V 12
7/31/2019 BS Accelerometer Rev1
13/14
3) Motion Detector
To adjust sensitivity, change the XLimit, theYLimit, and the Sample Delay
constants (should be 100ms or greater).
To determine how long motion/vibration is present before triggering the
alarm , to change the Alarm Level.
' =========================================================================
'
' File...... MEMSIC2125-Motion.BS2
' Purpose... Detects continuous motion for given period
' Author.... Parallax (based on code by A. Chaturvedi of Memsic)
' E-mail.... [email protected]
' Started...
' Updated... 15 JAN 2003
'
' {$STAMP BS2}
' {$PBASIC 2.5}
'
' =========================================================================
' -----[ Program Description ]---------------------------------------------
'
' Monitors X and Y inputs from Memsic 2125 and will trigger alarm if
' continuous motion is detected beyond the threshold period.
' -----[ I/O Definitions ]-------------------------------------------------
Xin PIN 8 ' X pulse input
Yin PIN 9 ' Y pulse input
ResetLED PIN 10 ' reset LED
AlarmLED PIN 11 ' alarm LED
' -----[ Constants ]-------------------------------------------------------
HiPulse CON 1 ' measure high-going pulseLoPulse CON 0
SampleDelay CON 500 ' 0.5 sec
AlarmLevel CON 5 ' 5 x SampleDelay
XLimit CON 5 ' x motion max
YLimit CON 5 ' y motion max
' -----[ Variables ]-------------------------------------------------------
xCal VAR Word ' x calibration value
yCal VAR Word ' y calibration value
xMove VAR Word ' x sample
yMove VAR Word ' y sample
xDiff VAR Word ' x axis difference
yDiff VAR Word ' y axis difference
moTimer VAR Word ' motion timer
' -----[ Initialization ]--------------------------------------------------
Initialize:
LOW AlarmLED ' alarm off
moTimer = 0 ' clear motion timer
Read_Cal_Values:
PULSIN Xin, HiPulse, xCal ' read calibration values
PDI Studio V 13
7/31/2019 BS Accelerometer Rev1
14/14
PULSIN Yin, HiPulse, yCal
xCal = xCal / 10 ' filter for noise & temp
yCal = yCal / 10
HIGH ResetLED ' show reset complete
PAUSE 1000
LOW ResetLED
' -----[ Program Code ]----------------------------------------------------Main:
DO
GOSUB Get_Data ' read inputs
xDiff = ABS (xMove - xCal) ' check for motion
yDiff = ABS (yMove - yCal)
IF (xDiff > XLimit) OR (yDiff > YLimit) THEN
moTimer = moTimer + 1 ' update motion timer
IF (moTimer > AlarmLevel) THEN Alarm_On
ELSE
moTimer = 0 ' clear motion timer
ENDIF
LOOP
END
' -----[ Subroutines ]-----------------------------------------------------
' Sample and filter inputs
Get_Data:
PULSIN Xin, HiPulse, xMove ' take first reading
PULSIN Yin, HiPulse, yMove
xMove = xMove / 10 ' filter for noise & temp
yMove = yMove / 10
PAUSE SampleDelay
RETURN
' Blink Alarm LED
' -- will run until BASIC Stamp is reset
Alarm_On:
DO
TOGGLE AlarmLED ' blink alarm LED
PAUSE 250
LOOP ' loop until reset
TOut
Since the Memsic 2125 is a thermal device, the temperature is available from
the TOut pin and can be measured using an external analog to digital
converter Details
Output calibrated to 1.25V at 25.0C
Output change: 5 milivolts per degree C
PDI Studio V 14