pdf-icon

Arduino 上手教程

2. 设备开发 & 案例程序

6. 应用案例

Chain DualKey Power 电源管理

Chain DualKey Power 电源管理相关 API 与案例程序。

案例程序

编译要求

  • M5Stack 板管理版本 >= 3.2.4
  • 开发板选项 = M5ChainDualKey
cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
#define PIN_ADC_CHRG 9
#define PIN_ADC_BATT 10
#define PIN_ADC_VBUS 2

float chgVoltage;
float batVoltage;
float usbVoltage;

void setup() {
  pinMode(PIN_ADC_CHRG, INPUT);
  pinMode(PIN_ADC_BATT, INPUT);
  pinMode(PIN_ADC_VBUS, INPUT);

  Serial.begin(115200);
}

void loop() {
  chgVoltage = analogRead(PIN_ADC_CHRG) / 4095.0 * 3.3;
  batVoltage = analogRead(PIN_ADC_BATT) / 4095.0 * 3.3 * 1.51;
  usbVoltage = analogRead(PIN_ADC_VBUS) / 4095.0 * 3.3 * 1.51;

  if (chgVoltage >= 1.4 && chgVoltage <= 1.8) {
    Serial.println("Battery is charging");
  } else if (chgVoltage > 1.8 && chgVoltage <= 2.4) {
    Serial.println("Battery is full");
  } else if (chgVoltage > 3.0) {
    Serial.println("Battery is not charging");
  } else {
    Serial.println("Battery charging status is unknown");
  }

  Serial.printf("Battery voltage: %.4f V\n", batVoltage);  // Unit: V
  Serial.printf("    USB voltage: %.4f V\n", usbVoltage);  // Unit: V

  Serial.println();
  delay(1000);
}

该程序将检测电池充电状态、电池电压、USB 输入电压,每秒向串口输出一次:

关于电池充电
只要连接外部电源,无论开关拨到什么位置,都会给电池充电。
On This Page