Seeeduino Xiaoで作る可変電圧器【小信号用・Arduino互換機】

Seeeduino Xiaoで作る可変電圧器【小信号用・Arduino互換機】
Seeeduino Xiaoで作る可変電圧器【小信号用・Arduino互換機】

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やモータなどの高負荷には向いていない。

プログラム

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

#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(相互コンダクタンス)を測定するのに大いに役立った。詳しくはこちらの記事を参考に。

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

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

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

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

関連記事