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.
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.
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.
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.
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