Arduino入門

2. デバイス&サンプル

5. 拡張モジュール&サンプル

アクセサリー

6. アプリケーション

Module13.2 PPS Arduino 使用手順

1. 準備作業

2. 注意事項

外部電源
Module13.2 PPS には DC 9 ~ 36V の外部電源を接続する必要があります。接続しない場合、モジュールは正常に動作せず、ホストデバイスの画面に No i2c device と表示されます。実際の最大出力能力は、入力電源、負荷、および接続ケーブルの許容電流によって異なります。
ピン互換性
ホストデバイスごとにピン構成が異なるため、使用前に製品ドキュメントのピン互換性表を参照し、実際のピン接続に応じてサンプルプログラムを修正してください。

3. サンプルプログラム

  • 本チュートリアルでは、CoreS3 と Module13.2 PPS を組み合わせて電源出力を調整・制御します。Module13.2 PPS は I2C で通信します。実際の回路接続に応じて、プログラム内のピン定義を変更してください。デバイス接続後、対応する I2C IO ピンは G12 (SDA) と G11 (SCL) です。
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
#include <M5Unified.h>
#include <M5GFX.h>
#include "M5ModulePPS.h"

M5GFX display;
M5Canvas canvas(&display);
M5ModulePPS pps;

// PPS output voltage target and current limit.
#define OUTPUT_VOLTAGE 5.0f
#define OUTPUT_CURRENT 5.0f

void setup() {
    M5.begin();
    display.begin();

    // Create a full-screen canvas for flicker-free updates.
    canvas.setFont(&fonts::FreeMonoBoldOblique12pt7b);
    canvas.createSprite(display.width(), display.height());

    // Retry until the PPS responds on the CoreS3 internal I2C bus.
    while (!pps.begin(&Wire, M5.In_I2C.getSDA(), M5.In_I2C.getSCL(),
                      MODULE_POWER_ADDR, 400000U)) {
        Serial.println("module pps connect error");
        canvas.clear(BLACK);
        canvas.setTextColor(RED);
        canvas.drawCenterString("No i2c device", display.width() / 2,
                                display.height() / 2);
        canvas.pushSprite(0, 0);
        delay(100);
    }

    // Apply both setpoints before enabling the power output.
    pps.setOutputVoltage(OUTPUT_VOLTAGE);
    pps.setOutputCurrent(OUTPUT_CURRENT);
    pps.setPowerEnable(true);
}

void loop() {
    // Read the live input, output, temperature, and regulation state.
    float voltage_readback = pps.getReadbackVoltage();
    float current_readback = pps.getReadbackCurrent();
    float temperature      = pps.getTemperature();
    float vin              = pps.getVIN();
    uint8_t mode           = pps.getMode();

    // Render one complete status frame before updating the display.
    canvas.fillSprite(BLACK);
    canvas.setFont(&fonts::FreeMonoBold12pt7b);
    canvas.setTextColor(WHITE);
    canvas.drawCenterString("Module PPS", display.width() / 2, 0);

    canvas.setCursor(10, 40);
    canvas.setTextColor(WHITE);
    canvas.printf("VIN: ");
    canvas.setTextColor(GREEN);
    canvas.printf("%.2fV", vin);

    canvas.setCursor(10, 80);
    canvas.setTextColor(WHITE);
    canvas.printf("Mode: ");
    canvas.setTextColor(GREEN);
    // The PPS switches between CV and CC automatically as the load changes.
    if (mode <= 1)
        canvas.printf("Constant Voltage");
    else
        canvas.printf("Constant Current");

    canvas.setTextColor(WHITE);
    canvas.setCursor(10, 120);
    canvas.printf("Voltage: ");
    canvas.setTextColor(GREEN);
    canvas.printf("%.2fV", voltage_readback);

    canvas.setCursor(10, 160);
    canvas.setTextColor(WHITE);
    canvas.printf("Current: ");
    canvas.setTextColor(GREEN);
    canvas.printf("%.2fA", current_readback);

    canvas.setCursor(10, 200);
    canvas.setTextColor(WHITE);
    canvas.printf("Temperature: ");
    canvas.setTextColor(GREEN);
    canvas.printf("%.2fC", temperature);

    canvas.pushSprite(0, 0);
}

4. コンパイルとアップロード

  • 1. ダウンロードモードに入る:CoreS3 のリセットボタンを長押し(約 2 秒)し、内部の緑色 LED が点灯したら離します。これでデバイスはダウンロードモードに入り、書き込み待機状態になります。 ボタンを離すと緑色 LEDが消灯し、デバイスがダウンロードモードに入ったことを確認できます。
説明
デバイスによって、プログラムを書き込む前にダウンロードモードに入る必要があります。手順はホストデバイスによって異なる場合があります。詳細は、Arduino IDE 入門チュートリアルページ下部のデバイス別プログラム書き込みチュートリアル一覧を参照してください。
  • デバイスのポートを選択し、Arduino IDE 左上のコンパイル&アップロードボタンをクリックします。プログラムのコンパイルとデバイスへのアップロードが完了するまで待ちます。

5. 動作確認

  • 電源投入後、CoreS3 は Module13.2 PPS モジュールを初期化し、出力電圧を 5.0V、電流上限を 5.0A に設定して出力を有効にします。その後、画面に入力電圧、CV/CC モード、出力電圧、出力電流、およびモジュール温度を継続して表示します。
説明
PPS モジュールは負荷に応じて動作状態を自動的に切り替えます。負荷電流が電流制限値に達していない場合は定電圧モード(Constant Voltage)で動作します。負荷が電流制限値を超えようとすると、モジュールは出力電圧を下げ、定電流モード(Constant Current)に移行します。getMode() は現在の状態を読み取るためにのみ使用され、モードを手動で切り替えるものではありません。
Page Tools
PDF
On This Page