본문 바로가기
Study/Arduino

ADS1115 16bit ADC Module

by Answer Choi 2018. 6. 8.
반응형

예제소스코드 다운로드




ADS1115는 ADS를 좀 더 정밀하게 해주는 모듈입니다.


샘플링을 16bit로 합니다. 즉 65535개입니다.


스펙을 보시면 ADC의 Input Range를 설정할 수 있습니다.


그리고 자세히 보시면 -부터 +까지 되어있습니다.


그말인 즉 16bit이지만 15bit로 나눠준다는뜻이됩니다.


왜냐하면 -영역까지 있으니~



핀을 보시면 ADC채널은 4개가 있고, I2C로 전송되므로 통신핀과 전원핀이 있습니다.


Arduino Uno는 제일 끝쪽에 SCL과 SDA가 있습니다. 


이곳에 서로 연결해 주시고, 전원을 연결해 줍니다.



그리고 I2C는 병렬통신이라 고유 주소가 있어야하는데


ADDR의 연결위치에 따라 주소가 달라집니다.


즉 ADDR을 GND에 연결하면 I2C주소가 0x48


ADDR을 VDD에 연결하면 I2C주소가 0x49


ADDR을 SDA에 연결하면 I2C주소가 0x4A


ADDR을 SCL에 연결하면 I2C주소가 0x4B


입니다.


저는 ADDR을 VDD에 물려서 주소는 0x49가 되었습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <Wire.h>
#include <Adafruit_ADS1015.h>
Adafruit_ADS1115 ads1115(0x49);
 
void setup() {  
  Serial.begin(115200);
  ads1115.begin();
  ads1115.setGain(GAIN_TWOTHIRDS);
}
 
void loop() {
  int16_t adc0;
  adc0 = ads1115.readADC_SingleEnded(0);
  float volt,Result;
  volt=adc0*0.0001875;
  Serial.print("AIN0: "); Serial.println(adc0);
  Serial.print("volt: "); Serial.println(volt);
  Result = (((adc0-5333.3))/(26666.7-5333.3)*220)-18;  //5333 is offset, 4mAmp is 0
  Serial.print("Sensor Output:");
  Serial.print(Result); 
  Serial.println(" ℃");
  delay(1000);  
}
cs


Adafruit의 ADS1015 라이브러리를 사용하면 쉽게 구현하실 수 있습니다.


Line 3 : ADS1115의 주소를 정의합니다.


Line 7 : ADS1115를 초기화합니다.


Line 8 : Arduino의 GPIO는 5V레벨입니다.


Adjusting Gain을 보시면 GAIN_TWOTHIRDS가 ±6.144V이므로 범위안에 들어갑니다.


Line 13 : ADS의 A0번핀에 연결했으므로 A0번핀에서 읽어옵니다.


Line 15 : 15bit로 샘플링하므로 0~32767까지입니다.


ADC 1당 6.1444V를 32767개로 나누면 0.0001875V가 됩니다.


Line 16 : 순수 읽어온 ADC값입니다.


Line 17 : ADC값을 Volt로 계산한 값입니다.


Line 18~21 : 테스트한 온도센서가 4-20mA 출력이라 변환해줬습니다.


실행 결과입니다.^^





반응형

'Study > Arduino' 카테고리의 다른 글

SD카드 사용하기  (0) 2018.07.05
ADS1115 16BIT ADC MODULE - Non library  (0) 2018.06.11
PIR Sensor(모션감지센서) DFRobot  (0) 2018.05.31
Steam Sensor(스팀센서)  (0) 2018.05.30
Arduino CLCD Library(Liquid Crystal)  (0) 2018.05.23

인기글