MaxBotix MaxSonar topic
- Introduction
- Sensor Datasheet
- Sensor Constructor
- Example Code
- Reference
- Detailed Descriptions
Classes for the MaxBotix MaxSonar ultrasonic range finders.
Introduction
The IP67 rated HRXL-MaxSonar-WR ultrasonic rangefinders offer 1mm resolution, 2.7-5.5VDC operation, a narrow beam pattern, high power output, noise rejection, automatic calibration, and temperature compensation. Depending on the precise model, the range finders have ranges between 300 and 9999mm and read rates of 6-7.5Hz. This library supports TTL or RS323 sensor output, though an RS232-to-TTL adapter is needed for the RS232 models. Analog and pulse-width outputs are not supported. The MaxBotix sensors require a 2.7V - 5.5V power supply to pin 6 on the sensor (which can be turned off between measurements) and the level of the TTL returned by the MaxSonar will match the power level it is supplied with. The digital TTL or RS232 output is sent out on pin 5 on the sensor. Pin 7 of the MaxSonar must be connected to power ground and pin 4 can optionally be used to trigger the MaxSonar.
If you are using the MaxBotix HR-MaxTemp MB7955 temperature compensator on your MaxBotix (which greatly improves data quality), the red wire from the MaxTemp should be attached to pin 1 (square) on the MaxSonar. The white and shield (bare silver) wires from the MaxTemp should both be attached to Pin 7 (GND). The MaxTemp communicates directly with the MaxSonar and there is no need to make any changes on the Aruduino itself to accomodate it. It is not possible to read the temperature data from the MaxTemp.
The MaxBotix sensor have two different modes: free-ranging and triggered. Unless the trigger pin is externally held low, the sensor will continuously take readings at a rate of 6Hz or greater and immediate report each result over the digital output pin. (That is, it will be in free-ranging mode.) When continuously powered and operating in free-range mode, the data output is automatically filtered to help improve accuracy. If you are turning the power to the sensor off between readings, there is no advantage to using the free-ranging because many readings must be taken before the filter becomes effective. In this case, you may save a very small amount of power by setting up a trigger pin and manually trigger individual readings.
Please see the section "[Notes on Arduino Streams and Software Serial](@ref page_arduino_streams)" for more information about what streams can be used along with this library.
This library supports using multiple MaxBotix sensors on the same logger, with a few caveats:
- Any sensor operating in free-ranging mode (powered at the same time as any other sensors with the trigger pins unconnected) must have a dedicated stream instance/serial port.
- To have two sensors operating in free-ranging mode, they must each have a dedicated stream instance/serial port AND you must specify a unique negative pin number for the trigger pin. Giving a negative pin number ensures that the Arduino will not attempt to trigger trigger individual readings but will still be able to tell the sensors apart. (Software-wise, simply specifying the different streams is not enough!) Keep in mind that two or more free ranging sensors must be spaced far enough apart in the field to prevent interference between the sonar beams.
- Two or more sensors may send data to the same stream instance/serial port if both sensors are being triggered and each is triggered by a different trigger pin.
- "Daisy chaining" sensors so the pulse-width output of one sensor acts as the trigger for a second sensor is not supported.
Sensor Datasheet
Sensor Constructor
Construct a new MaxBotix Sonar object. The pin on the mcu controlling power to the MaxSonar. Use -1 if it is continuously powered.
MaxBotixSonar::
Parameters
stream
An Arduino data stream for TTL or RS232 communication. See notes for more information on what streams can be used.
powerPin
triggerPin
The pin on the mcu controlling the "trigger" for the MaxSonar. Use -1 or omit for continuous ranging.
maxRange
Maximum valid measurement reported by the specific sensor model (e.g. 5000 or 9999 or 765).
measurementsToAverage
The number of measurements to take and average before giving a "final" result from the sensor; optional with a default value of 1.
convertCm
Convert centimeter range data from certain models to millimeters. Default false.
Example Code
The MaxBotix MaxSonar is used in the menu a la carte example.
Classes
- class MaxBotixSonar
- The Sensor sub-class for the MaxBotix ultrasonic range finders.
- class MaxBotixSonar_Range
- The Variable sub-class used for the range output from a MaxBotix HRXL-MaxSonar ultrasonic range finder.
Sensor Variable Counts
The number of variables that can be returned by Maxbotix sonar
- #define HRXL_NUM_VARIABLES = 1
- Sensor::
_numReturnedValues; the HRXL can report 1 value. - #define HRXL_INC_CALC_VARIABLES = 0
- Sensor::
_incCalcValues; we don't calculate any additional values.
Sensor Timing
The sensor timing for a Maxbotix HRXL ultrasonic range finder
- #define HRXL_WARM_UP_TIME_MS = 250
- Sensor::
_warmUpTime_ms; warm up time to completion of header: 160ms. - #define HRXL_STABILIZATION_TIME_MS = 0
- Sensor::
_stabilizationTime_ms; the HRXL is stable as soon as it warms up (0ms stabilization). - #define HRXL_MEASUREMENT_TIME_MS = 250
- Sensor::
_measurementTime_ms; the HRXL takes 166ms to complete a measurement.
Range
The range variable from a Maxbotix HRXL ultrasonic range finder
- Range depends on the exact model
- Accuracy is ±1%
Construct a new MaxBotixSonar_
MaxBotixSonar_
Parameters
parentSense
The parent MaxBotixSonar providing the result values.
uuid
A universally unique identifier (UUID or GUID) for the variable; optional with the default value of an empty string.
varCode
A short code to help identify the variable in files; optional with a default value of "SonarRange".
- #define HRXL_RESOLUTION = 0
- Decimals places in string representation; range should have 0 - resolution is 1mm (except for models which have range 10mm).
- #define HRXL_VAR_NUM = 0
- Sensor variable number; range is stored in sensorValues[0].
- #define HRXL_VAR_NAME = "distance"
- Variable name in ODM2 controlled vocabulary; "distance".
- #define HRXL_UNIT_NAME = "millimeter"
- Variable unit name in ODM2 controlled vocabulary; "millimeter".
- #define HRXL_DEFAULT_CODE = "SonarRange"
- Default variable short code; "SonarRange".
Define documentation
#define HRXL_NUM_VARIABLES = 1
#include <src/sensors/MaxBotixSonar.h>
Sensor::
#define HRXL_INC_CALC_VARIABLES = 0
#include <src/sensors/MaxBotixSonar.h>
Sensor::
#define HRXL_WARM_UP_TIME_MS = 250
#include <src/sensors/MaxBotixSonar.h>
Sensor::
#define HRXL_STABILIZATION_TIME_MS = 0
#include <src/sensors/MaxBotixSonar.h>
Sensor::
#define HRXL_MEASUREMENT_TIME_MS = 250
#include <src/sensors/MaxBotixSonar.h>
Sensor::
#define HRXL_RESOLUTION = 0
#include <src/sensors/MaxBotixSonar.h>
Decimals places in string representation; range should have 0 - resolution is 1mm (except for models which have range 10mm).
#define HRXL_VAR_NUM = 0
#include <src/sensors/MaxBotixSonar.h>
Sensor variable number; range is stored in sensorValues[0].
#define HRXL_VAR_NAME = "distance"
#include <src/sensors/MaxBotixSonar.h>
Variable name in ODM2 controlled vocabulary; "distance".
#define HRXL_UNIT_NAME = "millimeter"
#include <src/sensors/MaxBotixSonar.h>
Variable unit name in ODM2 controlled vocabulary; "millimeter".
#define HRXL_DEFAULT_CODE = "SonarRange"
#include <src/sensors/MaxBotixSonar.h>
Default variable short code; "SonarRange".