アナログメータってかっこいいよね。ということでアリエクでアナログメータが安く売っていたので試しに買ってみた。マイコン直結で動かせたたら面白いので今回は電圧用の3V品にしてみた。
91C4っていうメータ。やすい送料を選んでみたので送料込みで227円だった。3週間ぐらいかかった。UM~DOのトラッキングは最後まで追跡できないっぽいので追跡できなくなってから1週間後ぐらいに届いた感じ。
自立するぐらい奥行きは長い。
ネジも付属していた。
全部M3だった。
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 件のコメント:
コメントを投稿