Взаимодействие ADS8319 с Arduino UNO

Я использую Arduino UNO и пытаюсь подключить к нему 2 16-битных АЦП ADS8319 через интерфейс SPI.

Я связал 2 АЦП с микроконтроллером, используя "4-проводной режим CS без индикатора занятости" (страница 15 технического паспорта).

Я использую следующий код для получения значений из АЦП.

#include <SPI.h>
#define CONVPIN 7
#define SELPIN 8
#define SELPIN2 4
#define MISOPIN 12
#define SCLKPIN 13

int adcvalue;
byte byte1; byte byte2;
const float aRefVoltage = 5;
float volts = 0;

void setup() {

  // поместите свой установочный код здесь, чтобы запустить один раз:
  pinMode(SELPIN, OUTPUT); // PIN выбора АЦП
  pinMode(SELPIN2, OUTPUT); // 2-й PIN выбора АЦП
  pinMode(CONVPIN, OUTPUT); // PIN преобразования АЦП
  pinMode(SCLKPIN, OUTPUT); // PIN тактового вывода АЦП
  pinMode(MISOPIN, INPUT);  // Выход данных АЦП
  SPI.begin();
  Serial.begin(9600);
}

void loop() {
  // поместите свой основной код здесь, чтобы запускать его повторно:
  digitalWrite(CONVPIN, LOW);
  digitalWrite(SELPIN, HIGH);
  digitalWrite(SELPIN2, HIGH);
  digitalWrite(CONVPIN, HIGH);
  digitalWrite(SELPIN, LOW);

  delay(1000);

  byte1 = SPI.transfer(0x00); //передача (считывание) 8 бит с микросхемы АЦП D15-8
  byte2 = SPI.transfer(0x00);  //передача (чтение) вторых 8 бит. D7-0

  adcvalue = (byte1 <<8) | (byte2 & 0xff);  // объедините 2 байта, чтобы сделать наше 16-битное слово
  Serial.print("Voltage Value: ");
  Serial.println(adcvalue,BIN);
  volts = (adcvalue*aRefVoltage/65535);
  Serial.print(" Sensor Volts: ");
  Serial.println(volts,5);
  delay(1000);
}

Однако я не получаю правильных значений. АЦП, который я выбрал с помощью "digitalWrite(SELPIN, LOW);", должен выдавать 1В, тогда как значения продолжают меняться в диапазоне от 0 до 2,2 В.Я не уверен, правильный ли мой код или нет. Не могли бы вы проверить код, чтобы я знал, в чем проблема-в моем оборудовании или в коде.

Ниже приведен скриншот моей схемы :

Ваши полезные предложения и комментарии будут оценены по достоинству ! Спасибо.

, 👍1

Обсуждение

Спасибо за скетч, он помог написать [один для ADS8830](https://gist.github.com/aleksas/b743c11e98656aee1d572aba73c9bf65)., @alex

Можете ли вы поделиться полной схемой, я хочу сделать работу над аналогичным проектом, но с другим АЦП, @shreyash


1 ответ


Лучший ответ:

1

После множества изменений значений резисторов и конденсаторов и проверки соединений я обнаружил, что заземление моего микроконтроллера находится не на том же уровне, что и АЦП ( я уже соединил его заземление с заземлением моей печатной платы, но возникла какая-то проблема ). Когда я припаял заземление контроллеров как раз рядом с заземлением АЦП, оба АЦП начали работать нормально.

,