RPI LCT4V3 stack with RPI LCT8 application example

From lechacal
Jump to: navigation, search

We will demonstrate an application example of stacking together a RPI_LCT4V3 with a RPI_LCT8.

Mechanical considerations

The use of screw terminal connectors on RPI_LCT4V3 and RPI_LCT8 makes stacking challenging.

We are proposing here a solution using free plug connectors on the master board. These allow access to the bottom board connector and clearance to access the top board.

This is a solution for 2 boards stack. One master plus one slave. There is no options for stacking 3 boards or more at the moment.

Also it is worth mentioning each unit is assembled for a dedicated master/slave role. Unlike the other RPICT units these can not be converted from master to slave or vice versa. Each board is build with a predefined role.

Master RPI_LCT4V3

The master board RPI_LCT4V3 with the free plug connector is shown below:

IMG 1871 small.pngIMG 1872 small.png


Slave RPI_CT8

The slave board RPI_CT8 with standard screw terminals is shown below. Note the slave board could also be a RPI_LCT4V3 if required.

IMG 1874 small.png

2 boards stack

The combined stacking is shown below. Offering 3 Voltage ports and 12 Current ports. Making this a well suited device to monitor 4 three-phase systems.

IMG 1881 small.png IMG 1880 small.png IMG 1879 small.png

IMG 1878 small.png IMG 1877 small.png IMG 1876 small.png

Configuration

Here is a configuration example for a four 3-phase systems being supplied by the same line. The CT port will be associated as follow.

CT1 to CT4 on Master -> Phase 1 against V1
CT1 to CT4 on Slave  -> Phase 2 against V2
CT5 to CT8 on Slave  -> Phase 3 against V3

We plan to just display RealPower and Vrms. SCT-014 400A/5A is used for the example.

We generate the configuration using the web tool as below.

Stack config web-01.png

[main]
format = 3
nodeid = 11
polling = 5000
vest = 240.0
xpFREQ = 50
Ncycle = 20
kcal = 333.33 333.33 333.33 333.33 333.33 333.33 333.33 333.33 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 545.0 545.0 545.0 1 333.33 333.33 333.33 333.33 
phasecal = 0
Nnode = 12
Nchan = 15
HWSCT = 7 7 3 6 6 2 5 5 1 4 4 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
HWMCPSCT = 10 6 6 10 6 6 10 6 6 10 6 6 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
HWVOL = 2 1 0 2 1 0 2 1 0 2 1 0 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
HWMCPVOL = 10 10 10 10 10 10 10 10 10 10 10 10 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
CHTYPE = 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
CHID = 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
debug = 0

Running the configuration using debug = 1 reports a full scan interval of 4870ms. Polling of 5000ms is therefore well adequate. This could be reduced if opting for a number of cycles lower than the default 20.

Run time

With the above configuration the cat commands returns the following stream:

pi@raspberrypi:~ $ cat /dev/ttyAMA0
11 1.6 2.8 -0.5 -3.9 45.2 -0.1 -2.3 -0.0 0.7 -0.7 0.9 2.6 233.7 234.0 233.0
11 2.7 11.5 -7.5 -4.2 36.4 -7.3 -2.5 0.1 -2.5 -5.8 0.9 1.0 233.2 234.0 233.2
11 -0.5 5.1 -4.8 -9.5 18.8 -4.7 -7.9 0.1 -5.8 -8.7 0.9 -4.1 233.3 233.9 232.9
11 -5.2 5.5 -4.8 -2.9 3.1 -5.3 -12.1 0.0 -4.4 -8.8 0.5 -5.1 233.4 234.1 233.0

Only voltage is connected above. No load. No calibration has been performed (using default cal values).

Using a simple python script we can output this in a pretty way.


#!/usr/bin/python2
import serial
ser = serial.Serial('/dev/ttyAMA0', 38400)

try:
      while 1:
           # Read one line from the serial buffer
           line = ser.readline()

           # Remove the trailing carriage return line feed
           line = line[:-2]

           # Create an array of the data
           Z = line.split(' ')

           # Print it nicely
           print ("----------")
           print ("   \tP1\tP2\tP3\tP4\tVrms") 
           print ("L1:\t%s\t%s\t%s\t%s\t%s" % (Z[1], Z[4], Z[7],Z[10],Z[13]))
           print ("L2:\t%s\t%s\t%s\t%s\t%s" % (Z[2], Z[5], Z[8],Z[11],Z[14]))
           print ("L3:\t%s\t%s\t%s\t%s\t%s" % (Z[3], Z[6], Z[9],Z[12],Z[15]))

                      
except KeyboardInterrupt:
      ser.close()


Which outputs on the display below on the terminal

----------
   	 P1	P2	P3	P4	Vrms
L1:	4.9	7.2	3.5	9.5	234.0
L2:	13.0	-7.7	-0.0	-0.1	234.8
L3:	5.3	5.8	6.2	7.4	233.6