I have MS5837-30BA sensors (Bluerobotics Bar30 is made on its basis, only much cheaper). With a couple of these sensors, I measure the draft of the vessel, and monitor the loading of the boat. All this is done separately from the autopilot. I saw that this sensor is supported in ArduSub.
Is it possible to add support in the version for boats (Arduover)?
It would be relatively easy to enable the barometer, the only potential issue that I see is that the EKF would start trying to use it as well so it would affect the altitude estimate. I suspect that doesn’t matter much.
Can you explain how you measure the draft (how deep in the water the boat is) with one or two of these? I can imagine that with two you could measure the water pressure difference… one would be attached low on the underside of the hull and the other would be floating at the water line?
From the picture I think it is clear how you can understand how I use. For my model, I made hydrostatic curves that help me to load the boat.
After the sensors are initialized, the atmospheric pressure is taken as zero, after the launch of the boat takes place (it was once, the sensors are powered separately and permanently, everything is easier for small boats). Then the pressure is recalculated from the “new zero” and transferred to the depth.
Part of the code for the calculation
if (!digitalRead(13)) {
// we calculate the absolute pressure readings
atT = mBAR * 0.001019716212978;
cmH2O = mBAR * 1.019744288922;
} else {
// we calculate the value of the relative pressure
atT = (mBAR - deltamBAR) * 0.001019716212978;
cmH2O = (mBAR - deltamBAR) * 1.019744288922;
}
I think your best option for this would be to do it on an arduino then send the draft to ardupilot as a rangefinder, either i2c or mavlink, you could use the up orientation so that its separate from the depth rangefinder that is using the down orientation. you can use lua to send it back to mission planner as rangefinder orientation 24.
I want to use the same sensor in the submarine I’m building. @rmackay9 , what wold be involved in adding the driver to Rover? Does it have to go in hwdef.dat? Does it have to do with AP_BARO_MS56XX_ENABLED? I have only one of these sensors.
@McKey, the boat im building is a traditional submarine with a single propeller, a rudder and dive planes. I do not believe ArduSub supports this configuration. I put more details about my build here: Conventional Submarines - ArduRover - #11 by iter
I have been looking to replicate this for a sub to use for depth control, the 5837 would be ideal but it’s expensive so I have ordered some i2c barometric pressure modules that I’m going to convert into a depth sensor by attaching an external tube then sealing the whole sensor in epoxy. I have ordered a BMP280 module, bmp180 module, ms5611 module and bmp388l module to test.
I’ve given up on all these sensors because the tube nozzles are constantly clogged. A large tube is inconvenient on my scale. I switched to a different type (I wrote a post, there is a link on Github). But this type is not suitable for underwater vessels.
@ McKey - I appreciate your efforts to get the MS5837 supported in ArduRover - it actually appears in the current baro selection drop down list - but does it have specific driver support ?
If not, have you ever managed to obtain telemetric pressure measurements from one of the MS5873 in Mission Planner or QGC via an arduino sketch?
I ordered the bar02 version (just the sensor board) because it fits the need for a non-tethered sub where the high pressure range of the bar30 is not required. There is a protocol to connect it to an FC running ardusub Guide to Using the Bar02 with an Arduino
Supply voltage of the bar02 is up to 5.0 V - which is what measure on the I2C port - do I need a logic voltage shifter to bring the supply voltage down to 3,3V which is standard for SCL and SDA wires on I2C ports?