Now that I was capturing reliable bytes of data, it was time to start decrypting what they meant. There are still a number of unknowns, but quite a few were identified simply by dumping the results in Excel and observing how the values changed. I also ended up hooking a car charger to the PV input on the charge controller and monitored an actual charge cycle while measuring voltages and changing the current from the car charger. This is tedious work with a fair amount of guessing, but it still pays off with much of the core necessary information identified.
Ultimately the trick is to get the Arduino to stream the data out to the serial terminal, using commas to separate data and the print line function to start a new line of data. This can be copied and then pasted into Excel using the text import function quickly and easily. With everything sorted into columns and rows, you can use the scatter graph feature to plot out the data and get an idea of what is being viewed. By logging data while doing controlled actions with the charger you can break down a lot of the mysteries.
Byte: Description (all conversion formulas are for the 12 volt operating mode)
1: The starting byte of the string, signified by both comm lines going high on the first bit. Displays battery voltage: High resolution. Value dependent on voltage mode (12, 24 or 48). Slope of 0.0755, offset of +.464
2: Current; divide by 2 to get real value.
3: Always reads a value of 126, undetermined purpose.
4: Appears to be related to wattage, but is inversed and not scaled linearly. Even applying a power doesn't yield accurate results. The results also don't match up perfectly to calculated wattage, but follows the trend.
5: PV Voltage: Slope of 0.350, offset of +.032
6: Battery Voltage: Low Resolution Scale: Conversion formula not determined yet
7: Battery Temperature: Conversion formula not determined yet
8: Almost always displays 174.
9: Status of the reset button/load or charge control selection
10: Bulk Charge Voltage Level: Slope of 0.0755, offset of +.464
11: Float Charge Voltage Level: Slope of 0.0755, offset of +.464
12: Transistor Temperature: Conversion formula not determined yet
13: Temperature Compensated Battery Voltage Comparator, increases over actual battery voltage as battery temperature rises. This causes the battery to stop charging at a low voltage if temperature is high. Slope of 0.0755, offset of +.464
14: Counter: Starts at 0, ends around 230, rolls over every minute
15: Undetermined, might be a status register, but rarely strays from 0
16: Undetermined, might be a status register, but rarely strays from 0
17: Duty Cycle: 128 = 100%, 0 =0%
18: Minutes on Float Charge, but only counts up to 23
19: Minutes on Bulk Charge, but only counts up to 11
20: Status Register: Yet to investigate
21: Status Register: bit 8: Transistor Over-temp, 7: unknown, 6: Bulk Charge, 5-1: Unknown
22: Status Register: Yet to investigate
23: Can been seen as a reasonably repetitive pattern, but undetermined what it is. Counts up from 0 to around 45, but usually rolls over after only a few iterations
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.