Skip to content

Latest commit

 

History

History
50 lines (26 loc) · 2.1 KB

File metadata and controls

50 lines (26 loc) · 2.1 KB

Are We There Yet?

Find the distance from one place to another with a sonic range finder, a microcontroller and some code!

The Ultrasonic Range Finder transmits a pulse of (inaudible to the ear) sound and listens for the echo. The range finder calculates the distance to an object from transmission to echo time.

Physics

A range finder operates in pulse-width-modulations (PWM). We need to translate this to human readable units. The metric system!

Ultrasonic Pulse goes out to some target. Echo comes back. Range finder calculates this value, capturing in an internal clock/PWM. We convert it back out to centimeters!

Distance = ( Velocity * Time ) / 2
Time = ( 2 * Distance ) / Velocity

This is the time interval we would expect for a pulse to travel some Distance to a target.

Let Distance = 1 cm. Speed of sound is approx 340 m/s.

Time = ( 2 * 0.01 ) / 340
Time = 5.88E-5 s

1 cm distance change signals a change in the Echo pulse width. Increment our calculator by 1 'tick' where our calculator operates at the frequency:

( 1 / Time ) = 1 / (5.88E-5 s)
f = 17,000 Hz

Using a 4MHz internal clock for the PIC16F88 means we have 1MHz instruction cycle frequency. Combine this with a 1:64 prescale value for a rate of 15,630 Hz. Now we are close to our desired frequency of 17,000 Hz.

( (17,000 / 15,630) - 1 ) = 8.8%

Our frequency needs to be 8.8% higher! In comes the OSCTUNE register.

We have 5 bits of 'tuning' for up to 12.5% scaling on our clock frequency. To increase 8.8%:

(8.8 / 12.5 ) * 2^(5) = 0.704 * 32 = 22.53 --> 23

To get our value from the Sonic Range Finder we copy 23 (decimal) to the OSCTUNE register for a frequency of approx 17,000 Hz.

(Unfortunately no LaTeX in README)

Resources / Hardware

Uses the HC-SR04 Sonic Range Finder. See the datasheet to learn more.

Uses the Microchip PIC16F88.

Invaluable datasheet: http://ww1.microchip.com/downloads/en/DeviceDoc/30487D.pdf.