Driver for Honeywell pressure sensors of HSC... and SSC... series available

203 views
Skip to first unread message

Andreas Riegg

unread,
Sep 2, 2015, 3:47:59 AM9/2/15
to WebIOPi
Hi all,

as follow-up to this thread

https://groups.google.com/forum/#!topic/webiopi/ZKfkXWdj5ss

I have implemented a driver for those chips and completed it last night. It is functionally finished now, but due to the lack of a concrete chip in my hands untested so far. Maybe someone having such chips wants to do this test and help finalizing this driver.

You find the two needed files attached. As usual for WebIOPi sensor drivers, the files go into the .../sensors subdirectory and the new __init__.py replaces the original one.

Cheers,
Andreas
honXXscXX.py
__init__.py

Andreas Riegg

unread,
Sep 8, 2015, 3:23:06 AM9/8/15
to WebIOPi
Hi all,

I was able to test the driver now with simulated I2C and SPI calls so it should be working also with real chips.

I did some overall refactoring and added suppport for the ABP... sensor series, so now the driver supports all sensors of the Honeywell HSC..., SSC... and ABP... series (all those with digital output).

For sensors that support pressure and the optional temperature output you can choose to only get the pressure value or both values by selectiong different device classes.

In the course of refactoring I also changed the driver filename. All notes on driver usage and config file options are documented in the driver file comment section.

Cheers,
Andreas
honXXXpressure.py
__init__.py

Ed Spiridonov

unread,
Nov 5, 2015, 7:45:55 PM11/5/15
to WebIOPi

On Tuesday, September 8, 2015 at 10:23:06 AM UTC+3, Andreas Riegg wrote:
Hi all,

I was able to test the driver now with simulated I2C and SPI calls so it should be working also with real chips.

Did you make tests on real devices?
I tried to do tests of ABPLANT005PG2A3 sensor in 0-50°C temperature range. And sensor output is strange.

Specification say:
The ABP Series is fully calibrated and temperature compensated
for sensor offset, sensitivity, temperature effects, and non-
linearity using an on-board Application Specific Integrated Circuit
(ASIC).

But for me sensor shows different values for the same pressure when temperature changes.
I connect nothing to pressure port, so reported pressure must be around 0.
Chart is attached, X axis is raw "temperature" value, Y axis - raw "pressure" vaule.
I suppose that temperature compensation is broken there.

What do you think?


P.S. Sorry, my english is bad. But I hope this mail is understandable )

Ed Spiridonov

unread,
Nov 5, 2015, 7:48:33 PM11/5/15
to WebIOPi
Oops, chart was missing in previous mail.
abp.png

Ed Spiridonov

unread,
Nov 5, 2015, 8:50:20 PM11/5/15
to WebIOPi
On Tuesday, September 8, 2015 at 10:23:06 AM UTC+3, Andreas Riegg wrote:
I did some overall refactoring and added suppport for the ABP... sensor series, so now the driver supports all sensors of the Honeywell HSC..., SSC... and ABP... series (all those with digital output).


BTW, I found that the same protocol is used by MS4525DO sensors, so these support could be added with almost no effort.

Andreas Riegg

unread,
Nov 6, 2015, 4:12:44 AM11/6/15
to WebIOPi
Hi Ed,

no I was not able to test the driver with real devices as I don't have them :-(

On the other hand, the device that you tested (ABP.......A3) is according to chip spec a version without compensated temperature output so you can't really rely on the temperature values from the device.

But anyhow, I would not expect the effect that you see comes from the driver because the driver does not use any temperature value to calculate the pressure. It just uses the 2 registers with the pressure raw data. The ABP series are the "basic" lower accuracy chips, maybe what you see is just the effect of a not so ideal temperature compensated pressure value of a lower price chip.

Additionally, if you look at the chip spec, the error range is in the area of very low pressure (you mention nothing connected, so this is the 0 PSI point) 3 times higher than in the "normal" pressure range. Maybe you redo the test with a constant higher pressure input connected to the sensor input and see what happens when temperature changes (assuming that you can keep this external pressure constant when temperature changes which may be hard to achieve .... physics still matter).

It looks you are right with the MS4525DO sensor families, the protocol and formulas look to be a 1:1 copy of the Honeywell sensors. For a first try it will be ok to just select the appropriate Honeywell subtype from the HONXSC... classes as the MS chips have transfer functions of type A and B. The unit parameter has to be "psi" and pmin and pmax have to be selected correct according to the subtype of the chip.

Cheers,
Andreas




Ed Spiridonov

unread,
Dec 7, 2015, 8:59:59 PM12/7/15
to WebIOPi

On Friday, November 6, 2015 at 12:12:44 PM UTC+3, Andreas Riegg wrote:
Maybe you redo the test with a constant higher pressure input connected to the sensor input and see what happens when temperature changes

I did the test under pressure and got the same result.


 
The ABP series are the "basic" lower accuracy chips, maybe what you see is just the effect of a not so ideal temperature compensated pressure value of a lower price chip.

Correlation is pretty linear and it seems to be very easy to fix.
I don't believe that compensated sensor should provide such output if temperature changes.

Andreas Riegg

unread,
Dec 10, 2015, 7:40:41 AM12/10/15
to WebIOPi
Hi,

at the bottom line, the driver just reads the raw sensor values and calculates the pressure value according to the chip spec from Honeywell, so there looks to be no hint what may cause the problem on driver level.

I have created an updated driver that allows to monitor the raw sensor values. Find it attached.

If you run WebIOPi with the debug option set to true and putting the log into a specific file:

sudo webiopi -l mylog -d

you will find inside the log file entries like


... WebIOPi - DEBUG - HONI2C: Raw data = 0[0x06] 1[0xA4] 2[0x00] 3[0x00]

and you may be able to see if any pattern (e.g. via grep ... ) can be detected regarding the raw values.

The first two bytes (0,1) represent the raw pressure value, the second two bytes (2,3) the raw temperature value.

If only the pressure API is used, only the first 2 bytes are read for eficiency.

Cheers,
Andreas

honXXXpressure.py

Ed Spiridonov

unread,
Dec 10, 2015, 10:16:42 AM12/10/15
to WebIOPi
On Thursday, December 10, 2015 at 3:40:41 PM UTC+3, Andreas Riegg wrote:
at the bottom line, the driver just reads the raw sensor values and calculates the pressure value according to the chip spec from Honeywell, so there looks to be no hint what may cause the problem on driver level.


I understand that. My post was about senor, not about your driver.
Reply all
Reply to author
Forward
0 new messages