Xantrex SWCA Solar Inverter Interface Project
A few years ago I decided to install a small PV system consisting of 1000 watts of solar panels, a Xantrex inverter, Outback MPPT power regulator, and a bank of batteries. The system is mostly an off-grid design, although I have the Xantrex GTI (grid-tie interface) to "sell" power to the grid.
The Xantrex inverter has a local display for programming and monitoring, and an option for a "remote" display, which duplicates the built in display on a 25 pin cable. At some point the Xantrex engineers decided a serial computer interface was needed, so the SWCA was provided. At a cost of about $200 it was an expensive addition to the system, so I decided to pass on it when I was installing my system with hopes to add one later, or design one of my own.
The Xantrex inverter line has been discontinued and the SWCA is no longer available....
Recently, I was contacted to repair a lightning-damaged SWCA. In this process I decided to reverse-engineer while debugging the unit. Below are my notes and schematic. This is provided for educational and hobby use only. Any copyrighted information probably still belongs to the original owner or may have been transferred to other parties, so you may not be able to use this information to sell a product with the same design without permission. However, you should be able to build one for your own use, or use this information to design your own.
I hope to design a far more useful interface, perhaps with an Ethernet interface using an Arundo or Raspberry Pi board. If you are able to use these notes for your own design or you have questions please share and I will post here. My e-mail address is Please include "SWCA" in the subject line.
I have been repairing these for people that have had failures due to lightning strikes and electrical surges, etc. If you have one that has failed I'll be glad to provide a quote for repair. I have also had some interest in constructing a clone of the SWCA and have put together a circuit board layout with some enhancements to the original design. If you are interested please let me know at the e-mail address shown above, be sure to include "SWCA" in the subject line.
SWCA Project notes.
The module is based on the 89c4051 flash programmable CPU (SWCA version 1.02, earlier versions used the 89c2051). The 8 bit I/O Port 1 of the CPU is directly connected to the parallel port of the inverter. Port 3 is used for the interface control and serial interface to the RS232 and a I2C-Bus to communicate with the PCF8574AT 8 bit I/O port and the 24LC4B 4K serial flash memory. The PCF8574AT bits control the LED and toggle the DG417 switch which connects the serial bus to RS232 serial out, and one bit to the RST pin of the inverter. The 232ACBN converts the TTL signal to RS232 levels and also provides the +/- 12V to the DG417. (update 10-15-15) The DG417 is used to float the transmit line when you are using several SWCA's tied together so only one device will transmit at a time. The 24LC4B memory stores the SWCA unit number as well as some configuration information that can be programmed with the SWCPS.exe software that was provided on the floppy that shipped with the SWCA.
I determined the 25 pin interface pinout from the Xantrex inverter display. The external display port (25 pin interface) in in parallel with the internal display. The schematic and notes are below.
SWCA Schematic (click on drawing for larger version).
Program binary image (for 11.0592Mhz crystal): SWCA.bin
Program binary image (for 22.1884Mhz crystal): SWCA-22.bin
Program disassembly: SWCA.ASM (updated 12-29-13) Work in progress, check back often. If you want to help with the disassembly please e-mail sections and I will include the changes in the file.
Eagle Cad project: SWCA_Eagle_Cad_project_files.zip (not complete, some errors)
I have bread-boarded a unit (see photos below). It works, but I discovered that the crystal is the wrong frequency. The crystal on the original unit I repaired and reverse-engineered didn't have any markings and I returned it after I repaired it before I measured the clock frequency. Other similar designs used a 11.0592Mhz crystal and the timer setup bytes seemed to be a value that would create a baud rate clock for 9600 baud with a 11.0592Mhz crystal so I assumed that was the value. However after construction and testing of my prototype it is operating with a baud rate of about 4800 baud. The proper clock must be about twice, perhaps 20Mhz. I could leave it with the 11.0592Mhz crystal and 4800 baud rate, however on the original unit it would scan through the menus when first connected to the SW inverter, mine doesn't do that, however it does respond to commands and displays meter readings, etc. The baud rate may also not be exactly 4800 because I get some garbled characters occasionally. I will need to do more research with the baud rate timer setup to get the correct value of crystal.
Update 12-29-13. The correct crystal is 22.1184Mhz. However, I have updated the source code to allow for a 11.0592Mhz or a 22.1184Mhz crystal.
Update 10-15-15 Measured the crystal frequency as 22.12568Mhz. An extra bypass capacitor across the power on the MAX232 (232ACBN) chip helps with communication problems. This is also true on the original SWCA's, which have a poor ground path on the circuit board layout.. Also found that the correct mode (06 00) needs to be set with the SWCPS program for stable operation. On the ones I have been repairing I have added surge suppressing diodes (P6KE27CA) on the RS232 transmit & receive lines to ground and grounded to the DB25 shell. That may prevent some of the static and surge failures I have been seeing.
Datasheets and app notes:
Photos of the Xantrex SWCA:
Top view, 89c4051 removed.
Bottom view,dg417 removed.
Xantrex Inverter internal Display notes:
SWCA interface pinout: (DB25)
01) V+ 5V
02) NC or Gnd
07) DB6 [LCD pin 14]
08) DB4 [LCD pin 11]
09) DB2 [LCD pin 9]
10) DB0 [LCD pin 7]
14) LCD Enable [LCD pin 6]
16) LCD Read/Write [LCD pin 5]
17) LCD RS Data/Instruction [LCD pin 4]
18] Read Switch/Enable
19) Write LEDs enable (latch)
20) DB7 [LCD pin 13]
21) DB5 [LCD pin 12]
22) DB3 [LCD pin 10]
23) DB1 [LCD pin 8]
LED and switch bits:
DB0 over current set+
DB1 float set-
DB2 AC2 menu up
DB3 inverting menu down
DB4 error menu ->
DB5 line tie menu <-
DB6 AC1 on/off
DB7 bulk Gen
LCD is an HD44780 based LCD display (I think) with 2 lines &40 chrs. Numbers in  are LCD module pins.
You can find documentation on the HD44780 based LCD on the internet. The SW inverter interface (DB25) port was initially designed as an external keypad and display, basically a duplicate of the internal keypad/display.
The SWCA is a PIC processor designed to emulate the keypad/display and interface to a serial port as a display terminal emulation. To talk to the SW inverter you will need to emulate the HD44780 registers to read data and emulate the pushbutton switches to request data from the SW inverter. You could also just build an external display. Parts used in the internal display are two 74HC573 (8 bit latches to latch the LEDs and pushbuttons) one 74HC14 (to debounce & buffer the enable for the LCD display) and an LCD display with assorted resistors & capís etc. I have a rough schematic of the internal display, posted below (click for larger image) Note that U1 is the LCD display.
********** Under Construction ***********