A/D Converter ADS7828을 Arduino에서 제어 (I2C)
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();
}
Reference
이 문제에 관하여(A/D Converter ADS7828을 Arduino에서 제어 (I2C)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akira-sasaki/items/bbb64ddc06ead74f493c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#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();
}
Reference
이 문제에 관하여(A/D Converter ADS7828을 Arduino에서 제어 (I2C)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akira-sasaki/items/bbb64ddc06ead74f493c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)