So what does all the heavy lifting in this controller? Its got to be the Dallas I-wire chip. The DS2438 Smart Battery Monitor. Designed for portable applications with rechargeable batteries, it scales very well to stationary huge installations
To quote from the spec sheet...
- Unique 1-Wire® interface requires only one port pin for communication
- Provides unique 64-bit serial number
- Eliminates thermistors by sensing battery temperature on-chip
- On-board A/D converter allows monitoring of battery voltage for end-of-charge and end-of-discharge determination
- On-board integrated current accumulator facilitates fuel gauging
- Elapsed time meter in binary format
- 40-byte nonvolatile user memory availablefor storage of battery-specific data
- Reverts to low-power sleep mode on battery pack disconnect
- Operating range -40oC to +85oC
- Applications include portable computers, portable/cellular phones, consumer electronics, and handheld instrumentation
It does a lot more than this - like the current measurement as well as charge accumulation, saving the total life charge in and out. Pretty much the whole interface to the battery bank is through this chip.
The other interfaces are a 1-wire GPIO chip that simulates a push button remote control on the inverter, an interrupt input to the Arduino to measure RPM, a PWM output from the Arduino to control the shunt load and general I/O lines for scanning the push buttons and outputting to the LCD.