5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

A/D Converter ADS7828をArduinoから制御する(I2C)

Last updated at Posted at 2016-01-11

ADS7828

ads7828.jpg

ADS7828 Datasheet

ADS7828でできる事

ADS7828は、I2Cに対応した8CHのAnalog to Digital Converterです。 8CHから12Bit(0〜4095)の値を取得する事が可能です。

ads7828.png

ADS7828のPINレイアウト

ads7282_002.png

ADS7828のSlaveアドレス

ADS7828のSlaveアドレスは、A0, A1のHigh/Lowの組み合わせで、4通りの設定ができる。

adc7828_slave.png adc7828_slave2.png

実装例

ads7828_sample.png

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

adc7828_serial.png

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?