Table of Contents

Detecting the distance to an object with an ultransonic sensor

With the capture capability of Netzer a simple ultrasonic sensor like the HC-SR04 module can be used.

hc-sr04_front.jpg Fig. 1: Ultrasonic sensor HC-SR04

For that reason the sensor shall be connected like:

Sensor signal Netzer signal Further descriptions
VCC - Connect the sensor to +5V
GND GND Ground signal
TRIG (I) IO3 The trigger signal
ECHO (O) IO0, SPI_INT The echo signal. Due to the Netzer pins are +5V tolerant, no voltage divider is needed!

IO3

IO3 is used for generating the trigger signal. Datasheet of the sensor states that at least 10 µs pulse must be generated to start the measurement.

Fig. 2: Configuration of IO3 for trigger

Due to the ultrasonic sensor has a resolution of about 0.3 cm it is sufficient to configure the resolution to 800 ns. The maximum values to measure (18 meters) are more than enough for the maximum of 3 meters the sensor will return.

At 800 ns the value 0x0D must be written to IO3 to get the 10 µs impulse. The easiest way is to configure the impulse as startup value like shown in image above.

IO0

IO0 is triggered by the rising edge of the sensor capture signal ECHO.

Fig. 3: IO0 configure for starting measurement

Important is to mark the “Impulse timer Reset” checkbox. Configured like this the rising edge of the ECHO signal will start the capture timer.

SPI_INT

SPI_INT is connected to the ECHO pin, too.

Fig. 4: Config of SPI_INT

The falling edge of the ECHO signal will stop the capture timer and finally show the result on the GPIO webpage.

Result

Depending on set time resolution the measured value must be multiplied with the appropriate unit.

If the result is 0x1234 at resolution 800ns the measured pulse width is 3.728 ms.

The velocity of sound in dry air is 343 m/s (at 20°C) or 34.3 cm / ms.

3.728 ms x 34.3 cm / ms = 127.87 cm is the propagation the signal takes. Due to the echo two ways are measured so the result must be divided in halves: 63.94 cm