living with the lab

advertisement
living with the lab
PING))) Ultrasonic Distance Sensor
The PING))) sensor emits short bursts of sound and listens for this sound to echo off
of nearby objects. The frequency of the sound is too high for humans to hear (it is
ultrasonic). The PING))) sensor measures the time of flight of the sound burst. A user
then computes the distance to an object using this time of flight and the speed of
sound (1,126 ft/s).
living with the lab
Computing Distance
The PING))) measures the time required for the burst of sound to travel to the target and then
𝑓𝑡
back to the PING))). The speed of sound is 1,126 in dry air at 68°F, which means that sound
𝑠
can travel 1 inch in 74 μs:
𝑠𝑝𝑒𝑒𝑑 𝑜𝑓 𝑠𝑜𝑢𝑛𝑑 = 1,126
𝑓𝑡 12 𝑖𝑛
𝑠
1 𝑖𝑛
∙
∙
=
𝑠
𝑓𝑡 1,000,000 𝜇𝑠
74 𝜇𝑠
Since the sound wave must travel out to the target and back again, a factor of 2 must be
incorporated into distance calculations. If a variable “duration” records the time of flight of the
sound wave, then the distance to the target in inches is computed as follows:
𝑖𝑛𝑐ℎ𝑒𝑠 = 𝑑𝑢𝑟𝑎𝑡𝑖𝑜𝑛 (𝜇𝑠) ∙
𝑟𝑜𝑢𝑛𝑑 𝑡𝑟𝑖𝑝
1 𝑖𝑛
∙
2 𝑜𝑛𝑒 𝑤𝑎𝑦 𝑡𝑟𝑖𝑝𝑠 74 𝜇𝑠
2
living with the lab
Specifications
•
•
•
measurement range: 0.8 in to 120 inches
supply voltage: 5V
supply current: 30mA
sensing distance (feet) as a function of angle
www.parallax.com/Portals/0/Downloads/docs/prod/acc/28015-PING-v1.6.pdf
3
POWER
0
1
2
3
4
5
RESET
3V3
5V
GND
GND
Vin
AREF
GND
13
12
PMW 11
PMW 10
PMW 9
8
7
PMW 6
PMW 5
4
PMW 3
2
TX 1
RX 0
living with the lab
Connection to an Arduino
DIGITAL
ANALOG
4
living with the lab
Arduino Sketch
•
•
•
•
•
•
The Arduino triggers the PING))) by sending a 5µs (5 microsecond) pulse to the sensor through pin 7,
which is initially configured as an Arduino OUTPUT.
Immediately after sending this pulse, pin 7 is switched to an INPUT.
When the PING))) receives the 5µs pulse from the Arduino, it sends a 40kHz (ultrasonic) burst of sound
out its “speaker” and sets pin 7 to HIGH.
The PING))) then waits for the sound burst to reflect off of something and return to the “microphone”
where it is detected; the PING))) then sets pin 7 to LOW.
The Arduino uses the pulseIn command to measure the time of flight of the sound wave in
microseconds (the time that pin 7, when configured as an input, is HIGH).
The “time of flight” of the sound wave in µs is stored in the variable “duration.”
void setup() {
Serial.begin(9600); }
void loop()
{
long duration, inches;
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
delayMicroseconds(2);
digitalWrite(7, HIGH);
delayMicroseconds(5);
digitalWrite(7, LOW);
// send a 5 microsecond pulse out pin 7
pinMode(7, INPUT);
duration = pulseIn(7, HIGH);
// make pin 7 an input
// measure the time of flight of sound wave
inches = duration / 74 / 2;
// 1130 ft/s * 12in/ft * 1s/1,000,000us = 74
// factor of 2 since sound travels out and back
Serial.print(inches);
Serial.print("in ");
Serial.println();
}
// display distance in inches
5
living with the lab
Example Application
The picture shows how stiff wire (such as a coat hanger) can be used to mount the PING))) to an aluminum
plate. An Arduino and breadboard are also mounted to the plate, and a piezospeaker is installed on the
breadboard to allow the device to output an irritating noise whose frequency is proportional to the
distance from the PING))) to a target.
void setup() {pinMode(8, OUTPUT); }
void loop()
{
long duration, inches, tone_freq;
pinMode(7, OUTPUT);
// make pin 7 an output
digitalWrite(7, LOW);
// send wakeup pulse
delayMicroseconds(2);
digitalWrite(7, HIGH);
delayMicroseconds(5);
digitalWrite(7, LOW);
pinMode(7, INPUT);
duration = pulseIn(7, HIGH);
// make pin 7 an input
// time of flight of wave
inches = duration / 74 / 2;
// compute distance in inches
tone_freq = inches*100;
tone(8,tone_freq);
// a freq of 100*inches is good
// send a tone out of pin 8
}
6
Download