реклама на сайте
подробности

 
 
> Внутренняя Калибровка AD7792
bychkov77
сообщение Mar 28 2012, 14:09
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 28-03-12
Пользователь №: 71 055



Добрый день!

Борюсь с чипом АЦП AD7792. Точнее сразу с двумя, они у меня подключены на один SPI канал процессора и выбираются поочерёдно подачей нуля на CS входы чипов.
АЦП используются для измерения сопротивления RTD элементов (PT100 и PT1000).
Для теста подключил резистор 1000 Ом 1% на вход первой АЦП, и затем на вход второй АЦП, и снимаю показания. Одна стабильно выдаёт 13022-13023 дискрет, вторая - 13083-13084. Разница 61 дискрет - это много
Затем брал другой резистор того же номинала и точности - показания отличаются в пределах точности резистора, и получаем ту же разницу в 61 дискрет между первой и второй АЦП.
При подключении резистора 500 Ом поочерёдно, разность между каналами становится 30..31 дискрет, при нулевом сопротивлении оба АЦП выдают нули. Мультипликативная погрешность(отличие между АЦП) на лицо.

Исходные условия:
- схема подключения термоэлемента - трёхпроводная, взята из даташита.
- External reference mode, референтный резистор Rref 4.99 КОм, 0.1%.
- Для обоих чипов применён один и тот же программный код.

Начал искать.
Поменял местами Rref, перепаяв их, всё тоже самое, один в один. Я думаю что хардварным проблемам больше негде быть и вероятно, что-то не так либо с самими АЦП, либо с их настройками.

Начал копатья с калибровками. На мой взгляд внутренние калибровки (internal calibrations) могут решить проблему, но тут непонятки с ней.
1. После калибровки значения регистров OFFSET и FULL SCALE (калибровочной пары)не меняются (в них установлены значения по умолчанию - 0x8000 и 0x5555 соответственно).
2. Калибровка никак не влияет на результаты измерений.
3. Мне не понятно что физически означают цифры в калибровочной паре. В даташите читаем, что из результата АЦП, вычитается значание OFFSET и помножается на FULL SCALE. То есть

ADC_out = (-OFFSET +ADC_raw ) * FULL_SCALE.

В моём случае мы получаем:

ADC_out = (-0x8000+13023)*0x5555. Бред какой-та... братья, кто разобрался с калибровкой - нужна ваша помощь!!!

4. Вопрос-утверждение. Int калибровку полезно проводить периодически, раз в 5 мин например, с целью компенсировать возможное изменение температуры самой AD7792. Я прав?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bychkov77
сообщение Mar 29 2012, 07:12
Сообщение #2





Группа: Новичок
Сообщений: 6
Регистрация: 28-03-12
Пользователь №: 71 055




Калибровка второго канала АЦП (Измерение RTD на втором канале у меня) соответственно калибрую только его.
Значения калибровочных регистров читаю сразу после окончания калибровок. У меня всегда читается 0x8000 и 0x5555

//**************************************************
// Interal Zero and Full-scale calibration
//**************************************************
void internal__calibration(BYTE Ch)
{
WORD* Zr;
WORD* Fs;

if (Ch==1) // Set CS pin of AD9972
{ADC_CS2 = 1; ADC_CS1 = 0; Zr = &Zero_reg1; Fs = &Full_Sc1;} // First ADC is enabled
else
{ADC_CS2 = 0; ADC_CS1 = 1; Zr = &Zero_reg2; Fs = &Full_Sc2;} // Second ADC is enabled

// set IO register
Spi2_Write(0x28); // Write to COMMUNICATIONS register for select IO register writing
Spi2_Write(0x02); // Write to IO register. Current Source Value = 210uA,
// Current Source IEXC1 connected to Pin IOUT1, Current Source IEXC2 connected to Pin IOUT2.

//set CONFIG register. Here, select ADC channel for calibration
Spi2_Write(0x10); // Write to COMMUNICATIONS register for select CONFIG register writing
Spi2_Write(0x11); // Write high byte to CONFIG register
Spi2_Write(0x81); // Write low byte to CONFIG register. Channel AIN2(+) – AIN2(–),
// Internal Reference Selected, unbuffered mode, Gain 1, Bias voltage connected to AIN2(-)

// Zero internal calibration
Spi2_Write(0x08); // Write to COMMUNICATIONS register for select MODE register writing
Spi2_Write(0x80); // Write high byte to MODE register. Set Zero calibration start bit
Spi2_Write(0x0F); // Write low byte to MODE register. Set update rate 4 Hz
while(DOUT == 1); // wait while calibration performing

// get OFFSET register value
Spi2_Write(0x70); // Write to COMMUNICATIONS register for select OFFSET register reading
buf1 = Spi2_Read(buffer); // Reading high byte to OFFSET register
buf2 = Spi2_Read(buffer); // Reading low byte to OFFSET register
*Zr = (WORD) ((WORD) (buf1<<8) | (WORD) (buf2)); // OFFSET register value

//Full-scale internal calibration
Spi2_Write(0x08); // Write to COMMUNICATIONS register for select MODE register writing
Spi2_Write(0xA0); // Write high byte to MODE register. Set Zero calibration start bit
Spi2_Write(0x0F); // Write low byte to MODE register. Set update rate 4 Hz
while(DOUT == 1); // wait while calibration performing

// get FULL SCALE register value
Spi2_Write(0x78); // Write to COMMUNICATIONS register for select FULL SCALE register reading
buf1 = Spi2_Read(buffer); // Reading high byte to FULL SCALE register
buf2 = Spi2_Read(buffer); // Reading low byte to FULL SCALE register
*Fs = (WORD) ((WORD) (buf1<<8) | (WORD) (buf2)); // FULL SCALE register value

ADC_CS1 = 1; ADC_CS2 = 1; // Disable both CSs
}
Go to the top of the page
 
+Quote Post
Xenia
сообщение Mar 29 2012, 08:16
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(bychkov77 @ Mar 29 2012, 11:12) *
*Zr = (WORD) ((WORD) (buf1<<8) | (WORD) (buf2)); // OFFSET register value
*Fs = (WORD) ((WORD) (buf1<<8) | (WORD) (buf2)); // FULL SCALE register value

А чего это вы так много WORDов насажали, и все не туда, куда надо? sm.gif

Суть проблемы объединения двух однобайтовых (BYTE) значений в одно двухбайтное (WORD) только в том, чтобы не потерять значение после сдвига buf1 на 8 позиций влево. Т.к. существует риск, что сдвинутые разряды пропадут, не поместившись в BYTE. Чтобы этого не случилось, buf1 приходится СНАЧАЛА растянуть до WORD, и только потом в этом виде сдвигать - тогда уж точно сдвинутым влево битам найдется место. Вот так:
*Fs = ((WORD)buf1<<8) | buf2;
А у вас buf1 сдвигается влево безо всяких предосторожностей, а то, что потом WORD стоят лесом, уже не поможет, поскольку потерянные разряды не восстановить, преобразуя к более просторной сетке задним числом.
Если у вас эта витиеватая конструция все-таки работает нормально, то скорее всего лишь потому, что buf1 определено у вас не как BYTE, а как WORD (к сожалению, в приведенном вами коде декларация buf1 отсутствует). Но если это так, то и подавно ни один из поставленных вами WORD здесь не нужен.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bychkov77   Внутренняя Калибровка AD7792   Mar 28 2012, 14:09
- - Tanya   Цитата(bychkov77 @ Mar 28 2012, 18:09) 1....   Mar 28 2012, 16:54
- - Plain   Во-первых, лучше откажитесь от 3-проводного подклю...   Mar 28 2012, 17:51
- - Ruslan1   Цитата(bychkov77 @ Mar 28 2012, 17:09) Бо...   Mar 28 2012, 19:50
- - bychkov77   Ruslan1, Благодарю за совет , сегодня переделаю сх...   Mar 29 2012, 05:41
|- - Ruslan1   Цитата(bychkov77 @ Mar 29 2012, 08:41) Ru...   Mar 29 2012, 07:33
||- - bychkov77   Цитата(Xenia @ Mar 29 2012, 12:16) А чего...   Mar 29 2012, 12:43
|- - Tanya   Цитата(bychkov77 @ Mar 29 2012, 11:12) Ка...   Mar 29 2012, 08:41
- - saska   вот тоже собираюсь измерять RTD и вижу кроме AD779...   May 29 2012, 09:23
|- - Ruslan1   Цитата(saska @ May 29 2012, 12:23) вот то...   May 29 2012, 12:32
- - saska   Ruslan1 читая ваши рекомендации я понимаю что вы п...   May 29 2012, 14:00
|- - Tanya   Цитата(saska @ May 29 2012, 18:00) было б...   May 29 2012, 14:21
|- - Ruslan1   Цитата(saska @ May 29 2012, 17:00) Ruslan...   May 29 2012, 15:26
- - saska   Ruslan1 постараюсь осмыслить, завтра привезу пароч...   May 29 2012, 19:31
|- - Ruslan1   Цитата(saska @ May 29 2012, 22:31) Ruslan...   May 30 2012, 12:23
- - saska   Ruslan1 а напишите пожалуста итоговую формулу для ...   May 31 2012, 08:23
|- - Ruslan1   Цитата(saska @ May 31 2012, 11:23) Ruslan...   May 31 2012, 08:41
- - saska   Ruslan1кажеца, но я не знаю где грань. А что касае...   Jun 1 2012, 12:06
|- - Tanya   Цитата(saska @ Jun 1 2012, 16:06) Ruslan1...   Jun 1 2012, 12:10
|- - Ruslan1   Цитата(saska @ Jun 1 2012, 15:06) Ruslan1...   Jun 1 2012, 15:35
- - saska   закон ома точно не помню но что то о пропорциональ...   Jun 1 2012, 14:31
- - saska   Ruslan1 подскажите где копать.. не могу считать пр...   Jun 5 2012, 14:07
|- - Ruslan1   Что-то Вы жестоко с CS обходитесь, не нужно его во...   Jun 5 2012, 14:59
- - saska   Ruslan1 сделал как сказали - сразу заработало. хот...   Jun 6 2012, 05:06
|- - Tanya   Цитата(saska @ Jun 6 2012, 09:06) Еще воз...   Jun 6 2012, 07:34
|- - Plain   Цитата(saska @ Jun 6 2012, 08:06) вместо ...   Jun 6 2012, 10:22
- - saska   Tanya если внимательно посмотреть ваши посты в тем...   Jun 6 2012, 09:20
|- - Tanya   Цитата(saska @ Jun 6 2012, 13:20) . О общ...   Jun 6 2012, 09:33
- - saska   вот привожу расчет и подтверждение формулы Ruslan1...   Jun 7 2012, 07:00
|- - Plain   Судя по отсутствию в Ваших "формулах" та...   Jun 7 2012, 14:53
- - saska   Plain наверное расшифровать эту фразу ЦитатаСудя п...   Jun 7 2012, 16:39
|- - Ruslan1   Цитата(saska @ Jun 7 2012, 19:39) Я увере...   Jun 7 2012, 17:49
|- - Plain   Цитата(saska @ Jun 7 2012, 19:39) Для под...   Jun 7 2012, 19:31
- - saska   Ruslan1 Plain спасибо за новость и подробное ее о...   Jun 8 2012, 06:36
|- - Ruslan1   Цитата(saska @ Jun 8 2012, 09:36) Ruslan1...   Jun 8 2012, 09:01
|- - Plain   Цитата(saska @ Jun 8 2012, 09:36) не увид...   Jun 8 2012, 09:40
- - saska   Plain читаю псто№3 ЦитатаВнутренний опорник будет...   Jun 8 2012, 10:17
- - saska   Ruslan1 можете рассказать как вы в своем проекте ...   Jun 8 2012, 14:49
- - hpo   А скажите, плз, кто-нибудь занимался добычей правд...   Jul 25 2012, 06:51
- - saska   я просто откалибрвал по китайскому мультиметру с т...   Aug 17 2012, 06:00
- - saska   пусть поздно, но вот сфоткал что получилось - на п...   Jun 19 2014, 11:26
|- - berkl   Цитата(saska @ Jun 19 2014, 15:26) пусть ...   Jun 20 2014, 06:37
- - saska   в описании на микросхему имеется фраза - При смене...   Jun 20 2014, 15:00
|- - berkl   Цитата(saska @ Jun 20 2014, 19:00) в опис...   Jun 25 2014, 05:44
- - Lagman   А 3-х проводную схему подключения применили как пи...   Jun 25 2014, 09:05
|- - berkl   Цитата(Lagman @ Jun 25 2014, 13:05) А 3-х...   Jun 27 2014, 05:33
- - Lagman   У вас 4-х проводная или я не правильно понял? Трех...   Jun 27 2014, 12:31
|- - berkl   Цитата(Lagman @ Jun 27 2014, 16:31) У вас...   Jun 30 2014, 07:04
|- - Xenia   Цитата(berkl @ Jun 30 2014, 11:04) Схема ...   Jun 30 2014, 15:33
|- - berkl   Цитата(Xenia @ Jun 30 2014, 19:33) Где та...   Jun 30 2014, 17:28
|- - Xenia   Цитата(berkl @ Jun 30 2014, 21:28) Смотри...   Jun 30 2014, 20:02
|- - berkl   Цитата(Xenia @ Jul 1 2014, 00:02) Так это...   Jul 1 2014, 06:15
- - yanvasiij   Цитата(Ruslan1 @ May 29 2012, 20:26) Вот,...   Feb 15 2016, 04:38
|- - Ruslan1   Цитата(yanvasiij @ Feb 15 2016, 07:38) ...   Feb 18 2016, 07:44
- - yanvasiij   Цитата(Ruslan1 @ Feb 18 2016, 12:44) Кака...   Feb 19 2016, 12:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 11:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01441 секунд с 7
ELECTRONIX ©2004-2016