Parallax 28015 Datasheet
Parallax 28015 Datasheet
www.Jameco.com ✦ 1-800-831-4242
The content and copyrights of the attached
material are the property of its owner.
The PING))) sensor works by transmitting an ultrasonic (well above human hearing range) burst and
providing an output pulse that corresponds to the time required for the burst echo to return to the
sensor. By measuring the echo pulse width, the distance to target can easily be calculated.
Pin Definitions
GND Ground (Vss)
5V 5 VDC (Vdd)
SIG Signal (I/O pin)
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 1 of 12
Dimensions
Communication Protocol
The PING))) sensor detects objects by emitting a short ultrasonic burst and then "listening" for the echo.
Under control of a host microcontroller (trigger pulse), the sensor emits a short 40 kHz (ultrasonic) burst.
This burst travels through the air, hits an object and then bounces back to the sensor. The PING)))
sensor provides an output pulse to the host that will terminate when the echo is detected, hence the
width of this pulse corresponds to the distance to the target.
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 2 of 12
Practical Considerations for Use
Object Positioning
The PING))) sensor cannot accurately measure the distance to an object that: a) is more than 3 meters
away, b) that has its reflective surface at a shallow angle so that sound will not be reflected back towards
the sensor, or c) is too small to reflect enough sound back to the sensor. In addition, if your PING)))
sensor is mounted low on your device, you may detect sound reflecting off of the floor.
a. b. c.
Air Temperature
Temperature has an effect on the speed of sound in air that is measurable by the PING))) sensor. If the
temperature (°C) is known, the formula is:
The percent error over the sensor’s operating range of 0 to 70 ° C is significant, in the magnitude of 11
to 12 percent. The use of conversion constants to account for air temperature may be incorporated into
your program (as is the case in the example BS2 program given in the Example Programs section below).
Percent error and conversion constant calculations are introduced in Chapter 2 of Smart Sensors and
Applications, a Stamps in Class text available for download from the 28029 product page at
www.parallax.com.
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 3 of 12
Test Data
The test data on the following pages is based on the PING))) sensor, tested in the Parallax lab, while
connected to a BASIC Stamp microcontroller module. The test surface was a linoleum floor, so the
sensor was elevated to minimize floor reflections in the data. All tests were conducted at room
temperature, indoors, in a protected environment. The target was always centered at the same elevation
as the PING))) sensor.
Test 1
Sensor Elevation: 40 in. (101.6 cm)
Target: 3.5 in. (8.9 cm) diameter cylinder, 4 ft. (121.9 cm) tall – vertical orientation
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 4 of 12
Test 2
Sensor Elevation: 40 in. (101.6 cm)
Target: 12 in. x 12 in. (30.5 cm x 30.5 cm) cardboard, mounted on 1 in. (2.5 cm) pole
Target positioned parallel to backplane of sensor
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 5 of 12
Example Programs and Applications
BASIC Stamp 2
This circuit allows you to quickly connect your PING))) sensor to a BASIC Stamp® 2 via the Board of
Education® breadboard area. The PING))) module’s GND pin connects to Vss, the 5 V pin connects to
Vdd, and the SIG pin connects to I/O pin P15. This circuit will work with the example BASIC Stamp
program listed below.
If you are connecting your PING))) sensor to a Board of Education platform using an extension cable,
follow these steps:
1. When plugging the cable onto the PING))) sensor, connect Black to GND, Red to 5 V, and White
to SIG.
2. Check to see if your Board of Education servo ports have a jumper, as shown at right.
3. If your Board of Education servo ports have a jumper, set it to Vdd as shown. Then plug the
cable into the port, matching the wire color to the labels next to the port.
4. If your Board of Education servo ports do not have a jumper, do not use them with the
PING))) sensor. These ports only provide Vin, not Vdd, and this may damage your PING)))
sensor. Go to the next step.
5. Connect the cable directly to the breadboard with a 3-pin header as shown above. Then, use
jumper wires to connect Black to Vss, Red to Vdd, and White to I/O pin P15.
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 6 of 12
Example Program: PingMeasureCmAndIn.bs2
This example BS2 program is an excerpt from Chapter 2 of the Stamps in Class text Smart Sensors and
Applications. Additional PBASIC programs, one for the BS1 and another than runs on any model of
BASIC Stamp 2 (BS2, BS2e, BS2sx, BS2p, BS2pe, BS2px) can be downloaded from the 28015 product
page.
DO
PULSOUT 15, 5
PULSIN 15, 1, time
PAUSE 100
LOOP
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 7 of 12
Propeller Microcontroller
{{
***************************************
* Ping))) Object V1.1 *
* (C) 2006 Parallax, Inc. *
* Author: Chris Savage & Jeff Martin *
* Started: 05-08-2006 *
***************************************
Interface to Ping))) sensor and measure its ultrasonic travel time. Measurements can be in
units of time or distance. Each method requires one parameter, Pin, that is the I/O pin that
is connected to the Ping)))'s signal line.
┌───────────────────┐
│┌───┐ ┌───┐│ Connection To Propeller
││ ‣ │ PING))) │ ‣ ││ Remember PING))) Requires
│└───┘ └───┘│ +5V Power Supply
│ GND +5V SIG │
└─────┬───┬───┬─────┘
│ │ 1K
└┘ └ Pin
--------------------------REVISION HISTORY--------------------------
v1.1 - Updated 03/20/2007 to change SIG resistor from 10K to 1K
}}
CON
TO_IN = 73_746 ' Inches
TO_CM = 29_034 ' Centimeters
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 8 of 12
The ping.spin object is used in an example project with the Parallax 4 x 20 Serial LCD (#27979) to
display distance measurements. The complete Project Archive can be downloaded from the Propeller
Object Exchange at http://obex.parallax.com.
───────────────────────────────────────
Parallax Propeller Chip Project Archive
───────────────────────────────────────
Project : "ping_demo"
ping_demo.spin
│
├──Debug_Lcd.spin
│ │
│ ├──Serial_Lcd.spin
│ │ │
│ │ └──Simple_Serial.spin
│ │
│ └──Simple_Numbers.spin
│
└──ping.spin
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 9 of 12
Javelin Stamp Microcontroller
This class file implements several methods for using the PING))) sensor with the Javelin Stamp module.
package stamp.peripheral.sensor;
import stamp.core.*;
/**
* This class provides an interface to the Parallax PING))) ultrasonic
* range finder module.
* <p>
* <i>Usage:</i><br>
* <code>
* Ping range = new Ping(CPU.pin0); // trigger and echo on P0
* </code>
* <p>
* Detailed documentation for the PING))) Sensor can be found at: <br>
* http://www.parallax.com/detail.asp?product_id=28015
* <p>
*
* @version 1.0 03 FEB 2005
*/
public final class Ping {
/**
* Creates PING))) range finder object
*
* @param ioPin PING))) trigger and echo return pin
*/
public Ping (int ioPin) {
this.ioPin = ioPin;
}
/**
* Returns raw distance value from the PING))) sensor.
*
* @return Raw distance value from PING)))
*/
public int getRaw() {
int echoRaw = 0;
/*
* The PING))) returns a pulse width of 73.746 uS per inch. Since the
* Javelin pulseIn() round-trip echo time is in 8.68 uS units, this is the
* same as a one-way trip in 4.34 uS units. Dividing 73.746 by 4.34 we
* get a time-per-inch conversion factor of 16.9922 (x 0.058851).
*
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 10 of 12
* Values to derive conversion factors are selected to prevent roll-over
* past the 15-bit positive values of Javelin Stamp integers.
*/
/**
* @return PING))) distance value in inches
*/
public int getIn() {
return (getRaw() * 3 / 51); // raw * 0.058824
}
/**
* @return PING))) distance value in tenths of inches
*/
public int getIn10() {
return (getRaw() * 3 / 5); // raw / 1.6667
}
/*
* The PING))) returns a pulse width of 29.033 uS per centimeter. As the
* Javelin pulseIn() round-trip echo time is in 8.68 uS units, this is the
* same as a one-way trip in 4.34 uS units. Dividing 29.033 by 4.34 we
* get a time-per-centimeter conversion factor of 6.6896.
*
* Values to derive conversion factors are selected to prevent roll-over
* past the 15-bit positive values of Javelin Stamp integers.
*/
/**
* @return PING))) distance value in centimeters
*/
public int getCm() {
return (getRaw() * 3 / 20); // raw / 6.6667
}
/**
* @return PING))) distance value in millimeters
*/
public int getMm() {
return (getRaw() * 3 / 2); // raw / 0.6667
}
}
This simple demo illustrates the use of the PING))) ultrasonic range finder class with
the Javelin Stamp:
import stamp.core.*;
import stamp.peripheral.sensor.Ping;
int distance;
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 11 of 12
while (true) {
// measure distance to target in inches
distance = range.getIn();
Copyright © Parallax Inc. PING))) Ultrasonic Distance Sensor (#28015) v1.5 2/15/2008 Page 12 of 12
Web Site: www.parallax.com Office: (916) 624-8333
Forums: forums.parallax.com Fax: (916) 624-8003
Sales: sales@parallax.com Sales: (888) 512-1024
Technical: support@parallax.com Tech Support: (888) 997-8267
The purpose of this explanation is to convey the results of a brief test conducted at Parallax
headquarters.
Copyright © Parallax Inc. • Water Level Measurement with Ping))) Sensor (#28015) • v1.0 2/9/2007 Page 1 of 2
sensor setup was placed on top of the pipe with water in a bucket and left to rest for ten days to see if
storage in a humid environment would be a problem. After this period, we tested the Ping))) sensor and
it still operated (California is also a dry climate).
To continue with our tests, we attempted to measure the water level of boiling water (based on another
customer request). We held the operating Ping))) sensor over boiling water for a few seconds at various
heights, and it did indeed measure the distance to the boiling water. When steam was thick (closer to
the water, and when the water was boiling hard) condensation droplets would accumulate on the
transducers; we then moved it out of steam for a minute for the droplets to dry then continued with the
test. The Ping sensor continued to operate throughout the 10-minute test. We concluded that the
Ping))) sensor could sense the surface of the boiling water, but the measurements were affected when
the cloud of steam was particularly thick.
The distance measurements through the ABS pipe were initially obtained using a ping pong ball taped to
the end of a tape measure. The ball was moved up and down the pipe in one inch increments and the
Ping))) showed accurate measurements.
Then the ten-foot pipe was inserted in a bucket of water and we moved the pipe up and down in the
bucket. Though the bucket was only a foot deep the Ping))) showed accurate readings for each inch of
movement ten feet away.
Copyright © Parallax Inc. • Water Level Measurement with Ping))) Sensor (#28015) • v1.0 2/9/2007 Page 2 of 2
Chapter 1: Detect Distance with the Ping))) Ultrasonic Detector · Page 1
Figure 1
The Ping))) Sensor
The draft material in this Chapter is part of a forthcoming Stamps in Class text by Andy Lindsay.
The Ping))) sensor's chirps are not audible because 40 kHz is ultrasonic.
What we consider sound is our inner ear's ability to detect the variations in air pressure
caused by vibration. The rate of these variations determines the pitch of the tone. Higher
frequency tones result in higher pitch sounds and lower frequency tones result in lower pitch
tones.
Most people can hear tones that range from 20 Hz, which is very low pitch, to 20 kHz, which
is very high pitch. Subsonic is sound with frequencies below 20 Hz, and ultrasonic is sound
with frequencies above 20 kHz. Since the Ping))) sensor's chirps are at 40 kHz, they are
definitely ultrasonic, and not audible.
Parts Required
All you'll need is a Ping))) sensor and three jumper wires to make it work. The Ping)))
sensor has protection against programming mistakes (and wiring mistakes) built-in, so
there's no need to use a 220 Ω resistor between P15 and the Ping))) sensor's SIG terminal.
√ Place your Board of Education with the Ping))) sensor circuit on something to keep it
at least 8 cm above the table surface.
Page 4 · Smart Sensors and Applications
√ Place an object (like a water bottle, box, or paper target) 15 cm from the front of the
Ping))) sensor.
√ Enter, save, and run PingTest.bs2.
√ The Debug Terminal should start reporting a value in the neighborhood of 450.
Values of 438 to 466 mean the distance is between 15 and 16 cm.
√ Move the target to a distance of 30 cm from the Ping))) sensor and verify that the
value of the time variable doubled.
√ Point your Ping))) sensor at a variety of near and far objects and observe the time
measurements.
√ Multiply your measurements by 0.03434 to convert to centimeter measurements, and
verify that the measurements are correct.
' PingTest.bs2
DO
PULSOUT 15, 5
PULSIN 15, 1, time
DEBUG HOME, "time = ", DEC5 time
PAUSE 100
LOOP
DO
PULSOUT 15, 5
PULSIN 15, 1, time
DEBUG HOME, "time = ", DEC5 time
time = time ** 2251
DEBUG CR, "Distance = ", DEC4 time, " cm"
PAUSE 100
LOOP
√ Run your modified program and verify that the program correctly displays both the
echo time and centimeter measurements.