1.3.1-rc.1+ change to Boron solar charging (via VUSB) behavior

I performed a few preliminary Solar tests w/ 1.5.0 RC-1 on a Boron LTE.

SystemPowerConfiguration does appear to behave with Solar Panels.
I’ve only tested Li-Po recharging while operating, and with EN pin Shutdown.

I perform my own Curve Traces for each Solar Panel, with a High Powered LED test Stand.

For Instance:
A 0.5 W Seed Studio Panel will produce at 480 mW at 5.1Volts on my test stand during a Curve Trace (max power is actually at 6V, but the PMIC doesn’t have a setpoint above 5.08V).

The Boron LTE on 1.5.0 rc1 will manage the Li-Po charging Current to keep the panel at 5.1 volts [based on conf.powerSourceMinVoltage(5080)] .
After connecting the 0.5 W panel to the Boron Vusb Pin, the Power entering the Li-Po was measured at 390 mW. Once you add the 64 mW that the Boron consumes, that’s 454 mW being harvested from the 500 mW “rated” solar Panel. That’s very close to the 480 mW from the Solar Panel’s Curve Trace for my test stand…or ~95% efficiency.
The tests used a discharged Li-Po at 3.82V resting for Re-Charge.

A 1W Seed Studio Panel charged the Li-Po at 760 mW.
A 2W Voltaic Panel charged at 1055 mW.
These were just quick tests, so I may be hitting the current limits of my quick wiring, so don’t let the 1W and 2W results discourage you.

I haven’t measured charging currents during or after Sleep events yet.
The charging does work with EN Pin shutdown, like the good-ole days.

Code based on the Example App provided in the PR

SYSTEM_THREAD(ENABLED);

void setup()  {
 SystemPowerConfiguration conf;
   
    conf.powerSourceMaxCurrent(900)  // Set higher than I need
        .powerSourceMinVoltage(5080) // Most important for Solar Panels.
        .batteryChargeCurrent(1024)  // Set higher than I need
        .batteryChargeVoltage(4208)  // Be Careful here.
        .feature(SystemPowerFeature::PMIC_DETECTION) 
        .feature(SystemPowerFeature::USE_VIN_SETTINGS_WITH_USB_HOST);

 int res = System.setPowerConfiguration(conf); // returns SYSTEM_ERROR_NONE (0) in case of success
} // end setup()

void loop()   {
}
4 Likes