Skip to content

電源管理(AXP192)

概要

外部からの電源入力(USB or 外部電源端子)と、内蔵バッテリー充放電管理、LCDバックライトの明るさ管理などを行う。

概要図

データシート

Doxygenドキュメント

メンバー

コンストラクタ AXP192()

処理なし

AXP192::AXP192()

開始 begin()

各種初期化

void AXP192::begin(bool disableLDO2=false, bool disableLDO3=false, bool disableRTC=false, bool disableDCDC1=false, bool disableDCDC3=false)

各種機能を初期設定できます。通常は指定なしで、特殊な設定をしたい場合には初期値を指定します。初期化後に個別に設定することも可能です。

電源ボタン取得 GetBtnPress()

IRQステータスレジスタ3を取得。電源ボタンの状態を取得しています。 1秒ボタンを押した時に1になり、その後0に戻りますので注意してください。 1秒未満のボタンクリックは2が戻ってきます。

uint8_t AXP192::GetBtnPress(void)

戻り値

電源ボタンの状態を返す(0:押していないか1秒以上押している状態, 1:1秒の長押し発生, 2:1秒以下のボタンクリック)

利用例

if( M5.Axp.GetBtnPress() == 2 ){
 // ボタンクリック
} 

液晶バックライト電圧設定 ScreenBreath()

7でかなり暗いが見えるぐらいの明るさです。0-6も利用できるが、明るい場所では画面が見えないです。

void AXP192::ScreenBreath(uint8_t brightness)

引数

  • uint8_t brightness 7(2.5V:暗い)から12(3.0V:明るい)の6段階

利用例

M5.Axp.ScreenBreath( 7 ); // 一番暗くする(2.5V)
delay(1000);
M5.Axp.ScreenBreath( 12 ); // 一番明るくする(3.0V) 

液晶利用設定 SetLDO2()

液晶を利用するかを設定します。

falseにしても明るさ7とそれほど消費電力の差はありません。

void AXP192::SetLDO2(bool State)

引数

  • bool State true(利用する), false(利用しない)

利用例

M5.Axp.SetLDO2( false ); // 液晶OFF
delay(1000);
M5.Axp.SetLDO2( true );  // 液晶ON

バッテリー電圧取得 GetBatVoltage()

内部バッテリーの電圧です。バッテリーは4.2Vまで充電して、3.0V以下になったらシャットダウンします。 残量計算の場合には少しマージンを取って計算をしたほうが、バッテリーが劣化した場合にも安心だと思います。

float AXP192::GetBatVoltage(void)

戻り値

バッテリーの電圧を返す(V)

利用例

float vbat = M5.Axp.GetBatVoltage(); // 3.5などの数値を取得

低電圧状態チェック GetWarningLeve()

APS電圧が規定以下(約3.4V)になっていたら1、それ以外は0を返す。低電圧状態になっていた場合には低電圧を警告し、スリープ状態に入ることを推奨します。

uint8_t AXP192::GetWarningLeve(void)

戻り値

低電圧状態を返す(0:低電圧では無い, 1:低電圧)

利用例

int leve = M5.Axp.GetWarningLeve(); 

バッテリー充放電電流取得 GetBatCurrent()

内部バッテリーの充放電電流です。プラスの数字は電源に接続されており、充電電流。 マイナスの数字はバッテリー駆動しており、放電電流を表します。

float AXP192::GetBatCurrent(void)

戻り値

バッテリーに充放電している電流を返す(mA)

利用例

float ibat = M5.Axp.GetBatCurrent()// 68.7などの数値を取得

外部電源電圧取得 GetVinVoltage()

EXT_IOからの入力電圧です。

float AXP192::GetVinVoltage(void)

戻り値

外部電源の電圧を返す(V)

利用例

float vin = M5.Axp.GetVinVoltage(); // 5.2などの数値を取得

外部電源電流取得 GetVinCurrent()

EXT_IOからの入力電流です。

float AXP192::GetVinCurrent(void)

戻り値

外部電源の電流を返す(mA)

利用例

float iin = M5.Axp.GetVinCurrent(); // 68.7などの数値を取得

USB電源電圧取得 GetVBusVoltage()

USB端子からの入力電圧です。

float AXP192::GetVBusVoltage(void)

戻り値

USB電源の電圧を返す(V)

利用例

float vin = M5.Axp.GetVBusVoltage(); // 5.2などの数値を取得

USB電源電流取得 GetVBusCurrent()

USB端子からの入力電流です。

float AXP192::GetVBusCurrent(void)

戻り値

USB電源の電流を返す(mA)

利用例

float iin = M5.Axp.GetVBusCurrent(); // 68.7などの数値を取得

内部動作電圧取得 GetAPSVoltage()

内部に供給されている電圧を取得します。USBや外部電源の場合には5V前後で、バッテリー駆動の場合には4V前後になります。

float AXP192::GetAPSVoltage(void)

戻り値

内部動作の電圧を返す(V)

利用例

float vaps = M5.Axp.GetAPSVoltage(); // 4.0などの数値を取得

内部温度取得 GetTempInAXP192()

気温とはかなり違う温度なので、あまり使うことはないと思います。

float AXP192::GetTempInAXP192(void)

戻り値

AXP192の内部温度を返す(℃)

利用例

float temp = M5.Axp.GetTempInAXP192(); // 51.2などの数値を取得

バッテリー接続状態取得 GetBatState()

バッテリーが接続されているのかを返す。M5StickCはバッテリーが取り外せないため、常にtrueが戻るはず。

bool AXP192::GetBatState()

戻り値

バッテリー接続状況(true:接続あり, false:接続なし)

バッテリー瞬間電力取得 GetBatPower()

データシート上、明確な計算式がないので使わないほうが無難です。

float AXP192::GetBatPower(void)

戻り値

バッテリー瞬間電力を返す(mW)

容量カウンタ有効化 EnableCoulombcounter()

通常使いません。

void AXP192::EnableCoulombcounter(void)

容量カウンタ無効化 DisableCoulombcounter()

通常使いません。

void AXP192::DisableCoulombcounter(void)

容量カウンタ停止 StopCoulombcounter()

通常使いません。

void AXP192::StopCoulombcounter(void)

容量カウンタクリア ClearCoulombcounter()

通常使いません。

void AXP192::ClearCoulombcounter(void)

充電カウンタ取得 GetCoulombchargeData()

通常使いません。

uint32_t AXP192::GetCoulombchargeData(void)

戻り値

充電カウンタ

放電カウンタ取得 GetCoulombdischargeData()

通常使いません。

uint32_t AXP192::GetCoulombdischargeData(void)

戻り値

放電カウンタ

バッテリー容量取得 GetCoulombData()

非推奨関数。バッテリー容量を取得します。バッテリーが劣化した場合、最初の値まで充電できないのでこの数値を使って残量計算をしないでください。

float AXP192::GetCoulombData(void)

戻り値

バッテリー容量のmAhが戻ってくる(0-80前後の値)

利用例

double coulomb = M5.Axp.GetCoulombData(); // mAhが戻ってくる(0-80前後の値) 

スリープ状態に移行 SetSleep()

スリープ状態に移行します。画面は消えますが、CPU自体は動いている状態です。電源ボタンの1秒以下のクリックで復帰します。

void AXP192::SetSleep(void)

利用例

M5.Axp.SetSleep();

ディープスリープ状態に移行 DeepSleep()

ディープスリープ状態に移行します。内部でSetSleep()も実行されています。 秒数指定した場合にはその秒数スリープし、リセットされます。 電源ボタンの1秒以下のクリックで画面は復帰しますが、CPUはタイマーの時間以外では復帰しません。

AXP192のスリープではなく、直接ESP32のスリープ機能を利用することをおすすめします。

void AXP192::DeepSleep(uint64_t time_in_us=0)

引数

  • uint64_t time_in_us スリープ時間

利用例

M5.Axp.DeepSleep(5000000); // 5秒スリープ

ライトスリープ状態に移行 LightSleep()

ライトスリープ状態に移行します。内部でSetSleep()も実行されています。 秒数指定した場合にはその秒数スリープし、元のプログラムが再開されます。 電源ボタンの1秒以下のクリックで画面は復帰しますが、CPUはタイマーの時間以外では復帰しません。

AXP192のスリープではなく、直接ESP32のスリープ機能を利用することをおすすめします。

void AXP192::LightSleep(uint64_t time_in_us=0)

引数

  • uint64_t time_in_us スリープ時間

利用例

M5.Axp.LightSleep(5000000); // 5秒スリープ

電源状態取得 GetInputPowerStatus()

電源状態を取得します。

uint8_t AXP192::GetInputPowerStatus()

電源状態取得 GetBatteryChargingStatus()

バッテリー充電状態を取得します。

uint8_t AXP192::GetBatteryChargingStatus()

充電電流設定 SetChargeCurrent()

充電電流を設定します。

引数

  • uint8_t current 充電電流
void AXP192::SetChargeCurrent(uint8_t current)

LDO3利用設定 SetLDO3()

LDO3を設定します。

引数

  • bool State 状態
void AXP192::SetLDO3(bool State)

ADC利用設定 SetAdcState()

ADCを設定します。無効にするとバッテリ電圧などを計測することができません。

引数

  • bool state 状態
void AXP192::SetAdcState(bool state)

電源オフ PowerOff()

AXP192の電源をオフにします。ESP32を含めて全体の電源がオフになります。

void AXP192::PowerOff()

内部ストレージ読み出し Read6BytesStorage()

6バイトある内部ストレージを読み出します。

引数

  • uint8_t *bufPtr 読み出し先メモリ
void AXP192::Read6BytesStorage( uint8_t *bufPtr )

内部ストレージ書き込み Write6BytesStorage()

6バイトある内部ストレージに書き込みます。

引数

  • uint8_t *bufPtr 書き込み元メモリ
void AXP192::Write6BytesStorage( uint8_t *bufPtr )

(非推奨関数)バッテリー電圧取得 GetVbatData()

非推奨関数。内部バッテリーの電圧です。バッテリーは4.2Vまで充電して、3.0V以下になったらシャットダウンします。 残量計算の場合には少しマージンを取って計算をしたほうが、バッテリーが劣化した場合にも安心だと思います。

uint16_t AXP192::GetVbatData(void)

戻り値

バッテリーの電圧Step数を返す

利用例

double vbat = M5.Axp.GetVbatData() * 1.4; // mVに変換する 

(非推奨関数)バッテリー充電電流取得 GetIchargeData()

非推奨関数。内部バッテリーの充電電流です。

uint16_t AXP192::GetIchargeData(void)

戻り値

バッテリーに充電している電流Step数を返す

利用例

double icharge = M5.Axp.GetIchargeData() * 0.5; // mAに変換する 

(非推奨関数)バッテリー放電電流取得 GetIdischargeData()

非推奨関数。内部バッテリーの放電電流です。0以外の場合には電源に繋がっておらず、充電されていない状態です。

uint16_t AXP192::GetIdischargeData(void)

戻り値

バッテリーから放電している電流Step数を返す

利用例

double idischarge = M5.Axp.GetIdischargeData() * 0.5; // mAに変換する 

(非推奨関数)内部温度取得 GetTempData()

非推奨関数。気温とはかなり違う温度なので、あまり使うことはないと思います。

uint16_t AXP192::GetTempData(void)

戻り値

AXP192の内部温度Step数を返す

利用例

double temp = -144.7 + M5.Axp.GetTempData() * 0.1; // 温度に変換する 

(非推奨関数)バッテリー瞬間電力取得 GetPowerbatData()

非推奨関数。データシート上、明確な計算式がないので使わないほうが無難です。

uint32_t AXP192::GetPowerbatData(void)

戻り値

バッテリー瞬間電力を返す(計算方法不明)

(非推奨関数)外部電源電圧取得 GetVinData()

非推奨関数。EXT_IOからの入力電圧です。

uint16_t AXP192::GetVinData(void)

戻り値

外部電源の電圧Step数を返す

利用例

double vin = M5.Axp.GetVinData() * 1.7; // mVに変換する 

(非推奨関数)外部電源電流取得 GetIinData()

非推奨関数。EXT_IOからの入力電流です。

uint16_t AXP192::GetIinData(void)

戻り値

外部電源の電流Step数を返す

利用例

double iin = M5.Axp.GetIinData() * 0.625; // mAに変換する 

(非推奨関数)USB電源電流取得 GetVusbinData()

非推奨関数。USB端子からの入力電流です。

uint16_t AXP192::GetVusbinData(void)

戻り値

外部電源の電流Step数を返す

利用例

double vin = M5.Axp.GetVusbinData() * 1.7; // mVに変換する 

(非推奨関数)USB電源電流取得 GetIusbinData()

非推奨関数。USB端子からの入力電流です。

uint16_t AXP192::GetIusbinData(void)

戻り値

USB電源の電流Step数を返す

利用例

double iin = M5.Axp.GetIusbinData() * 0.375; // mAに変換する 

(非推奨関数)内部動作電圧取得 GetVapsData()

非推奨関数。内部に供給されている電圧を取得します。USBや外部電源の場合には5V前後で、バッテリー駆動の場合には4V前後になります。

uint16_t AXP192::GetVapsData(void)

戻り値

内部動作の電圧Step数を返す

利用例

double vaps = M5.Axp.GetVapsData() *1.4; // mVに変換する 

関連ブログ