Analog 입출력 내장의 위력

Analog 입출력이 있으면 편리



온도 센서(MCP9700)를 소재로 Arduino의 Analog 입력과 AD 컨버터를 비교해 보았다.

사용한 것



온도 센서(MCP9700): 데이터시트는 여기
AD 컨버터(MCP3008): 데이터시트는 여기 Arduino IDE에서 사용한 라이브러리는 여기

소스 코드 및 결과



온도 센서(MCP9700) 데이터시트를 읽습니다.

온도가 0도일 때는 500mV의 출력, 온도가 1도 올라가면 10mV 출력이 올라가는 것을 알 수 있다.

Arduino의 Analog 및 MCP3008의 분해능은 모두 1024(0-1023)이다.

아날로그 입력 사용



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); 
}



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); 
}



에 대해 차이가 없어 보이지만,.

진짜 비교



배선도




브레드 보드의 왼쪽에있는 것이 아날로그 입력에 연결된 온도 센서, 중앙에있는 것이 AD 컨버터 (Arduino와는 SPI 연결), 중앙 아래에있는 것이 AD 컨버터에 연결된 온도 센서입니다. .

사진



Analog 입력에서는 이렇게 된다. 깔끔하게.


AD 컨버터에서는 이렇게 된다. 조금 혼돈.


AD 컨버터 MCP3008 라이브러리



TempSensor_MCP3008.ino에서 사용하는 adc.begin()과 adc.readADC()가 도서관에서 몇 줄 있는지 확인하면,
- adc.begin() 20행
- adc.readADC() 56행

일반적으로 라이브러리를 사용합니다. 다만 스크래치로 만들면 AD 컨버터의 데이터 시트와 SPI를 이해할 필요가 있다. 그것에 귀찮게.

감상



어떤 것은 사용하는 것이 좋다. Analog 입력이 있는 것은 편리합니다.

좋은 웹페이지 즐겨찾기