Honeywell HSCMRNN030PDSA3 Sensor

Hello this is my first post so sorry if it is not in the correct section.

I recently purchased the Honeywell sensor, and I was wondering if there is a sample code to begin to test it out via i2c 0x28 on an Arduino board.

Thanks!

Hello,

I did not find any sample code to begin working with, but I did find a Honeywell document that explains the details of I2C communication with their digital pressure sensors.

All of the resources for part number HSCMRNN030PDSA3 are located on the TruStability™ HSC Series product page, and in particular, there is a I2C Communications guide in the Technical Note section that shows the details for addressing, packet readout, etc., needed to incorporate into your code.

Thank you so much!

Hi carlos.ezio,

Here’s a link to a GitHub repository that Petre Rodan wrote to read TruStability HSC series pressure sensors via I2C with an Arduino. I have not tested it, but it might be a good starting place.

Also, we sell a Honeywell evaluation board, the SEK001, which can be used to demonstrate the capabilities of HSC sensors. They provide software to program an Arduino and display the readings on your PC. Unfortunately, it looks like they only provide hex code for the Arduino, but it still may be useful to quickly view the output of your sensor.

Hello, I was able to make some progress and got the following code to work:

#include "Wire.h"
#define addrs 0x28 // I2C bus address

void setup(){
Wire.begin();
Serial.begin(9600);
}

void loop(){
   byte lobyte;
   byte hibyte;
   int Press;
     
   Wire.beginTransmission(addrs);
   Wire.write(1);       
   int x = Wire.endTransmission();

   //Serial.print("endTransmission: ");
   //Serial.println(x, DEC);
     
   Wire.requestFrom(addrs, 2); // contents of your first two registers
   while(Wire.available() < 2 );{          // Check for data from slave   
      delay(1000);
      lobyte = Wire.read();       // Read press high byte
      Serial.println(lobyte, DEC);
      hibyte = Wire.read();      // Read press low byte
      Serial.println(hibyte, DEC);
     
      //Press = toPressure(hibyte, lobyte);
      //Serial.print("Pressure: ");
      //Serial.println(Press);
     
      delay(1000);
   }
}
   
   
float toPressure(byte hi, byte lo){
  int t = (hi * 256 + lo) & 0x3FFF;  // see pdf, mask 14 bit
 
  float rv = (t - 1638.0) / 30.84 + 600.0;  // (t - 1638.0) * 0.032425422 + 600.0 // faster
  return rv;
}

I am now getting two values read from serial monitor, but am not sure how to convert these to the output that is specified by the Honeywell datasheet

Hi Carlos,

I have not looked through your code in detail yet, but I just noticed that the part number you mention above, the HSCMRNN030PDSA3, has a SPI interface rather than an I2C interface (called out by the “S” near the end of the part number).

Which version do you have?