2025年6月14日土曜日

アナログパネルメータをRaspberry Pi Picoで動かしてみた。

 アナログメータってかっこいいよね。ということでアリエクでアナログメータが安く売っていたので試しに買ってみた。マイコン直結で動かせたたら面白いので今回は電圧用の3V品にしてみた。

91C4
91C4っていうメータ。
やすい送料を選んでみたので送料込みで227円だった。3週間ぐらいかかった。UM~DOのトラッキングは最後まで追跡できないっぽいので追跡できなくなってから1週間後ぐらいに届いた感じ。
ネジも付属していた。
91C4
裏面は固定用と思われるネジが下に出ていて、端子が真ん中あたりから出てる感じ。この向きだと右側がGNDで左側が入力っぽい。
全部M3だった。

91C4
自立するぐらい奥行きは長い。

3V仕様なので3.3VのマイコンのPWMで動かせるんじゃないかということでRaspberry Pi Picoに接続して試してみた。
#define pwmPin 15  // PWM 出力に使う GPIO ピン

void setup() {
  Serial.begin(115200);
  while (!Serial);
  pinMode(pwmPin, OUTPUT);
  analogWriteFreq(20000);       // PWM周波数を20kHzに設定
  analogWriteResolution(8);     // 8bit分解能(0〜255)

  Serial.println("Set PWM");
}

void loop() {
  if (Serial.available()) {
    int duty = Serial.parseInt();

    if (duty < 0) duty = 0;
    if (duty > 255) duty = 255;

    analogWrite(pwmPin, duty);

    Serial.print("PWM:");
    Serial.println(duty);
  }
}
メータのプラスをGPIO15に繋いで、GNDはGNDに接続してシリアルコンソールから数字を送ると針が動くやつ。earlephilhower版のArduino環境。
マイコンは3.3Vなのでいきなり255は振り切ってしまうので振り切らないギリギリをちょっとずつ試したところ、3Vメーターだと245ぐらいが最大だった。
次に自動でスイープしてみた。
#define pwmPin 15

void setup() {
  analogWriteFreq(20000);          // 20kHzに設定
  analogWriteResolution(8);        // 8bit分解能 (0~255)
  pinMode(pwmPin, OUTPUT);
}

void loop() {
  for (int duty = 0; duty <= 245; duty++) {
    analogWrite(pwmPin, duty);
    delay(20);
  }

  for (int duty = 245; duty >= 0; duty--) {
    analogWrite(pwmPin, duty);
    delay(20);
  }
}

最大と最小付近で少し針が触れる感じが良い。

やっぱりアナログメータ味があるね。自動車用のメータとかだとステッピングモータ系になっていたりするので針がキビキビ動いたりするけど、こちらはかなり振れる。

昔テストしてみたArduinoでOBD2のデータ取るやつとか使うとレスポンスが悪いアナログメータが作れそう。
音声をADCで入力してメーターに出力するという無駄な自作VUメータとかも作れるかも。

0 件のコメント:

コメントを投稿