ADS7828
ADS7828でできる事
ADS7828は、I2Cに対応した8CHのAnalog to Digital Converterです。 8CHから12Bit(0〜4095)の値を取得する事が可能です。
 
ADS7828のPINレイアウト
 
ADS7828のSlaveアドレス
ADS7828のSlaveアドレスは、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();         
}


