Ping Echo Sounder. Closer than "Minimum Range". What happens?


I hope to get a detailed description to what happens to the output in the Arduino serial monitor when an object is closer than 0.5 m (Minimum Range) and all the way until it touches the sensor. My hope would be that the output would be something like just zeros or nothing at all, like the sensor would stop sending until the object is further away than 0.49 m.

Just erroneous numbers doesn’t work for the project i am currently working on. I hope for the best.
Thank You!


Hej @Loola, välkommen till forumet! :slight_smile:

The minimum distance is because it takes some time for internal sonar reflections to die out (effectively the device itself ‘ringing’ from each ping transmission). Accordingly the signal in that region is at maximum values, or at least very close to it - you can see the profile in Ping Viewer.

The physical minimum distance for a given ping depends on the scan range and speed of sound, because when the sensor is trying to detect targets far away it uses a longer transmit duration for each ping, which increases the ringing time, and accordingly increases the minimum range before usable data comes through.

If that’s your preference you can turn off auto mode and use the set_range message to set the scan_start beyond the minimum detection distance (see range for more details on the parameters). Note that using manual mode also turns off automatic gain control, so you’ll need to determine an appropriate gain value and scan range for your application (or do your own dynamic control of them as relevant).


“Manual mode” looks like a desirable function. If I in manual mode set range to be 500mm. What result will show up on the Arduino serial monitor when the object is at lets say 300mm from the transducer?
And would the result be the same despite different lengths like 200mm and 400mm?

Some clarification please.
“1400 continuous start: Command to initiate continuous data stream of profile messages”.
What does it mean, is it something that needs attention when in “manual mode”?


Most likely that’s still too close to be detected, so probably you would get some arbitrary distance estimate with 0 confidence.

The scan length is the part of the scan range after the scan start.

If you have a good idea of how far away the target is, you can set the start to a bit before it and set a short length so that you get more precise readings in the area of interest (e.g. measuring depth with a boat in a lake that’s known to be 6.5 to 6.8 m deep, you could set scan_start to 6200 mm and scan_length to 1000 mm to get reasonably high resolution profiles and distance estimates).

As I described in my previous comment, you can also use scan_start if you know you have some region of data at the start that you’re not interested in (e.g. you want to avoid the data from the initial ringing region, or just you know your target surface will always be at least some distance away).

If you want the full profile of each ping, you can request the profile message. continuous_start is for if you know you want to continually receive profile messages whenever a new profile is available (depends on the set ping_interval, or the scan range and speed of sound as a physical limit), instead of needing to manually request a new profile each time. A display and logging program like Ping Viewer can make use of that to avoid excess communication overhead.

That’s unrelated to the auto/manual operation modes, which are instead to do with whether the sensor determines its own range and gain to try to suit the conditions, or if the controller (you / your code) is specifying those manually.

From that documentation it seems like it only applies to profile messages, so if you’re just wanting distance or distance_simple messages then continuous_start would not be relevant. That said, I haven’t personally tried it with those messages, so it’s possible that it does actually work with them as well, in which case we should update the documentation to make that clearer.