Arduinoで可変電圧器【Seeeduino Xiao】

Arduinoで可変電圧器【Seeeduino Xiao】
Arduinoで可変電圧器【Seeeduino Xiao】

Arduino互換機の超小型マイコンSeeeduino Xiaoで、可変可能な小信号用電圧器を作ってみた。具体的には、0〜1000mVの範囲で約1mV間隔で可変できるものである。このような可変電圧器があると、回路実験にとても重宝する。Seeeduino XiaoならDACが内蔵されているのでとても簡単だ。皆さんも一台、可変電圧器を作ってみてはいかがだろうか。

はじめに

通常、Arduinoで電力を作り出すにはPWM信号のデューティ比を変化させるため、あくまでも擬似電圧にしかならない。しかし、Seeeduino XiaoではDACが標準で備わっているため、簡単にアナログ電圧を作れるのだ。

Seeeduino XIAOのGPIO
Seeeduino XIAOのGPIO
図の1番ピンがDACに割り当てられている。DACの分解能は10bit。 3.3V電源を可変抵抗で電圧を分圧し、アナログ入力で値を読み取って0〜1000mVの範囲でDACへ出力した。そして、アナログ入力で読み取った値はOLEDディスプレイを使って電圧表示させた。 OLEDディスプレイの詳しい使い方はこちらの記事を参考に。

配線

Seeeduino Xiaoで作る可変電圧器の配線
Seeeduino Xiaoで作る可変電圧器の配線
配線は図の通り。 可変抵抗は100kΩを使用した。可変抵抗の両端に3.3V電圧をかけ、真ん中のピンをA10に繋いだ。OLEDディスプレイには3.3V電源を供給し、SDA、SCLをSeeeduino Xiaoの割り当てピンに繋ぐ。

A0ピンとGNDを使って、電圧をかけたい対象に接続する。ただし、電流はたくさん供給できないので注意しよう。LEDやモータなどの高負荷には向いていない。

プログラム

今回作った可変電圧のプログラムがこちら。

cpp
#include <U8g2lib.h>

#define DAC_PIN A0
#define POT_PIN A10

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

const float Vdd = 3.262;

void setup() {
  Serial.begin(9600);
  pinMode(POT_PIN, INPUT);
  analogWriteResolution(10); // Set analog out resolution to max, 10-bits
  u8g2.begin();
}

void loop() {
  float v = analogRead(POT_PIN); // 10-bits
  float dacVoltage =  v / Vdd; // Output limit 0V~1V
  analogWrite(DAC_PIN, dacVoltage);
  
  int voltage = v / 1023.0 * 1000;
  displayOLCD(voltage);
//  Serial.println(voltage);
  delay(100);

}

void displayOLCD(int voltage) {
    char buf[10];
    snprintf(buf, 10, "%d [mV]", voltage);

    u8g2.clearBuffer();
    u8g2.setFont(u8g2_font_crox3hb_tf);
    u8g2.drawStr(0, 16, buf);
    u8g2.sendBuffer();
}

電圧の精度は0.01%の範囲に収まり、十分実用的である。この可変電圧器は、FETのgm(相互コンダクタンス)を測定するのに大いに役立った。詳しくはこちらの記事を参考に。

Seeeduino Xiaoで作る可変電圧器
Seeeduino Xiaoで作る可変電圧器

関連記事

最後までご覧いただきありがとうございます!

▼ 記事に関するご質問やお仕事のご相談は以下よりお願いいたします。
お問い合わせフォーム

人気のArduino互換機
Arduinoで人気の周辺パーツ
あると便利な道具
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容です。ほかのArduino書籍と比べて図や説明がとてもていねいで読みやすいです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事