Analog Pressure Sensors (automotive type

Greetings,

I've been working on a system monitoring various pressures in my pool/house. The max pressures vary from 0.2bar (rain water tank) to 4.0bar (street pressure). (https://www.amazon.com/dp/B074QNVTT7?ref=ppx_pop_mob_ap_share)

I bought matching analog Pressure transducers from Amazon, which are mostly used in automotive, oil pressure etc. At 5V supply, they are supposed to give 0.5-4.5V readouts...

It was my understanding that all these units measure DIFFERENTIAL pressure, not absolute. This is important, because I live in the mountains of Medellín Colombia. 2,150m gives me 0.78atm(bar). When I connect these buggers to my Arduino without a water column, they all read below the expected 102 (out of 1024)... The higher the pressure rating, the closer to 102 they get, which makes me think they are reading ABSOLUTE, pressure...

BTW, i did do some digital and analog filtering on there.

Any ideas? @JohnRob, in a previous post (now closed) had made some interesting comments on the pressure topic. Maybe he can add to this.

Thanks

Did you see the sensor you have is rated 0 to 150 PSI? Whatever that is in BAR, it is VERY FAR from any atmospheric pressure I hope I ever see. 0 PSI will be the current atmospheric pressure. Paul

Is your 0.2 bar and 4 bar relative to the atmospheric pressure ? 150psi = 10 bar, that is a good range for you project.

As far as I know, those pressure sensors are indeed differential pressure sensors. In air they should output 0.5V. As soon as you apply pressure, the voltage should rise.

However, they are not the best quality. Could it be broken ? Are you sure the wires are connected okay ?

Can you show the sketch and a schematic and a photo ? Can you remove all the filters ?

Off topic: I'm sitting behind my computer at 1 meter above sea level.

The accuracy of these won’t be great as they are very cheap - you can expect some drift around the zero point , also some temperature drift .

+- 2% error is (2/100)*10bar = 200mbar , it could read this with zero input !

May well still be very usable in your application .

I believe those sensors read "gauge" pressure (absolute - atmospheric). I think I would have chosen a 10 or 15PSI sensor to read 3PSI accurately. What is max pressure on your rain water tank (height of water when full)?

Paul_KD7HB: Did you see the sensor you have is rated 0 to 150 PSI? Whatever that is in BAR, it is VERY FAR from any atmospheric pressure I hope I ever see. 0 PSI will be the current atmospheric pressure. Paul

Hi Paul. Like I said, I have several sensors. 2 are 0-15psi, one is 0-30psi, one 0-100, the last is 0-150psi... The lower the rating, the farther away from an ideal 102 they are...

Koepel: Is your 0.2 bar and 4 bar relative to the atmospheric pressure ? 150psi = 10 bar, that is a good range for you project.

As far as I know, those pressure sensors are indeed differential pressure sensors. In air they should output 0.5V. As soon as you apply pressure, the voltage should rise.

However, they are not the best quality. Could it be broken ? Are you sure the wires are connected okay ?

Can you show the sketch and a schematic and a photo ? Can you remove all the filters ?

Off topic: I'm sitting behind my computer at 1 meter above sea level.

Hi Koepel, Yes, 0.2 to 4bar is relative to local atmospheric pressure. For example, there are two rainwater tanks, which hold 2m of water column. I use the 15psi sensors for that. The line pressure is 4atm, I'll use the 150psi for that. The pool filter gets as high as 2bar, qualifying for the 100psi sensor. I'm pretty sure they work ok. I everyone of them to a 3m tall graduated water column and raised and lowered the water every 50cm, up and down several times. I did notice that they need a few minutes to come to temperature, but after that they are very repeatable and linear... After I did this, I noticed the 0 offset. I spent a lot of time building Software that allows me to create a calibration profile, which I save into EEPROM. I save 0 column and 200cm column for each sensor. It works, but is a royal PITA. One thing I noticed is that I don't have a good 5V and I think this is affecting the readings. I have two buck converters (3A) in the system, one of which I was using to supply the relays, the other all the low power stuff. I think I'll switch that around to supply the system and the relays from one of those converters and use the other to set ARef and supply the sensors. And, of course go through the PITA calibration procedure one more time... I'll also change the wiring from cat5 in a shielded conduit to shielded control wire. The one funny thing about this whole setup is that the water is being ionized (Cu ions) to kill bacteria... I have Cu electrodes in the pool and rain water circuits, that drive 24V/2A, alternating every minute. The water is very hard, i.e. very conductive, as a result it really shouldn't cause any difference in potential in any way (all grounds are common). So, in theory this current should not affect much... Schematic: Let me try the new ARef wiring and I'll send it, if it works. Cheers

hammy: The accuracy of these won’t be great as they are very cheap - you can expect some drift around the zero point , also some temperature drift .

+- 2% error is (2/100)*10bar = 200mbar , it could read this with zero input !

May well still be very usable in your application .

Hi Hammy, I think this is precisely what is going on. Cheap sensors. $20, vs a $150 precisión one. As mentioned in my previous answer, the calibration might do the job here, but it needs to be done in the lab and I'm not sure what differentials I'm introducing in situ.

Yes, I'm essentially looking for alarm conditions: rainwater too low, switch to city water; pool filter pressure too high/low, look for reasons, etc.

JCA34F: I believe those sensors read "gauge" pressure (absolute - atmospheric). I think I would have chosen a 10 or 15PSI sensor to read 3PSI accurately. What is max pressure on your rain water tank (height of water when full)?

Hi JCA, That was my initial thought as well. But here is the what makes me think they are differential. At local elevation of 2,150m, I have atmospheric pressure of 780mbar, or 233mbar lower that sea level. That's 2.33m of water column. When I apply these 2.33m onto my 0-15psi model, I read an ADC count in the mid 300s, exactly where it needs to be... I think Hammy's right. Cheap! So, we need to write software to make it work better... I'll report back! Cheers all.

trilife: Yes, I'm essentially looking for alarm conditions: rainwater too low, switch to city water; pool filter pressure too high/low, look for reasons, etc.

The rainwater tank you may better monitor with a float switch, placed at your desired alarm level. Cheap, reliable, and gives you a very accurate level warning. Maybe a second one as advance warning. For the pool filter I can imagine you don't need that accurate a level for warning, the pressure sensor will likely do fine.

wvmarle: The rainwater tank you may better monitor with a float switch, placed at your desired alarm level. Cheap, reliable, and gives you a very accurate level warning. Maybe a second one as advance warning. For the pool filter I can imagine you don't need that accurate a level for warning, the pressure sensor will likely do fine.

Hi, Wvmarle, Mechanical switches are so last century. And they need to be installed inside the tank (25cm reinforced concrete walls). With one $20 pressure transducer, even an inaccurate one, I only need to tap into the drain pipe to get a reading. No draining of tanks, climbing through hatches etc... And since I needed to develop the calibrate/ read/display routines anyway (house and pool filter)...

So last century... and yet unbeaten in cost, reliability and precision. But what do I care. It's your project.

@trilife, please tell us what your are going to do with AREF.

The sensors might be ratiometric (I think they are). That means that the output is relative to the 5V. If a sensor output is relative to the 5V, and the Arduino sets its analog reference to 5V (that is the default), then the analogRead() returns a stable value, even if the 5V varies.

High frequency noise from a DC/DC-converter is something else. Perhaps a LC filter will help.

On the other side, if you want to measure a voltage from a battery or a sensor that outputs a certain voltage, then the Arduino requires a good voltage reference. It has an internal voltage reference, but some use the 3.3V from the voltage regulator as reference (I don't like that).

So you have a cheap pressure sensor and a lot of current going through the water ! The pressure sensor itself needs to be grounded to get a good measurement, but then the pressure sensor starts to corrode ! perhaps it might put toxic metals and metal oxides in the water. Every food quality inspector would shake his/her head. Is there a solution with a sensor that is encapsulated in food-safe plastic ?

trilife: Hi, Wvmarle, Mechanical switches are so last century. And they need to be installed inside the tank (25cm reinforced concrete walls). With one $20 pressure transducer, even an inaccurate one, I only need to tap into the drain pipe to get a reading. No draining of tanks, climbing through hatches etc... And since I needed to develop the calibrate/ read/display routines anyway (house and pool filter)...

Perhaps you need to think ahead when you are draining the water through the drain pipe. What will the water pressure be for the moving water? Paul

wvmarle: So last century... and yet unbeaten in cost, reliability and precision. But what do I care. It's your project.

Please don't take offense. I already have the sensors, and living in Colombia it takes ages to get stuff here. And, like I said, having the items requiring maintenance outside of the tank makes life a lot easier... The tanks are 25m³ each...

Paul_KD7HB: Perhaps you need to think ahead when you are draining the water through the drain pipe. What will the water pressure be for the moving water? Paul

Yes, I was simplifying. During the pour of the tanks, I installed a 1/2" pipe to install a clear pipe on the outside, the ultimate in low tech. I'm now just teeing off that pipe to install the pressure sensor.

trilife: Yes, I was simplifying. During the pour of the tanks, I installed a 1/2" pipe to install a clear pipe on the outside, the ultimate in low tech. I'm now just teeing off that pipe to install the pressure sensor.

Good planning! Paul

Koepel: @trilife, please tell us what your are going to do with AREF.

The sensors might be ratiometric (I think they are). That means that the output is relative to the 5V. If a sensor output is relative to the 5V, and the Arduino sets its analog reference to 5V (that is the default), then the analogRead() returns a stable value, even if the 5V varies.

High frequency noise from a DC/DC-converter is something else. Perhaps a LC filter will help.

On the other side, if you want to measure a voltage from a battery or a sensor that outputs a certain voltage, then the Arduino requires a good voltage reference. It has an internal voltage reference, but some use the 3.3V from the voltage regulator as reference (I don't like that).

So you have a cheap pressure sensor and a lot of current going through the water ! The pressure sensor itself needs to be grounded to get a good measurement, but then the pressure sensor starts to corrode ! perhaps it might put toxic metals and metal oxides in the water. Every food quality inspector would shake his/her head. Is there a solution with a sensor that is encapsulated in food-safe plastic ?

We to the same conclusion Koepel, Ratio metric yes, but I think I calibrated the sensors in the lab, on a trimmed down system, which probably had a different voltage... I will do the calibration in situ this time, with cables etc. There doesn't seem to be a lot of noise, the reading moves only a couple of counts/1023. And it doesn't drift, except for the first few minutes, I suspect thermal. The drinking water tank is a steady 19°C. I'm also upgrading the cables to shielded sensor cables, with the shield connecting to the body of the sensor. I even added that shielding to the cable from the connector block to the Mega's analog inputs... The current electrodes are on the output of the systems, past the pump, past the filters etc, several linear meters from the sensors. And yes, I'm drinking those Cu and Ti ions. (It's an accepted disinfection method used in hospitals in Europe. Much better than Chlorine). The sensors are made for chemical environment. If my memory serves me well, it is a tiny stainless membrane facing the liquid. All other piping in the system is stainless as well until I get into the house, where it switches to PEX. II now need to make some mods to simplify the overengineered software and will post the results. Thanks everyone for their input and suggestions!!!

I've never seen an automotive pressure sensor that was absolute. They are all Gauge pressure. I very much doubt you have absolute transducers, most likely low accuracy gauge type

These are not what I would call high end transducers. This site claims 2% error without any explanation of how the error (if real) is calculated. Also you didn't mention how much off the 102 count your transducer.

Easy test. Connect the transducer to your arduino and leave it sit. Monitor the readings every couple of hours for maybe a day and see how stable it is. After that, repeat the test but warm or cool the transducer, see how much it changes with temperature. See if the short term change is stable enough for you to even consider.

For any pressure transducer the most unstable parameter is the zero offset. Even in the most costly sensors this is the most difficult characteristic to keep stable. And the arduino is not what I would call a precision device.

So I think you should look at your goals from the application side. A good rule of thumb is one should use a transducer at about 2/3 of the max range. This means you will require transducers with different ranges.

You mentioned your expected pressure values but you didn't mention what you need to measure to accomplish your goals. Is it there or not there? Or do you need values?

I realize you must stay with the Arduino for readings. However if you expect any precision I strongly suggest you get one with this chip on it MCP3421

The delta sigma conversion is the key here. They are inherently low noise and rejecting most periodic noise. You will need three of these, one for each transducer and one for the 5V transducer supply. I thought there was another type of delta sigma converter with multiple input channels but I couldn't find it in a quick eBay search.

JohnRob: I've never seen an automotive pressure sensor that was absolute. They are all Gauge pressure. I very much doubt you have absolute transducers, most likely low accuracy gauge type

These are not what I would call high end transducers. This site claims 2% error without any explanation of how the error (if real) is calculated. Also you didn't mention how much off the 102 count your transducer.

Easy test. Connect the transducer to your arduino and leave it sit. Monitor the readings every couple of hours for maybe a day and see how stable it is. After that, repeat the test but warm or cool the transducer, see how much it changes with temperature. See if the short term change is stable enough for you to even consider.

For any pressure transducer the most unstable parameter is the zero offset. Even in the most costly sensors this is the most difficult characteristic to keep stable. And the arduino is not what I would call a precision device.

So I think you should look at your goals from the application side. A good rule of thumb is one should use a transducer at about 2/3 of the max range. This means you will require transducers with different ranges.

You mentioned your expected pressure values but you didn't mention what you need to measure to accomplish your goals. Is it there or not there? Or do you need values?

I realize you must stay with the Arduino for readings. However if you expect any precision I strongly suggest you get one with this chip on it MCP3421

The delta sigma conversion is the key here. They are inherently low noise and rejecting most periodic noise. You will need three of these, one for each transducer and one for the 5V transducer supply. I thought there was another type of delta sigma converter with multiple input channels but I couldn't find it in a quick eBay search.

Hi John Robert, I was hoping you would chip in! Thanks for the great ideas. I have several transducers, 10, 30, 100&150psi max. The two water tanks have a max water level of 2.2m which puts it in roughly in the range of the 10psi units. The pool filter usually runs around 15psi, so I'll use the 30psi unit. House line pressure is limited by regulator to 3bars, so the 100psi unit works there. I characterized them all with a water column rig up to 3m over a couple of hours. Linearity was within acceptable range. As mentioned before, my rain water temp is quite stable at 19°C, maybe dropping by a couple during a rainstorm... Pool water varies between 25-30°C, depending on my solar thermal output... I'm almost done with the firmware work and will see, if I can jury-rig a water column system for all 4 sensors at the same time. Since the software is logging every 15mins, this will make for some interesting data to share. The plan would be power up the system, let it sit 10 mins, then record the 0m readings. Repeat in 24hrs, for 24hrs with 3m water column... This will sit in the workshop, so temperature swing will likely be about 10°C... I'll report back. Thanks again John Robert. I'll keep your recommendation about MCP3421 in mind!