bychkov77
Mar 28 2012, 14:09
Добрый день!
Борюсь с чипом АЦП 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. Я прав?
Цитата(bychkov77 @ Mar 28 2012, 18:09)

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. Я прав?
4. Это от вкуса зависит...
3.То, из чего вычитается смещение Вы не видите - оно внутри, а Вам выдается уже скорректированное значение.
2. Вы уверены, что с командами не напутали?
1. См. 2
Поищите по форуму. Это уже обсуждалось. Может быть для другого АЦП, но все должно совпадать по сути.
Во-первых, лучше откажитесь от 3-проводного подключения.
Если всё же настаиваете, то перейдите на 3-стадийное дифференциальное измерение, т.е. внутренний опорник, 3 диффвхода, 3 измерения и однозначно с включённым входным буфером.
Внутренний опорник будет при этом не доступен, но он и не нужен — входную цепь можно подключить к любому локально стабильному источнику.
Её должны последовательно составлять RTD, эталон и два резистора, сверху/снизу, т.е. нормирующих сигналы в допустимый диапазон уровней в этом режиме АЦП.
Ещё раз повторю, что 4-проводное соединение выгоднее, потому что число деталей такое же, но входов надо 2, и измерений тоже 2, т.е. меньше.
И ещё раз — никаких встроенных источников тока, не верьте им.
Ruslan1
Mar 28 2012, 19:50
Цитата(bychkov77 @ Mar 28 2012, 17:09)

Борюсь с чипом АЦП AD7792.
Да я за AD7792 глаз вырву!

они хорошие, Вы просто неправильно их готовите.
Схема из даташита для трехпроводки порочная по определению (источники тока не могут абсолютно совпадать), не нужно вам два источника тока. достаточно один.
делайте следующее:
Iout1 & AIN1+ -> L1
AIN1- & AIN2+ -> L2
AIN2- & AIN3+ -> L3
AIN3- -> GND
Между AIN3+ и AIN3- ставите эталонный резистор. Можно этот AIN3 объявить REF (если в пределах допуска для Vref), а можно и по внутреннему опорнику работать с тремя измерениями, неважно. Вся точность определяется только эталонным резистором.
Смысл измерения: все измеряете в долях опорного резистора, так как ток один и тот же. Падение на проводах получаете математически, делаете перевычисление ручками.
Да, измерений два или даже три для одного результата, но зато все предсказуемо и под контролем.
В-общем похоже на схему в даташите (только без Iout2), но принцип работы схемы другой, все считается ручками
bychkov77
Mar 29 2012, 05:41
Ruslan1, Благодарю за совет , сегодня переделаю схему и скорректирую софт для проверки. Я подозревал что это из за несбалансированности источников тока, все таки +-0,5% это много... по результатам отпишусь.
bychkov77
Mar 29 2012, 07:12
Калибровка второго канала АЦП (Измерение 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
}
Ruslan1
Mar 29 2012, 07:33
Цитата(bychkov77 @ Mar 29 2012, 08:41)

Ruslan1, Благодарю за совет , сегодня переделаю схему и скорректирую софт для проверки. Я подозревал что это из за несбалансированности источников тока, все таки +-0,5% это много... по результатам отпишусь.
Да пожалуйста

Вроде достаточно много их применял для RTD- проблем не было. Причем руками калибровочные константы в АЦП никогда не трогал, меня калибровка канала в целом интересовала, посему есть калибровочные константы в приборе (многоканалка) и процедура поверки-калибровки для метрологов-ремонтников.
Кстати, если вдруг у Вас 4х проводка- лучше посмотрите AD7789. Они примерно на 30% дешевле и при этом имеют 24 бита а не 16. Опять же референсное сопротивление, но уже в верхнем плече, оно же задает максимальный ток. на NTC работает отлично, для меди-платины нужно смотреть разрешающую способность.
Цитата(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ов насажали, и все не туда, куда надо?

Суть проблемы объединения двух однобайтовых (BYTE) значений в одно двухбайтное (WORD) только в том, чтобы не потерять значение после сдвига buf1 на 8 позиций влево. Т.к. существует риск, что сдвинутые разряды пропадут, не поместившись в BYTE. Чтобы этого не случилось, buf1 приходится
СНАЧАЛА растянуть до WORD, и только потом в этом виде сдвигать - тогда уж точно сдвинутым влево битам найдется место. Вот так:
*Fs = ((WORD)buf1<<8) | buf2;
А у вас buf1 сдвигается влево безо всяких предосторожностей, а то, что потом WORD стоят лесом, уже не поможет, поскольку потерянные разряды не восстановить, преобразуя к более просторной сетке задним числом.
Если у вас эта витиеватая конструция все-таки работает нормально, то скорее всего лишь потому, что buf1 определено у вас не как BYTE, а как WORD (к сожалению, в приведенном вами коде декларация buf1 отсутствует). Но если это так, то и подавно ни один из поставленных вами WORD здесь не нужен.
Цитата(bychkov77 @ Mar 29 2012, 11:12)

Калибровка второго канала АЦП (Измерение RTD на втором канале у меня) соответственно калибрую только его.
Значения калибровочных регистров читаю сразу после окончания калибровок. У меня всегда читается 0x8000 и 0x5555
Что-то у Вас не так. Попробуйте нагреть немного... Нужно внимательно читать даташит. Или даже между строк. Вот там написано, что это не для любой скорости должно происходить... Подозреваю, что скорость нужно менять заранее....
Хотя... может быть, что для 16 разрядов... Вот для 24-х меняется. У меня.
bychkov77
Mar 29 2012, 12:43
Цитата(Xenia @ Mar 29 2012, 12:16)

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

Суть проблемы объединения двух однобайтовых (BYTE) значений в одно двухбайтное (WORD) только в том, чтобы не потерять значение после сдвига buf1 на 8 позиций влево. Т.к. существует риск, что сдвинутые разряды пропадут, не поместившись в BYTE. Чтобы этого не случилось, buf1 приходится
СНАЧАЛА растянуть до WORD, и только потом в этом виде сдвигать - тогда уж точно сдвинутым влево битам найдется место. Вот так:
*Fs = ((WORD)buf1<<8) | buf2;
А у вас buf1 сдвигается влево безо всяких предосторожностей, а то, что потом WORD стоят лесом, уже не поможет, поскольку потерянные разряды не восстановить, преобразуя к более просторной сетке задним числом.
Если у вас эта витиеватая конструция все-таки работает нормально, то скорее всего лишь потому, что buf1 определено у вас не как BYTE, а как WORD (к сожалению, в приведенном вами коде декларация buf1 отсутствует). Но если это так, то и подавно ни один из поставленных вами WORD здесь не нужен.
да, вы правы, но эту конструкцию мой компилятор проглатывает без вопросов, поэтому и не замарачивался, но спасибо :-)
Сделал как посоветовал Ruslan1, разница в показаниях двух АЦП составила 3 дискрета (вместо 60), проверил показания ещё на 2-х таких же АЦП разница в показаниях не превысила 7 дискрет, меня это более чем устраивает, УРА

!!! Ещё раз большая благодарность, Руслану! Жаль что с внутренней калибровкой не получилось разобраться, ещё потыкаюсь немного и если ни чего не получится оставлю как есть.
Цитата(Tanya @ Mar 29 2012, 12:41)

Что-то у Вас не так. Попробуйте нагреть немного... Нужно внимательно читать даташит. Или даже между строк. Вот там написано, что это не для любой скорости должно происходить... Подозреваю, что скорость нужно менять заранее....
Хотя... может быть, что для 16 разрядов... Вот для 24-х меняется. У меня.
нагрел феном, точно не знаю на сколько возможно с 25 до 50 градусов, и показания уплыли аж на 20 дискрет, но феном грел всю плату, локально не получилось, Rref тоже грелся, нужно будет это учитывать.
У меня коэфициент усиления 1 и 2 в зависимоти от диапазона измерения "For gains of 1, 2, and 4, an internal full-scale calibration can be performed at any update rate" - это из даташита, Татьяна это я читал, но спасибо :-)
P.S. Да ещё, резистор 1000 Ом подсоединенный вместо RTD тоже нагревался со всей платой, по этому не удивительно что показания изменились на 20 дискрет
вот тоже собираюсь измерять RTD и вижу кроме AD7792/93 еще у техаса ADS1247/48 которые выглядят примерно одинаково, на первый взгляд разница только в значениях источников тока (у техаса 50 - 1500мка, у ад 10 - 1000мка), и у техаса про подключаемый буфер ничего не написано. Как думаете - у техаса источники тока более одинаковы чем у ад ?
Ruslan1
May 29 2012, 12:32
Цитата(saska @ May 29 2012, 12:23)

вот тоже собираюсь измерять RTD и вижу кроме AD7792/93 еще у техаса ADS1247/48 которые выглядят примерно одинаково, на первый взгляд разница только в значениях источников тока (у техаса 50 - 1500мка, у ад 10 - 1000мка), и у техаса про подключаемый буфер ничего не написано. Как думаете - у техаса источники тока более одинаковы чем у ад ?
Там только типовые характеристики указаны, то есть как повезет.
А зачем Вам это для RTD? я уже писал как вообще без этих источников тока обойтись. Берете эталонный резистор с известными параметрами и от него пляшете. Надеяться на баланс источников тока- это конкретные грабли себе запланировать.
Ruslan1 читая ваши рекомендации я понимаю что вы предлагаете не использовать оба источника но оставить один и использовать эталонный резистор.
было бы неплохо увидеть это в виде схемы..
вот еще одна рекомендация но с использованием AIN3 .. начинается путаница
Цитата(saska @ May 29 2012, 18:00)

было бы неплохо увидеть это в виде схемы..
Автор! Цитируйте нормальным образом - без скриншотов.
Ruslan1
May 29 2012, 15:26
Цитата(saska @ May 29 2012, 17:00)

Ruslan1 читая ваши рекомендации я понимаю что вы предлагаете не использовать оба источника но оставить один и использовать эталонный резистор.
было бы неплохо увидеть это в виде схемы..
вот еще одна рекомендация но с использованием AIN3 .. начинается путаница
Вот, визуализировал свой же текст в графической форме. первый рисунок для описания принципа, второй для трехпроводки.
Нажмите для просмотра прикрепленного файла
Ruslan1 постараюсь осмыслить, завтра привезу парочку микросхем и буду стыковать с ниосом
Ruslan1
May 30 2012, 12:23
Цитата(saska @ May 29 2012, 22:31)

Ruslan1 постараюсь осмыслить, завтра привезу парочку микросхем и буду стыковать с ниосом
ну, я бы такое осмысливал с листа бумаги и ручки, для особо сомневающихся в реальности происходящего- с четырех магазинов сопротивлений, трех вольтметров и одного микрокалькулятора. А дальше уже осмысленное стыковать хоть с ниосом хоть с пивом.

Тут ничего хитрого нет, с времен старика Ома и компенсации трехпроводки операционником совершенно ничего в принципах не поменялось, просто сейчас еще один вход АЦП дешевле чем хороший операционник с обвязкой.
Ruslan1 а напишите пожалуста итоговую формулу для вычисления Rx с аргументами А1 А2 А3 , с описанием что такое А1 А2 А3 и так как измерения делаются в несколько этапов то соотвественно должно получиться несколько формул. Привез АД7792 - сразу хочу сказать что корпус удачный) еще немного расскажу о проекте - необходимо организовать на одной плате 12 каналов RTD для подключения сопротивлений 100 - 1000 Ом , датчики предположительно платиновые. Желательно конечно и подключать низкоомные датчики медные. Расскажите возможно ли сделать настолько универсальное устройство?
Привожу пдфчик буржуйской платки которую надо заменить и улучшить.
Ruslan1
May 31 2012, 08:41
Цитата(saska @ May 31 2012, 11:23)

Ruslan1 а напишите пожалуста итоговую формулу для вычисления Rx с аргументами А1 А2 А3 , с описанием что такое А1 А2 А3 и так как измерения делаются в несколько этапов то соотвественно должно получиться несколько формул. Привез АД7792 - сразу хочу сказать что корпус удачный) еще немного расскажу о проекте - необходимо организовать на одной плате 12 каналов RTD для подключения сопротивлений 100 - 1000 Ом , датчики предположительно платиновые. Желательно конечно и подключать низкоомные датчики медные. Расскажите возможно ли сделать настолько универсальное устройство?
Привожу пдфчик буржуйской платки которую надо заменить и улучшить.
А Вам не кажется, что Вашу просьбу следует перенести в раздел "предлагаю работу" ?
Ruslan1кажеца, но я не знаю где грань. А что касается описания формулы - это еще бесплатная подсказка или уже платная ?
Цитата(saska @ Jun 1 2012, 16:06)

Ruslan1кажеца, но я не знаю где грань. А что касается описания формулы - это еще бесплатная подсказка или уже платная ?
Бесплатно - напишите уравнение закона Ома.
закон ома точно не помню но что то о пропорциональной связи сопротивления напряжения и тока.. на гугле и вики забанен

а вот применительно к вашей формуле сразу возникает вопрос - а где же А3 ?
Rx = Re*((A2-A1)/65536)
где А1 и А2 - соотвецтвенно код, измеренный с входов Аin1 и Ain2
Rx - измеряемое сопротивление, Re - эталонное сопротивление
Ruslan1
Jun 1 2012, 15:35
Цитата(saska @ Jun 1 2012, 15:06)

Ruslan1кажеца, но я не знаю где грань. А что касается описания формулы - это еще бесплатная подсказка или уже платная ?
А Вы посмотрите выше, как у
bychkov77 получилось: человек копал этот вопрос но результат его не устроил. Достаточно было намека на пальцах, чтобы он не только понял о чем идет речь, но и довел до результата. То есть видно, что человек "в теме", ему просто небольшой совет нужен был.
Вам же нужно "написать", "описать", "рассказать".
По Вашему вопросу: A3 нигде. делайте так как написали.
Ruslan1 подскажите где копать.. не могу считать правильно регистр ID, делаю следующее-
- отправляю 5 пачек по 8 тактов с еденичками на DIN под одним CS
- опускаю CS, отправляю пачку из 8 тактов с числом 0х60, поднимаю CS
- опускаю CS, отправляю пачку из 8 тактов с нулями и ловлю число 0х94, поднимаю CS.
ожидаю как по даташиту 0хХА а получаю 0х94, что интересно - повторно без сброса
запросить ID не получается (лезут нули), а через сброс стабильно принимаю 0х94
попробовал запросить регистр FULL_SCALE-
- отправляю 5 пачек по 8 тактов с еденичками на DIN под одним CS
- опускаю CS, отправляю пачку из 8 тактов с числом 0х78, поднимаю CS
- опускаю CS, отправляю пачку из 8 тактов с нулями и ловлю число 0хa9
- отправляю пачку из 8 тактов с нулями и ловлю число 0х5a, поднимаю CS.
если предположить что первый байт младший то получается число 0х5аа9, что вроде похоже на дефолт в даташите.
Частота тактов 100кгц, есть задержка после опускания CS до первого такта 25 мкс.
нужно ли при попытке чтения ожидать опускания DOUT (после опускания CS) ?
срисовал с осциллографа запись в CR, с таким SPI нормально работают еепромки, но тут чото хитрое
Ruslan1
Jun 5 2012, 14:59
Что-то Вы жестоко с CS обходитесь, не нужно его во время транзакции дергать между байтами. Попробуйте
1. сначала произвести сброс при активном CS
2. начинать операцию с активизации CS (CS=0). далее пишите COMMUNICATIONS REGISTER, следующим(и) байтом/байтами пишите-читаете установленный RS0-RS2 регистр. Далее деактивируете CS (CS=1).
Это все в даташите есть.
Ruslan1 сделал как сказали - сразу заработало. хотя вчера всякие варианты пробовал.. Считалось число 0х4а что похоже на даташит.
что следующим шагом предпринять ?
и почемуто два раза подряд не получается считать ID. не понимаю. UPD! понял вроде. я после чтения числа 0х4а поднимаю CS и повторная процедура не проходит, а если CS оставить опущенным и снова запросить ID то стабильно считывается 0х4а. Я правильно понимаю что на протяжении всей сессии общения с микрухой начиная от конфигурирования и на протяжении считывания регистра данных необходимо удерживать CS в активном опущенном состоянии ? и что если я вдруг подниму CS то потеряю интерфейсу ?
Еще возвращаясь к схеме подключения на предыдущей странице хочу предположить что вместо входов А3+ и А3- необходимо писать Refin+ и Refin-, так ли ?
На кратинке фотошот с осцила с ножек SCLK и DOUT, как видно из картинки - чтение прошло успешно
еще на картинке перерисованная карандашиком схемка для трехпроводки от Ruslan1
и еще картинка с макеткой прилепленной к моей плисе
Цитата(saska @ Jun 6 2012, 09:06)

Еще возвращаясь к схеме подключения на предыдущей странице хочу предположить что вместо входов А3+ и А3- необходимо писать Refin+ и Refin-, так ли ?
Автор! Картинку чего и зачем прилепили???А по сути темы - складывается впечатление, что Вам лень читать даташиты.
Хотите, чтобы Вам их дядя или тетя вслух читали?
По поводу аналоговой части намекну, что провода к терморезистору должны быть одинаковые по длине и сечению.
Tanya если внимательно посмотреть ваши посты в теме и других по AD7792/93 то обнаруживаю что из десятка ответов нет ни одного по существу. ни формулы, ни кусочка кода, даже малейшего упоминания о реализации проекта. Складывается впечатление что вы либо познали всe либо вообще не в теме, тоесть микросхему в живую и не видели и с ней не работали. По регламенту оформления постов спасибо за указания- исправил. О общих правилах построения трехпроводной схемы подключения RTD осведомлен, но это надо развивать в другой теме
Цитата(saska @ Jun 6 2012, 13:20)

. О общих правилах построения трехпроводной схемы подключения RTD осведомлен, но это надо развивать в другой теме
Тогда Ваши вопросы расходятся с Вашими же ответами.
Что до Вашей оценки моих постов... Уж извините, тут не все гении... пишут всякое...
Вот коды не пишу... Каюсь.
Даташиты нужно читать внимательно. Не хотите - пишите в раздел "предлагаю работу", как Вам уже намекали.
Цитата(saska @ Jun 6 2012, 08:06)

вместо входов А3+ и А3- необходимо писать Refin+ и Refin-
Вам каждый ответивший предложил прочитать тему, а если всё ещё лень, то просто делайте, как написано.
вот привожу расчет и подтверждение формулы Ruslan1 мож кому пригодица
я так понимаю что идентичность в показаниях нескольких микросхем ацп достигается засчет идентичности параметров эталонных резисторов в цепи каждого ацп. А можно ли эту идентичность свести к какому нибуть одному элементу или параметру? например к общему эталонному Uref.. если нет таких вариантов прошу объяснить почему, или привести пример компромиссного решения. Вопрос в первую очередь к Ruslan1 так как он единственный кто тут комментирует по существу
Судя по отсутствию в Ваших "формулах" такого существа, как I
REF, прочитать тему Вам по-прежнему лениво.
Цитата(saska @ Jun 7 2012, 10:00)

можно ли эту идентичность свести к какому нибуть одному элементу или параметру
Конечно можно — опорник и все RTD последовательно, всё тот же закон Ома, давно Вам предложенный.
Plain наверное расшифровать эту фразу
Цитата
Судя по отсутствию в Ваших "формулах" такого существа, как IREF, прочитать тему Вам по-прежнему лениво
вам показалось очень сложно и мне остается только догадываться что за IREF я не указал. Применительно к моим "формулам" и нарисованной схеме, IREF это ток в цепи схемы подачи опорного напряжения на ацп. Я уверен что ток в этой цепи должен быть пренебрежимо мал. Для подтверждения прикрепляю шот даташита , заметьте я не бросаю общих беспредметных фраз типа "читайте дш внимательней" "смотрите закон ома" и прочих. Прошу вас указывать поконкретнее, но без крайностей. Насчет последовательного соединения RTD спасибо, попорбую нарисовать схему и предложить на редактирование
Ruslan1
Jun 7 2012, 17:49
Цитата(saska @ Jun 7 2012, 19:39)

Я уверен что ток в этой цепи должен быть пренебрежимо мал.
Это хороший вопрос, постараюсь дать хороший ответ (сам когда-то на это натыкался- нужно всегда контролировать входные токи, бывают сюрпризы).
Определим понятие "пренебрежимо мал": вызванная им погрешность не отражается на результате измерения. Давайте посчитаем, как сделать этот ток "пренебрежимо малым": для этого достаточно вливать в цепь ток, который значительно больше этого паразитного тока утечки.
Ток утечки равен пусть 400 nA=4е-7 А (для Vref=1V). для того, чтобы эта утечка изменила состояние АЦП на не более чем 1 бит, вкачиваемый ток должен быть равен 65536*4е-7 = 2.6е-2 А. Хм, двадцать шесть миллиампер несколько многовато, нет?
А теперь давайте полюбуемся на входной ток для AIN: 1nA max для самого плохого (разумеется, буферизированного) варианта. В 400 раз меньше, однако.
So, i hope you have understood what I mean.
Цитата(saska @ Jun 7 2012, 10:00)

я так понимаю что идентичность в показаниях нескольких микросхем ацп достигается засчет идентичности параметров эталонных резисторов в цепи каждого ацп. А можно ли эту идентичность свести к какому нибуть одному элементу или параметру? например к общему эталонному Uref.. если нет таких вариантов прошу объяснить почему, или привести пример компромиссного решения.
Вам предложили мостовую схему измерения. У моста не может быть несколько верхних-нижних плеч.
Цитата(saska @ Jun 7 2012, 19:39)

Для подтверждения прикрепляю шот даташита
Ну да, где с какого-то перепугу указан абстрактный средний ток — нормального инженера этот факт должен сильно напрячь, потому что:
а) он не постоянный;
б) максимальный не указан вовсе.
Упреждая возможное продолжение Ваших мечт, скажу, что второй пункт у таких АЦП частенько доходит до нескольких миллиампер.
Ruslan1 Plain спасибо за новость и подробное ее описание.
Цитата
So, i hope you have understood what I mean
но я не увидел намека на способ устранения ошибок пробразования изза большого тока Iref. Что можно придумать.. ну самый порстой способ- поставить буфер на отдельном операционнике. Еще можно использовать входы А3+ и А3- следующим образом - подключить входы А3+ и А3- в входном мультиплексоре, переключить входы UREF на встроенный опорник напряжения, померять напряжение на А3, вычислить ток через эталонный резистор, использовать этот ток в расчетах. Но сейчас вы скажете что внутренний опорник напряжения пляшет и не годица.. а подключить внешний опорник напряжения уже не получится потому что ножки А3+ и А3- совмещены с REF+ и REF-. Жду коментов/
Вот в даташите написано что опорное напряжение 1.17 вольта имеет удовлетворительную погрешность. или это тоже бабушка надвое ляпнула
Ruslan1
Jun 8 2012, 09:01
Цитата(saska @ Jun 8 2012, 09:36)

Ruslan1 Plain спасибо за новость и подробное ее описание. но я не увидел намека на способ устранения ошибок пробразования изза большого тока Iref. Что можно придумать..
я не собираюсь указывать, но мне кажется, что Ваши вопросы замечательно подходят для раздела "для начинающих". Подымайте тему там. Причем назовите тему например "как измерить сопротивление" и люди к Вам потянутся. Совершенно никак не коррелирует то что вы спрашиваете с типом АЦП.
Цитата(saska @ Jun 8 2012, 09:36)

не увидел намека на способ
Он в сообщении №3 этой темы — три измерения, тремя честными входами, и никакого I
REF.
Plain читаю псто№3
Цитата
Внутренний опорник будет при этом не доступен, но он и не нужен — входную цепь можно подключить к любому локально стабильному источнику.
я вот смотрю на блок схему ацп и вижу что при подключении входа А3 происходит и подключение Uref ацп к в нутреннему источнику опорного напряжения, тоесть внутренний доступен. что вы имели в виду ?
Ruslan1 можете рассказать как вы в своем проекте с AD7792 с трехпроводкой учли ток Iref ? (вроде вопрос коррелирован с типом ацп)
А скажите, плз, кто-нибудь занимался добычей правдоподобных данных с внутреннего датчика АЦП? У меня почему-то с внутреннего датчика приезжает совсем отрицательная температура (если верить DS)
я просто откалибрвал по китайскому мультиметру с термопарой, правда сам параметр нигде не используется. Кстати спасибо Ruslan1 за подсказки, а девайс получился удобным, многофунциональным - можно термосопр подключать по 2-, 3-, 4-х проводной схеме, а также можно подключать термопару на максимальном коефф усиления, но термопара должна быть изолированная (дурацкое ограничение ад7792 !!)
пусть поздно, но вот сфоткал что получилось - на плиске крутятся 12 каналов по трехпроводной схеме, частота сбора 1 - 32 Гц. Сбор и арифметика реализована аппаратно, процессор в плиске при старте только подготавливает АЦП - сброс, конфиг, калибровка. В процессе отладки вылезли все "бобики" описанные на форуме, но определена последовательность действий после которой АЦП начал слушаца.
Цитата(saska @ Jun 19 2014, 15:26)

пусть поздно, но вот сфоткал что получилось - на плиске крутятся 12 каналов по трехпроводной схеме, частота сбора 1 - 32 Гц. Сбор и арифметика реализована аппаратно, процессор в плиске при старте только подготавливает АЦП - сброс, конфиг, калибровка. В процессе отладки вылезли все "бобики" описанные на форуме, но определена последовательность действий после которой АЦП начал слушаца.
Привет!
Клевая штука получилась, тоже давно ужу хотел попробовать на плиске сгородить чё-нить.
Вопрос по ошибкам измерения. Подключил я переменное сопротивление на вход АЦП и собственно его меряю. Ставлю коэффициент усиления 16 (регистр CONFIG, в верхнем байте) и получаю на выходе ошибку. Без усиления измеренное сопротивление = 237.10 Ом, с усилением измеренное сопротивление = 237.29 Ом. Разница почти 0.2 Ом, что много. Очевидно вылезла ошибка усиления. По фразе gain error в даташите полазил, ничего не нашел как с ней бороться. Буффер всегда включен (регистр CONFIG, нижний байт). Внутренняя калибровка тут вряд ли поможет (поправьте если не прав), поскольку запуская калибровку с выбранным коэффициентом усиления, эталонные (калиброванные) сопротивления будут измеряться с той же ошибкой усиления. Значит ли, что если применен коэфициент усиления, то ошибка усиления не устранима возможностями самой АЦП ?
Спасибо!
PS А зачем аж 12 каналов ? В смысле не могу представить сферу применения где сразу 12 каналов температур может понадобится.
в описании на микросхему имеется фраза - При смене коэффициента усиления обязательно делайте внутреннюю калибровку, иначе вылезет ошибка связанная с неточностью внутренней обвязки (резисторов) переключателя коэффициентов, ну и может еще входной ток буферного усилителя скажется. А калибровку лучше делать динамическую хотя бы 2 раза в секунду, ибо этот ацп давал мне разброс +/- 30 единиц кода в зависимости от внешней температуры от 20 до 40 градусов соответственно на столе и в составе прибора, и опорный резистор совсем не при делах. Динамическую решил отключить для простоты сбора и отсуцтвии требований точности, усилителем тож перестал пользоваца т.к. и без него точность в полградуса выходит. Шумит в верху диапазона 2 разряда,а в низу диапазона 1 разрядик. Проверяю блоком сопротивлений и разница в нормальных условиях порядка +/- 0.05Ом, о большем даже не мечтаю ) Опорные резисторы размером 0805 5ppm 0.01% коих в ассортименте на складах mouser, digikey,arrow и пр. От себя добавлю что процедуру калибровки надо проконтролировать - убедица что коэффициенты действительно изменились. Модуль применяется в составе накопителя ТН3 из состава СБИ АТ для измерения температур холодных спаев, воздуха в системах и тд
Цитата(saska @ Jun 20 2014, 19:00)

в описании на микросхему имеется фраза - При смене коэффициента усиления обязательно делайте внутреннюю калибровку, иначе вылезет ошибка связанная с неточностью внутренней обвязки (резисторов) переключателя коэффициентов, ну и может еще входной ток буферного усилителя скажется. А калибровку лучше делать динамическую хотя бы 2 раза в секунду, ибо этот ацп давал мне разброс +/- 30 единиц кода в зависимости от внешней температуры от 20 до 40 градусов соответственно на столе и в составе прибора, и опорный резистор совсем не при делах. Динамическую решил отключить для простоты сбора и отсуцтвии требований точности, усилителем тож перестал пользоваца т.к. и без него точность в полградуса выходит. Шумит в верху диапазона 2 разряда,а в низу диапазона 1 разрядик. Проверяю блоком сопротивлений и разница в нормальных условиях порядка +/- 0.05Ом, о большем даже не мечтаю ) Опорные резисторы размером 0805 5ppm 0.01% коих в ассортименте на складах mouser, digikey,arrow и пр. От себя добавлю что процедуру калибровки надо проконтролировать - убедица что коэффициенты действительно изменились. Модуль применяется в составе накопителя ТН3 из состава СБИ АТ для измерения температур холодных спаев, воздуха в системах и тд
Спасибо за информацию. Я установил самое большое время преобразования (регистр MODE, младший байт), получилось 4.17 Гц частота преобразования. Показания очень стабильны, даже думка была а не подвисло ли у меня чего.
Внутреннюю калибровку запускаю по двум каналам (поскольку 3-х проводное соединение) один раз на 100 опросов АЦП, вне зависимости от температуры чипа. Пробовал греть бытовым феном. Дискреты поначалу выросли на 20-25 единиц, но после стабилизации температурного режима почти вернулись на исходные показания, разница порядка 3-5 дискрет всего. Это хорошо. А вот с ошибкой усиления ничего не изменилось, калибровка никак не сказывается на ней, буду компенсировать внешней калибровской в коде микроконтроллера.
Удачи!
Lagman
Jun 25 2014, 09:05
А 3-х проводную схему подключения применили как писали (рисовали) в этой теме? (
картинка)
Цитата(Lagman @ Jun 25 2014, 13:05)

А 3-х проводную схему подключения применили как писали (рисовали) в этой теме? (
картинка)
Привет
Почти такая же, разница только что только компенсацию внизу меряю. Тут схемка
Lagman
Jun 27 2014, 12:31
У вас 4-х проводная или я не правильно понял?
Трех проводка
Цитата(Lagman @ Jun 27 2014, 16:31)

У вас 4-х проводная или я не правильно понял?
Трех проводка

Схема допускает подключение по 2х 3х и 4х проводной схеме. Установкой перемычек выбирается нужная схема. Я использую в основном 3х проводное
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.