SenseCAP Solar P1 voltage detection

On one of my SenseCAP Solar P1 units, the MeshCore app shows a battery voltage of about 7.9–8.0 V, while on another similar SenseCAP Solar P1 the reading looks normal at around 4.1 V.

This is the battery voltage detection code from the MeshCore firmware (Arduino/PlatformIO), are there P1 variants or is there a manufacturing issue with some units detecting voltage incorrectly? It’s strange that it would only report incorrect values on some P1 units.

#define BATTERY_PIN             (16)    // Read the BAT voltage.
#define AREF_VOLTAGE            (3.0F)
#define ADC_MULTIPLIER          (3.0F) // 1M, 512k divider bridge

uint16_t getBattMilliVolts() override {
    digitalWrite(VBAT_ENABLE, LOW);
    int adcvalue = 0;
    analogReadResolution(12);
    analogReference(AR_INTERNAL_3_0);
    delay(10);
    adcvalue = analogRead(BATTERY_PIN);
    return (adcvalue * ADC_MULTIPLIER * AREF_VOLTAGE) / 4.096;
  }

Any Seeed engineers here that can have a look at this?

Hi there,

SO , may I ask have you checked them with a Meter ? each battery?
The reason is that the normal reading you see on one P1, around 4.1 V, makes sense for a single-cell 18650-based unit. Seeed’s docs for the SenseCAP Solar Node describe the P1/P1-Pro around 18650 battery usage, not a 2-cell battery system.

If the real battery voltage is normal but the firmware reports ~8 V, then I would suspect a board revision or BOM difference in the battery measurement path rather than a battery problem.

  • a different resistor divider / hardware revision
  • or firmware using the wrong ADC scaling for that unit

The fact that the bad reading is roughly double a normal cell voltage is a strong clue.

Bump,

HTH
GL :slight_smile: PJ :v: