In this section:
Warning Codes
Error Codes
Clearing Errors
Firmware Commands
System Messages
Log Output Explained
LED Status Indicator
The XAXXON POWER LiPO3S System Power Battery Management Board charges the 3 cell LiPo battery, allows continuous system up-time while switching back-and-forth between wall power and battery, and provides real-time statistics on individual cell voltages and current draw.
The embedded software employs fairly strict error checking, to enhance battery longevity and safety, so it’s not uncommon to see power system errors appear in the web browser remote interface. The error codes can be broken down into the categories ‘warning’, and ‘error.’ ‘Warning’ messages can be cleared from within the web browser interface, while ‘error’ messages will disable or limit charging until the code is cleared manually. (See the clearing errors section below).
Errors and warnings are reported as a historical list, so the message is shown even if the condition that caused it is no longer present.
Warning Codes
HIGH_CURRENT_SHUTDOWN – code 2
This occurs if the battery drain exceeds 4.25 amps, which is getting close to blowing the 5A fuse. This typically happens if one or more of the wheel motors are stalled (at 3.75 amps the java system turns off the motors automatically, but this error still may be thrown if the reaction isn’t quick enough). All system power is immediately shut down.
NO_BATTERY_CONNECTED – code 3
Occurs if no battery is plugged in
WALL_BRICK_LOW_VOLTAGE – code 4
Occurs if the voltage coming thru the dock from the power adapter goes below threshold. This is sometimes caused by a misaligned dock connection, and the system will automatically attempt re-docking. If this error persists and re-docking is common, make sure the wall power adapter plugs are securely attached, and try unplugging the adapter from the wall momentarily
OVER_DISCHARGED_PACK – code 5
Occurs if one or more battery cells drops below safe voltage. It could have been only for a few seconds, but under-voltage situations can cause internal cell shorts and off-gassing; it is a good idea to check the pack for excessive swelling. Charging will occur at a reduced current until the cells are within safe voltage range
PACK_DRAINED_TO_ZERO_PERCENT – code 6
Occurs if the battery is drained completely (but still within non-cell-damaging levels). The battery should typically be kept topped up to maximize longevity
NO_HOST_DETECTED – code 7
Occurs after prolonged operation with no communication with the host java server software (ie., no way to send warning emails).
Error Codes
SEVERELY_UNBALANCED_PACK – code 41
Occurs if individual cell voltages differ beyond an acceptable range, usually indicating a faulty or damaged pack. Charging is disabled
MAX_PWM_BUT_LOW_CURRENT – code 42
Occurs if little or no current is detected flowing into the battery when charging. Check for continuity in the fuse wiring between the ‘BATT SWITCH’ terminals on the PCB. Charging disabled
OVERCHARGED_CELL – code 43
Occurs if voltage of one or more cells are detected above safe range, usually indicating a faulty or damaged pack. Charging is disabled
REGULATOR_CANT_FIND_TARGET – code 44
Occurs when the target charging current can’t be reached; could be caused by an under-powered wall power adapter. Charging is disabled
UNABLE_TO_COMPLETE_CHARGE – code 45
Occurs if the battery fails to accept charge; could be caused by faulty or damaged pack. Charging is disabled
CHARGE_TIMED_OUT – code 46
Occurs if the battery fails to complete charging within the allotted time, could be caused by faulty or damaged pack. Charging is disabled
POWER_SOFT_SWITCH_FAIL – code 61
Occurs if the ‘powershutdown
’ command fails to kill power to the system. Occasionally this can be seen when the battery is fully topped up, but it could mean a circuitry fault. Charging is limited to low voltage
EEPROM_ROLLOVER – code 62
Occurs if warning and error codes fill the entire eeprom, potentially losing error history (and ability to diagnose problems). Charging is limited to low voltage
CURRENT_OFFSET_TOO_HIGH – code 81
Occurs if the current sensor is reading incorrectly, possibly due to a faulty or damaged sensor. Charging is disabled, and dock power needs to be removed (the Oculusprime Java application reacts to errors 80 and higher by un-docking and disabling future docking)
UNEXPECTED_CHARGE_CURRENT – code 82
Occurs if current is detected flowing into the battery when not intending to charge, indicating potentially faulty or damaged circuitry. Charging is disabled, and dock power needs to be removed (the Oculusprime Java application reacts to errors 80 and higher by un-docking and disabling future docking)
CONSISTENT_OVER_CHARGE – code 83
Occurs if charging current is higher than expected for extended time, possibly due to faulty or damaged circuitry. Charging is disabled, and dock power needs to be removed (the Oculusprime Java application reacts to errors 80 and higher by un-docking and disabling future docking)
NO_COMM_WITH_POWER_PCB
Occurs if the java application had communication with the Power PCB but lost it, potentially due to a faulty USB connection.
Clearing Errors
Codes 40 and higher require the error to be cleared manually, before resuming normal operation. This is a normal step in troubleshooting, to see if the problem persists, as long as you understand what the original errors were and are now physically present and closely monitoring the hardware.
NOTE: always feel free to email us a copy of the power log file (‘oculusPrime/log/power.log’) so we can help troubleshoot!
To clear errors, from within the web browser interface go to ‘menu’ > ‘advanced’ > ‘telnet text command’ and enter:
powercommand 4
This sends the single byte ‘4’ to clear the error history from the eeprom. Then enter:
powerreset
to reset the board.
If the error state contains a code higher than 80, you’ll have to clear the ‘force undock’ state in the java server application. Either restart the application, or enter the command:
state delete forceundock
Firmware Commands
From within the web browser remote interface, you can send commands directly to the board using the telnet command powercommand
. To view the board’s response/output, check the ‘oculusPrime/log/power.log’ file.
To enter a command, go to 'MENU > advanced > telnet text command'
and enter:
powercommand
command
CAUTION: entering the wrong command can adversely affect the board’s operation and cause damaging situations. Resetting the board can fix most situations (power cycle or issue telnet command ‘powerreset
’)
Where command is one of the following (case sensitive):
7
Report firmware version
s (lower case)
Read all error codes
B (upper case)
Clear all error codes only if all warning only
C (upper case)
Clear latest single warning code
4
Clear all error codes
6
Report battery capacity mAh. Note: capacity is adaptive, and is automatically set whenever the battery is drained to around 5%
5 {INT}
Set battery capacity mAh
D {INT} (upper case)
Set dock voltage, millivolts (default is 14000). This sets the minimum voltage from wall power adapter to set ‘docked’ status
E (upper case)
Report dock voltage, volts
F {INT} (upper case)
Set current mAh remaining, 1 byte percentage (0-100)
G (upper case)
Report safe current amps
H {INT} (upper case)
Set safe current milliamps (default is 4250). Battery current drains above this will cause immediate power shutdown. Warning current level (causing motor stop) is 500mA less. CAUTION: tampering with this setting can cause blown fuse or damage to system.
8
Erase entire EEPROM (warning: this will set battery capacity to default, erase all error code history, and set dock voltage, current calibration, and safe current to default)
System Messages
The PCB periodically outputs the following system messages, some of which are important to react to for battery safety reasons. NOTE: system message output is typically surrounded with “<>” braces
reset – indicates the microcontroller has just reset and is initializing
redock – indicates low voltage dock connection, re-docking recommended. The Oculusprime Java application reacts to this message by un-docking and re-docking the robot (failure to do so could result in overheating of contact points)
charged – charge complete
docked – dock status detected
undocked – un-docked status detected
wallpower – wall-power connection detected (system typically outputs ‘docked’ status after a short delay, unless the connection is inadequate, in which case the Oculusprime Java application reacts by backing the robot up and trying docking again)
shutdown – power will be cut to system after a short delay (if the host system immediately responds with a ‘w’ command, the delay is lengthened, allowing time for graceful OS shutdown)
power_error {CODE} – error or warning
high_current – high current drain detected. Oculusprime Java application responds to this by stopping motors
Log Output Explained
In the power log file (‘oculusPrime/log/power.log’) you’ll see something like the following, output from the board every few seconds:
docked 18%_charging cells:3.76_3.77_3.77_idle:3.74_3.77_3.75_sh:000_
sCV:13.61_sIV:14.26_pwm:158_amps:1.01_mAh:989_lV:11.26_cC:0.05_bP:0_eR:0
Breakdown:
18%_charging
– General status
cells:3.76_3.77_3.77
– Individual cell voltages
idle:3.74_3.77_3.75
– If charging active, individual cell voltages between charge pulses
sh:000
– If charging, indicates which balance shunt resistors are active (for each of 3 cells, ‘1’ indicates active, ‘0’ indicates inactive)
sCV:13.61
– If charging, indicates total pack voltage during charge pulse
sIV:14.26
– Indicates total pack voltage between charge pulses
pwm:158
– Charge current regulator duty cycle value
amps:1.01
– Current to/from battery (negative value indicates battery draining, positive indicates charge)
mAh:989
– Estimated battery mAh remaining
lV:11.26
– Latest recorded pack voltage when battery draining
cC:0.05
– Current sensor calibration offset
bP:0
– Pack positive terminal pFET state
eR:0
– Current error code
Led Status Indicator
The red LED (LED6) has the following states:
Off – Battery not charging
Steady On – Battery charging
Steady Flash – Error
Periodic pulse (Short flash every 1.5 seconds) – Low battery