Skip to content

電源管理(AXP192)

概要

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

概要図

データシート

関数リファレンス

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

7でかなり暗い明るさです。

定義

void AXP192::ScreenBreath( uint8_t brightness )

引数 - uint8_t brightness : 0x00(1.8V:暗い)から0x0f(3.3V:明るい)の16段階

サンプル

M5.Axp.ScreenBreath( 0x00 ); // 一番暗くする(1.8V)

delay(1000);

M5.Axp.ScreenBreath( 0x0f ); // 一番明るくする(3.3V)

内部温度取得 GetTempData()

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

定義

uint16_t AXP192::GetTempData( void )

戻り値 : uint16_t AXP192の内部温度Step数を返す

サンプル

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

外部電源電圧取得 GetVinData()

EXT_IOからの入力電圧です。

定義

uint16_t AXP192::GetVinData( void )

戻り値 : uint16_t 外部電源の電圧Step数を返す

サンプル

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

外部電源電流取得 GetIinData()

EXT_IOからの入力電流です。

定義

uint16_t AXP192::GetIinData( void )

戻り値 : uint16_t 外部電源の電流Step数を返す

サンプル

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

USB電源電圧取得 GetVusbinData()

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

定義

uint16_t AXP192::GetVusbinData( void )

戻り値 : uint16_t USB電源の電圧Step数を返す

サンプル

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

USB電源電流取得 GetIusbinData()

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

定義

uint16_t AXP192::GetIusbinData( void )

戻り値 : uint16_t USB電源の電流Step数を返す

サンプル

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

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

内部バッテリーの充電電流です。

定義

uint16_t AXP192::GetIchargeData( void )

戻り値 : uint16_t バッテリーに充電している電流Step数を返す

サンプル

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

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

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

定義

uint16_t AXP192::GetVbatData( void )

戻り値 : uint16_t バッテリーの電圧Step数を返す

サンプル

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

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

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

定義

uint16_t AXP192::GetIdischargeData( void )

戻り値 : uint16_t バッテリーから放電している電流Step数を返す

サンプル

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

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

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

定義

double AXP192::GetCoulombData( void )

戻り値 : バッテリー容量を返す

サンプル

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

内部動作電圧取得 GetVapsData()

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

定義

uint16_t AXP192::GetVapsData( void )

戻り値 : 内部動作の電圧Step数を返す

サンプル

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

電源ボタン取得 GetBtnPress()

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

定義

uint8_t AXP192::GetBtnPress( void )

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

サンプル

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

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

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

定義

uint8_t AXP192::GetWarningLeve( void )

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

サンプル

M5.Axp.SetSleep();

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

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

定義

void AXP192::SetSleep( void )

戻り値 : 無し

サンプル

M5.Axp.SetSleep();

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

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

定義

void AXP192::LightSleep( uint64_t time_in_us = 0 )

戻り値 : 無し

サンプル

M5.Axp.LightSleep( SLEEP_SEC(5) ); // 5秒間ライトスリープ

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

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

定義

void AXP192::DeepSleep( uint64_t time_in_us = 0 )

戻り値 : 無し

サンプル

M5.Axp.DeepSleep( SLEEP_SEC(5) ); // 5秒間ディープスリープ

関連ブログ