| Ваш IP: 3.237.186.116 | Online(38) - гости: 26, боты: 12 | Загрузка сервера: 0.63 ::::::::::::

AD7714 (Arduino)

AD7714 представляет собой аналого-цифровой преобразователь для низкочастотных измерений.  АЦП измеряет низкоуровневые сигналы непосредственно от датчиков и преобразует их в результат преобразования (цифровое слово). Максимальное разрешение АЦП 24 бит, точность преобразования 0,0015%. Имеется несколько режимов калибровки (корректировка нуля и диапазона измерений), внутренний усилитель сигнала с коэффициентом усиления от 1 до 128.

АЦП AD7714 имeет три дифференциальных входа (AIN1_AIN2, AIN3_AIN4, AIN5_AIN6), которые могут быть переконфигурированы в четыре псевдодифференциальных входа (измерение однополярного напряжения). При измерении обнополярного напряжения используются входы AIN1 AIN2 AIN3 AIN4, на них можно подавать напряжение только положительной полярности, общий провод измеряемого напряжения соединяют со входом AIN6 и к GND.

AD7714 не содержит встроенного источника опорного напряжения, поэтому необходимо опорное напряжение подавать с внешнего ИОН. При этом опорное напряжение не должно превышать 2,5 В для 5-и вольтовой версии АЦП и 1,25 В для 3-х вольтовой версии АЦП. АЦП имеет аналоговую и цифровую землю, но как правило их объединяют в общий провод.

Для связи с АЦП используется шина SPI, выводы SCLK, DIN и DOUT служат для отправки и приема данных, вывод CS активирует работу микросхемы, вывод DRDY передает в контроллер сигнал о готовности считывания данных с АЦП. RESET сбрасывает состояние АЦП в исходное состояние. MCLKIN и MCLKOUT выводы для подключения кварцевого резонатора с частотами 2,4576 и 1 МГц. Так же допускается тактирование АЦП внешним тактовым сигналом. АЦП может работать как в 16-и битном режиме, так и в 24-х битном.

На рисунке показана схема подключения AD7714 к плате Arduino (NANO, UNO). Измеренные значения напряжения выводятся в монитор порта. Скетч конфигурирует работу АЦП для измерения однополярного напряжения которое подается на вход AIN1. Коэффициент усиления равен 1, частота фильтра 50 Гц.

форум по электронике

#include <SPI.h>
 
// SS    10 // CS
// MOSI  11 // DIN
// MISO  12 // DOUT
// SCK   13 // SCLK
// RESET  7 
// DRDY   8
 
// POL, AVdd, DVdd, SYNC,STANDBY = VCC
// AGDN, DGDN,REF IN(-), BUFFER = GND
// REF IN(+) = +1.25...2.5 V
#define RESET 7
#define DRDY 8
 
long bt24,hi,mid,lo;
int in = 0b000; // Channel Selection AIN1_AIN6
// Pseudo Differential
// AIN1_AIN6 = 0b000
// AIN2_AIN6 = 0b001
// AIN3_AIN6 = 0b010
// AIN4_AIN6 = 0b011
 
// Fully Differential
// AIN1_AIN2 = 0b100
// AIN3_AIN4 = 0b101
// AIN5_AIN6 = 0b110
 
void setup(){
  Serial.begin(9600);
  pinMode(DRDY,INPUT); // DRDY
  pinMode(RESET,OUTPUT);// RESET
  digitalWrite(RESET,LOW);
  SPI.beginTransaction(SPISettings(SPI_CLOCK_DIV2, MSBFIRST, SPI_MODE3));
  SPI.begin();
  digitalWrite(RESET,HIGH);
  delay(300);
  }
 
void loop(){
  Write();
  Read();
  Serial.println(bt24);
  } 
 
void Write(){
  digitalWrite(RESET,HIGH);
  digitalWrite(SS, LOW);
  delayMicroseconds(1);
/////////////// Filter High Register /////////////////////////////////////////////
  // BU WL BST CLKDIS FS11 FS10 FS9 FS8
  // BU   1 UNIPOLAR, 0 BIPOLAR
  // WS   0 = 16 bit, 1 = 24 bit
  // BST  2.4576 MHz BST=0, 1.0000 MHz BST=1
  // CLKDIS   0 (от кварца)
  // FSx  HIGH 4 BITS FILTER (12 BITS)
  SPI.transfer(0b00100000 + in); // Communications Register >  Filter High Register
  SPI.transfer(0b11100001); //  Filter High Register
 
////////////// Filter Low Register //////////////////////////////////////////////
  // FS7 FS6 FS5 FS4 FS3 FS2 FS1 FS0
  // LOW 8 BITS FILTER (12 BITS)
  SPI.transfer(0b00110000 + in); // Communications Register >  Filter Low Register
  SPI.transfer(0b10000000); //  Filter Low Register
  // 2.4576 MHz / 128 / 4000 (111110100000) = 4.8 Hz
  // FS11...FS8 1111, FS7...FS0 10100000
 
//////////////// Mode Register /////////////////////////////////////////////////
  // MD2 MD1 MD0 G2 G1 G0 BO FSYNC
  // MDx  Operating Mode 
 
  // Gx   Gain Setting 000...111 = 1...128 GAIN 
  // 000 = x1, 001 = x2, 010 = x4, 011 = x8, 100 = x16, 101 = x32, 110 = x64, 111 = x128 
 
  // BO, FSYNC = 0
  SPI.transfer(0b00010000 + in); // Communications Register > Mode Register
  SPI.transfer(0b00100000); // Mode Register //  MDx = 001 Self-Calibration
 
  digitalWrite(SS, HIGH);
  delay(10);
  }   
void Read(){
  while(digitalRead(DRDY)!=LOW); 
         digitalWrite(SS, LOW);
         delayMicroseconds(1);
         SPI.transfer(0b01011000 + in);    
         hi = SPI.transfer(0xFF);
         hi = hi<<16;
         mid = SPI.transfer(0xFF);
         mid = mid<<8;
         lo = SPI.transfer(0xFF);
         bt24 = hi | mid | lo;
         digitalWrite(SS, HIGH);
         while(digitalRead(DRDY)!=HIGH);
         delay(10);
         digitalWrite(RESET,LOW);
  }

AIN1 замкнут на GND

На AIN1 подано напряжение 1,13 В, источник опорного напряжения 1,81 В

На скриншоте Вы видите результат преобразования напряжения. Максимальное напряжение подаваемое на вход АЦП равно напряжению опорного источника и в цифровом формате будет отображено как 16 777 215, что дает разрешение 1,1 мкВ (при GAIN =1, Uref = 1.81 V), из чего получаем измеренное напряжение равное 1,133 904 В.

AD7714 содержит 8-м внутренних регистров, но в скетче используются только пять основных, это регистр обмена, выбор режима, два регистра фильтра и регистр чтения данных.

Регистр обмена (Communications Register) определяет тип последующей операции чтения или записи, а так же коммутирует измерительные каналы.

Так как регистр определяет тип последующей операции, то он предшествует регистрам выбора режима, двум регистрам фильтра и регистру чтения данных (выделены красным).

Так например для записи данных в регистр выбора режима (Mode Register), необходимо в Communications Register передать следующие данные:

DRDY RS2 RS1 RS0 R/W  CH2 CH1 CH0
0 0 0 1 0 0 0 0

 

  • DRDY — этот бит обеспечивает статус флага DRDY
  • RS2…RS0 — 010 определяют что далее последует обращение к регистру выбора режима (Mode Register)
  • R/W — 0 запись данных в последующий регистр
  • CH2…CH0 — выбор входа (см. таб. ниже), биты 000 определяют что активен вход AIN1_AIN6

Далее следует сам регистр выбора режима (Mode Register)

MD2 MD1 MD0 G2 G1 G0 BO FSYNC
0 0 1 0 0 0 0 0
  • MD2…MD0 — биты режима калибровки АЦП
    • 000 — обычный режим
    • 001 — автокалибровка
    • 010 — системная калибровка нуля
    • 011 — системная калибровка полной шкалы
    • 100 — системная калибровка смещения
    • 101 — фоновая калибровка
    • 110 — автокалибровка нуля
    • 111 — автокалибровка полной шкалы
  • G2…G0 — биты определения коэффициента усиления (см.таб. ниже)

  • Bo и FSYNC по умолчанию установлены 00

Далее снова обращаемся к регистру обмена, выбираем первый регистр фильтра (Filter High Register), отправляем в него данные, и затем при помощи регистра обмена обращаемся ко второму регистру фильтра (Filter Low Register).

Два регистра фильтра составляют одно целое разделенное на два 8-и битных байта, эти регистры определяют тип входного сигнала (однополярный или дифференциальный), определяют разрядность (16 или 24 бит) и частоту внутреннего фильтра.

Рассмотрим Filter High Register подробнее:

B/U WL BST CLKDIS FS11 FS10 FS9 FS8
1 1 1 0 0 0 0 0
  • B/U — выбор типа входа, 1 — однополярный вход, 0 — дифференциальный
  • WL — разрядность, 1 — 24 бит, 0 — 16 бит
  • BST — 1 используем кварц на 2,4576 МГц, 0 — на 1 МГц
  • CLKDIS — 0 используем кварцевый резонатор, 1 — внешние тактирующие импульсы (без кварца)
  • FS11…FS8 — старшие биты коэффициент частоты внутреннего фильтра
    • частота фильтра вычисляется по формуле Fф = Fкв / 128 / К,
      • где Fкв — частота кварцевого резинатора в Гц
      • К — коэффициент (от 19 до 4000) который указывается в двух регистрах фильтра (12 бит, 4 старшие биты указываются в HIGH регистре, остальные в LOW регистре фильтра)
      • например для получения частоты фильтра в 10 Гц (частота опроса) необходимо применит К = 2000. Fф = 2 457 600 / 128 / 2000 = 9,6 Гц

Выше показана таблица из которой видно, что практически измеренное значение напряжение в 24 бит получить не возможно, младшие биты будут находится в области шума, но 22,5 бит получить можно, если установить частоту фильтра 5 Гц при коэффициенте усиления 1.

Для отправки всех описанных параметров регистров фильтра нужно два раза использовать регистр обмена:

0b00100000 — данные регистра обмена определяют, что следующий регистр будет регистр HIGH регистр фильтра,

далее отправляем данные в регистр — 0b11100111, первые три бита определяют полярность, разрядность и частоту кварцевого резонатора, последние четыре, старшие биты (4 из 12 бит), коэффициента фильтра. Для примера коэффициент равен 2000, что в двоичном коде равно 011111010000, в HIGH регистр фильтра прописываем 4-е старших разряда 0111.

Далее снова обращаемся к регистру обмена:

0b00110000 — данные регистра обмена определяют, что следующий регистр будет регистр LOW регистр фильтра. После отправляем остальные 8 бит коэффициента фильтра — 11010000.

Filter High Register

На этом конфигурация АЦП закончена, остается отправить запрос для чтения полученного значения измеренного напряжения, опять же при помощи регистра обмена. При этом ранее его использовали для записи параметров, а сейчас он используется для чтения:

DRDY RS2 RS1 RS0 R/W  CH2 CH1 CH0
0 1 0 1 1 0 0 0
  • RS2…RS0 — выбираем что последующее обращение будет к регистру Data
  • R/W — операция чтения
  • CH2…CH0 — выбор входа

Регистр Data 24 бит, поэтому его чтение производится в три запроса по 8 бит.

Форум — http://forum.rcl-radio.ru/viewtopic.php?pid=1830#p1830

ad7714.pdf

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • СИММЕТРИЧНЫЙ ЛAMПOBЫЙ УМЗЧ

    СИММЕТРИЧНЫЙ ЛAMПOBЫЙ УМЗЧ

    Параметры усилителя Чувствительность …………………………………………..0, 2-0, 7 В Диапазон частот ………………………………………….20.20000 Гц Выходная мощность ………………………………………………28 Bт Экономичный режим………………………………………………16 Вт УМЗЧ состоит из трех каскадов (рис.1). Первые два — усилитель напряжения, который выполнен на лампах VL1, VL2 по балансной (дифференциальной) схеме и обеспечивает достаточное усиление при малой чувствительности к пульсациям анодного напряжения. …Подробнее...
  • Стабилизатор лабораторного источника питания

    Стабилизатор собран на микросхеме КР142ЕН2А и внешним регулирующим транзистором. Схема обеспечивает при входном напряжении 40В выходное регулируемое напряжение от 3 до 33В при токе нагрузки до 0,5А. Так же имеется защита от КЗ. Литература — Радиоконструктор 2000-10Подробнее...
  • Схема приемника который может быть перестроен в диапазоне 70…150 МГц без изменения номиналов подстроечных элементов

    Приемник может быть перестроен в диапазоне 70…150 МГц без изменения номиналов подстроечных элементов. Реальная чувствительность приемника около 0,3 мкВ, напряжение питания 9 В. Следует заметить, что напряжение питания МС3362 — 2…7 В, а МС34119 2…12 В, поэтому МС3362 питается через стабилизатор напряжения 78L06 с выходным напряжением 6 В. Входной каскад …Подробнее...
  • Автомат управления освещением

    Автомат управления освещением

    Автомат управления освещением (Радио3/98 статья С.Бирюкова) позволяет автоматически управлять освещением в зависимости от времени суток. При достаточной освещенности сопротивление фото резистора R2 мало и напряжение на инвертирующем входе ОУ меньше чем на не инвертирующем. При этом транзистор VT1 закрыт, а ток , протекающей через обмотку К1, открывает транзистор VT2 который …Подробнее...
  • Выходной каскад (ламповые усилители)

    Однотактовый выходной каскад лампового усилителя содержит минимум деталей и прост в сборке и регулировке. Пентоды в выходном каскаде могут использоваться только ультралинейном включении, триодном или обычном режимах. При триодном включении экранирующая сетка соединяется с анодом через резистор 100…1000Ом. В ультралинейном включении каскад охвачен ОС по экранирующей сетке, что дает снижение …Подробнее...