A/D Converter ADS7828을 Arduino에서 제어 (I2C)

8962 단어 adcI2CADS7828IoTfabo

ADS7828





ADS7828 데이터 시트

ADS7828로 할 수 있는 일



ADS7828은 I2C를 지원하는 8CH의 Analog to Digital Converter입니다. 8CH에서 12Bit(0~4095)의 값을 취득하는 것이 가능합니다.



ADS7828 PIN 레이아웃





ADS7828의 슬레이브 주소



ADS7828의 슬레이브 어드레스는 A0, A1의 High/Low 조합으로 4가지 설정이 가능하다.





구현 예





ADS7828을 Arduino에서 작동



각 채널의 값 얻기



sample_ads7828.pde
#include <Wire.h>

#define DEVICE_ADDR (0x48) // ADS7828のスレーブデバイスのアドレス
#define ADC_CH0 (0x8C) // CH1
#define ADC_CH1 (0xCC) // CH2
#define ADC_CH2 (0x9C) // CH3
#define ADC_CH3 (0xDC) // CH4
#define ADC_CH4 (0xAC) // CH5
#define ADC_CH5 (0xEC) // CH6
#define ADC_CH6 (0xBC) // CH7
#define ADC_CH7 (0xFC) // CH8

// CHの配列
byte ADC_CHS[8] = {ADC_CH0, ADC_CH1, ADC_CH2, ADC_CH3,
                      ADC_CH4, ADC_CH5, ADC_CH6, ADC_CH7};

// 取得した値を格納するバッファ
byte adc_buff[2];

void setup()
{
  Serial.begin(9600); // シリアルの開始デバック用
  Wire.begin();       // I2Cの開始
}

void loop()
{ 
  // CH0-CH7の値を読み込む(0-4095)
  for(int i = 0; i < 8; i++){
    readI2c(ADC_CHS[i], 2, adc_buff);
    int value = (((int)adc_buff[0]) << 8 ) | adc_buff[1];
    Serial.print("ch");
    Serial.print(i);
    Serial.print(":");
    Serial.println(value);
  }
  Serial.println("-------------");

  delay(1000);
}

// I2Cへの書き込み
void writeI2c(byte register_addr, byte value) {
  Wire.beginTransmission(DEVICE_ADDR);  
  Wire.write(register_addr);         
  Wire.write(value);                 
  Wire.endTransmission();        
}

// I2Cへの読み込み
void readI2c(byte register_addr, int num, byte buffer[]) {
  Wire.beginTransmission(DEVICE_ADDR); 
  Wire.write(register_addr);           
  Wire.endTransmission();         

  Wire.beginTransmission(DEVICE_ADDR); 
  Wire.requestFrom(DEVICE_ADDR, num);   

  int i = 0;
  while(Wire.available())        
  { 
    buffer[i] = Wire.read();   
    i++;
  }
  Wire.endTransmission();         
}

좋은 웹페이지 즐겨찾기