Go Down

Topic: I2C Address Change for NPA 201-EV Sensor  (Read 1 time) previous topic - next topic


I have 10 NOVA sensor NPA 201-EV evaluation boards and one Arduino Uno. The 201-EV is an I2C device, the spec sheet says they have an address of 0x27, but the units I have are all 0x00. I need to change the I2C addresses on each device to a unique number. The spec sheet says the procedure is detailed in application guide AAS-910-290. The application guide warns that these devices can only have their address changed up to 3 times and after that can't be changed anymore. I know just enough coding to be dangerous, but not enough to read I2C spec sheets down to the byte level. Does anyone have a sketch that can be ran on an Arduino Uno that can safely changes the I2C address on these sensors?

Dan P


Apr 25, 2018, 01:04 am Last Edit: Apr 25, 2018, 01:07 am by jremington
but the units I have are all 0x00.
How did you determine this?

That is not a legal I2C address, and the I2C_Scanner program won't ever detect it.

You probably wired the sensor incorrectly, possibly without pullup resistors, or there is a voltage mismatch. Post the details, as described in the "How to use this forum" post.


Apr 25, 2018, 01:24 am Last Edit: Apr 25, 2018, 01:25 am by Koepel
Search for "NPA 201-EV" on this forum and on Github. There is code on Github to change the address: https://github.com/AmphenolAdvancedSensors/Novasensor/blob/master/NPA700_ChangeAddress.ino. You have to check if that code will work for the 201-EV.

jremington is right about I2C address 0x00. That is the broadcast address, and devices with that I2C address are not supposed to reply with an acknowledge. That means the Arduino Wire library can not use it.
If they are indeed accidently at I2C address 0x00, and they do give an acknowledge, then you can alter the I2C Scanner to scan I2C address 0x00 as well.
The I2C Scanner will not change things, you can safely use it.


Apr 26, 2018, 08:07 pm Last Edit: Apr 26, 2018, 08:10 pm by hitecdan
The spec sheet says 0x27 with a little footnote stating that some early released units are set to 0x00. I hooked all 8 to an adafruit TCA9548A I2C MUX and ran a sketch they supplied that read the I2C addresses of the devices attached to the MUX, they all came up as 0x00. Pull down resistors are on the evaluation board. These unit will die if supplied 5v, they are a 3.3v device.

I've one of these devices setup right now on address 0x00 and it spitting out pressure and temperature data just fine.

Thanks for the github link, I'll check it out.


Jul 24, 2018, 10:51 am Last Edit: Jul 24, 2018, 10:58 am by AmphenolSensors
Some of the early production units were shipped with address 0x00, which means they will resond to every request on the bus. Later ones are address 0x27.

We did some code https://github.com/AmphenolAdvancedSensors/Novasensor/tree/NPA-201

posted on github to change this.

The sensor address is paged, so only cchange once, and you will need control of the power line to get the sensor into command mode. And remember, it is 3.3V device, it really doesn't like 5V as I've found more than once when I forgot. Unlike some of our other sensors which are resilient.



in a similar vein, I want to use two Amphenol NPA sensors on same I2C bus.
I want to re-program address of one part in-circuit.
For this application the Application note states to use:
"Application hardware configured to allow isolation of individual sensor for programming."

What _exactly_ does this "isolation" mean.
- I2C Mux/Bridge ?
- Jumpers removed/inserted ?
- Power isolation. (i.e. is removing the power from one sensor a correct way to isolate or will the un-powered device screw up the I2C communications to the other device ?)

Since the sensor does not have a reset pin, I guess we do need to switch power to the device ?


In the same github area as mentioned above is some code to change the address of the NPA-700 series.

In order to get the sensor into command mode you need send a command quickly after the sensor is booted, so the way to do this is use a digital output as power supply, so the Arduino has control of the timing.

Go Up