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