Problems getting data from 8 channel power monitor (PR3-6)

I am trying to use the PR3-6 connected to a third party SBC to measure the power being used on a 12VDC circuit, but cannot seem to get valid data from the board.

The SBC recognizes the board at I2C address 0x48. I have downloaded and built the small C test program that does a single read of channel 0. The program runs without error; the correct number of bytes are written (1) and read (2).

I have a load connected as in the diagram off the product page: +12 VDC into the load (a webcam); the negative lead from the load to the #1 IP+ screw terminal; #1 IP- screw terminal connected to ground. The webcam is operational and is using about 2.5W.

The problem is that the data coming from the PR3-6 is out of the expected range and does not change when a load is connected. The data varies from about 255 to about 382 (decimal), whether there is a load or not. I get the same values on all eight channels, only one of which has a load going through it at this point

Based on the documentation, I would expect a mid-range value (about 2500) for a channel with no load, but as I say, none of the channels are reading above about 400, even the ones with no connections to their screw terminals.

I get the feeling that the test program is not actually communicating with the ADS7828, as the numbers coming out are a bit nonsensical.

I have tried different addresses for the chip, but the results are the same. Similarly, I tried different positions for the other two jumpers (I2C 5V and Pull Up), to no avail.

Any help or suggestions would be appreciated.

Thanks,

jw

HI,
i will recommend trying out this lib

Thanks

I’ve installed the libraries and, after updating the python code to use the correct bus and address and running, I am still not getting any useful values. Any suggestions, or just an RMA?

root@ts-imx6ul:~/Raspberry_Pi_ADS7828_12Bit_8Channel_ADC_Python_library# python ADS7828_Differential.py
Enter the Channel No. = 0
Digital Value of Analog Input : 1


Enter the Channel No. = 1
Digital Value of Analog Input : 1


Enter the Channel No. = 2
Digital Value of Analog Input : 1


Enter the Channel No. = 3
Digital Value of Analog Input : 1


Enter the Channel No. = 4
Digital Value of Analog Input : 1


Enter the Channel No. = 5
Digital Value of Analog Input : 1


Enter the Channel No. = 6
Digital Value of Analog Input : 1


Enter the Channel No. = 7
Digital Value of Analog Input : 1


Enter the Channel No. =

ADC needs to be used in single ended mode not in Diff.

OK. The Differential script is the only one in the library you pointed me to. I can make the change to single ended (0x80).

What are the correct settings for the internal/external reference and A/D enable/disable bits?

Thanks,

jw

I filed for an RMA on this product, but took one more shot at trying to figure it out.
Turns out the board is fine, but the software interface is not well documented.

For anyone else that comes this way, I have the following:

  1. As mentioned above, use single ended mode (0x80) when requesting data. Do not blindly use the Raspberry Pi library mentioned above, as it uses differential mode.
  2. Turn the internal reference clock on. Doesn’t seem to matter whether the ADC is turned on or off between readings, so a value of 0x0C for the lower nibble seems to work.
  3. The channel selections do not match the silk screening or layout of the board. For instance, the inputs labeled 2 on the board are mapped into channel 4 on the ADS7828.
  4. With no load, all eight channels return about 2500, as advertised. However, to achieve any level of accuracy, you’ll need per-channel offsets to correct each channel back to ‘zero’ (2500).
  5. To convert the counts to amps, subtract off the 2500 and the per-channel offset to get the number of counts, then divide by about 187.

Those are my findings, YMMV

jw