4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Analog入出力内蔵の威力

Last updated at Posted at 2020-08-01

Analog入出力があると便利

温度センサー(MCP9700)を題材に、ArduinoのAnalog入力とADコンバータとを比較してみた。

使ったもの

温度センサー(MCP9700):データシートはこちら
ADコンバーター(MCP3008):データシートはこちら。Arduino IDEで用いたライブラリはこちら

ソースコードと結果

温度センサー(MCP9700)のデータシートを読み解く。

温度が0度のときは500mVの出力、温度が1度上がると10mV出力が上がることがわかる。

ArduinoのAnalogおよびMCP3008の分解能は、いずれも1024(0-1023)。

Analog入力利用

TempSensor_Analog_.ino
const int analogInPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int read_val = analogRead(analogInPin);
  float voltage = read_val * 5.0f / 1024.0f; // V
  
  // MCP9700 spec: 500 mv at 0 degree and 10 mv / degree
  float temperature = (voltage - 0.5) / 0.01;
  Serial.println(temperature);
  
  delay(3000); 
}

1st.PNG

ADコンバーター利用

TempSensor_MCP3008.ino
#include <Adafruit_MCP3008.h>

Adafruit_MCP3008 adc;
const int mcp3008_ch = 0;

void setup() {
  Serial.begin(9600);
  
  // (sck, mosi, miso, cs);
  adc.begin(13, 11, 12, 10);
}

void loop() {
  int read_val = adc.readADC(mcp3008_ch);
  float voltage = read_val * 5.0f / 1024.0f; // V
  
  // MCP9700 spec: 500 mv at 0 degree and 10 mv / degree
  float temperature = (voltage - 0.5) / 0.01;
  Serial.println(temperature);
  
  delay(3000); 
}

2nd.PNG

対して違いはないように見えるが、、。

本当の比較

配線図


ブレッドボードの左にあるものがAnalog入力に接続されている温度センサー、中央にあるものがADコンバーター(ArduinoとはSPI接続)、中央下にあるものがADコンバーターに接続されている温度センサーである。

写真

Analog入力ではこうなる。すっきり。

ADコンバーターではこうなる。少々カオス。

ADコンバーターMCP3008ライブラリ

TempSensor_MCP3008.inoで使っているadc.begin()とadc.readADC()とがライブラリで何行あるか調べると、

  • adc.begin() 20行
  • adc.readADC() 56行

通常はライブラリを利用するであろう。ただ、スクラッチから作ると、ADコンバーターのデータシートとSPIとを理解する必要がある。それになりに面倒。

感想

あるものは使ったほうがいい。Analog入力があるのは便利。

4
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?