Using the NodeLynk Device

Good day,
I am currently using your I2C (LPS25HB) pressure sensors and working on a project where I need to take multiple measurements simultaneously. I have looked into multiplexers but found that these multiplexers switch between the sensors and do not concurrently record the values from the sensors. My sensors will be placed onto a high-speed fan and thus I require the readings to be synchronized. I want to connect up to 16 sensors.

Could you possibly assist me with a product that will be able to do this? I have read into your NodeLynk devices but found nothing on the speed of the devices.
I would appreciate your help in understanding how these devices work and also what you would recommend for the situation.

Kind Regards
Pieter Joubert

Hi Pieter,

The LPS25HB only has one configurable I2C bus address bit. This means only 2 LPS25HB can be used on a single I2C bus. It is possible to use an I2C Bus multiplexer such as the PCA9547 which would give 8 I2C busses, meaning you could have up to 16 LPS325HB sensors. This would require setting the bus of the multiplexer, reading the 2 sensors on that bus, then switch to the next bus, read those 2 sensors, and so on. This switching is quite fast, I’m sure the PCA9547 data sheet has some information on possible switching speed. It would be good to know how quickly you need to obtain readings from all 16 sensors(maximum latency).

Hi Travis,
Yes, I have seen that the multiplexers are available. It is an option I am considering.
Ideally, I want to take all of the measurements at exactly the same time, but I have not yet found an option that allows this. If you know of something that would be appreciated.

Regarding the multiplexer that you mentioned above. I found that it operates at a clock frequency of 400kHz. This is good if nothing else is available. I also saw on the website the " I2C Converter with Dual Serial to 8-Port Hardware I2C" which can operate at a clock frequency of 700kHz. Does this fulfill the same function as the multiplexer? Also, if I would like to use either of these options, what are all the components that are required to make it work?

Kind Regards
Pieter

Theoretically it is not 100% possible to read all sensors on an I2C bus at the same time. Each must be addressed individually. I highly doubt you find a reasonable solution to read all 16 points at exactly the same millisecond. There has to be some latency allowance.

Hi Travis,
Thanks for helping.

Your " I2C Converter with Dual Serial to 8-Port Hardware I2C", device. Does this provide the same function as the multiplexer, just with the communication to the PC included? Is it possible to use this device without a microcontroller and only use a microcontroller as the receiver of the data?

Kind Regards
Pieter Joubert

Hi Pieter,

Yes, That is basically an I2C bus multiplexer connected to a processor that runs custom firmware that interprets commands over the serial interfaces to relay accordingly to the I2C ports.

Hi Travis, I am currently using your PCA9547 multiplexer and I am having problems with reading the correct values from the correct channel. At the moment, if I only connect one LPS25HB sensor to lets say channel 0, then channel 1,3,5,7 will read the address of the sensor and display values. However, if I connect a sensor on channel 3, the channel 4, 5, 6, 7 will display values.

I would appreciate if you can help me out?

Kind Regards
Pieter

Hello, is there anyone available to please help me out?

@ryan1 can you look into this

I have not heard of or experienced this type of behavior with the I2C multiplexor, please examine the board carefully to see if there is any bridging of the solder joints. Also, make sure the controller is NOT placed on top of the included conductive plastic bag, as this will short out the bottom of the board. Please review the commands you are using for channel selection, they are not the same as smaller multiplexors, so you must send the correct commands to the Mux to get it to properly change channels. To clarify, what is the actual part number printed on the circuit board?

Hi Ryan, thanks for reaching out.
I cannot see any riding of the joins, everything looks fine. I also have not yet used it on te conductive bag, I currently place it on bubble wrap to protect the surface.

Maybe you can help me out with the software. Currently, I use the Arduino IDE and the wire library. I will include some of the code I use as activation below.
The part number is: PR12-17.

Code:
void enableMux(void){
Wire.beginTransmission(MUXADDR);
Wire.write(ENABLE_MASK);
delay(50);
Serial.println(“Mux Enable!”);
Wire.endTransmission();
}

Thanks for your help.

Hi Pieter, please remove it from the bubble wrap, this too is commonly conductive, place on a solid non-conductive surface, you would not believe how often we have seen this as a sole problem. @Bhaskar, is there is Arduino Library for this?

Hello Ryan,
I found the fault. It appears that the datasheet for the product is wrong - if I do not miss anything. The datasheet shows that the control register is as seen in the picture below. However, this is not how the device is wired but rather each bit activates one channel of the multiplexer. For Instance to power up channel one you will write 0x01 to the register and not 0x80 as specified in the sheet.
Regards
Pieter

HI Ryan, have you possibly had time to look into this? I want to know if I am possibly missing something.

Regards
Pieter