|
Внутренняя Калибровка AD7792 |
|
|
|
Mar 28 2012, 14:09
|
Группа: Новичок
Сообщений: 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. Я прав?
|
|
|
|
|
 |
Ответов
(1 - 56)
|
Mar 28 2012, 16:54
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(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 Поищите по форуму. Это уже обсуждалось. Может быть для другого АЦП, но все должно совпадать по сути.
|
|
|
|
|
Mar 28 2012, 17:51
|
Гуру
     
Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710

|
Во-первых, лучше откажитесь от 3-проводного подключения.
Если всё же настаиваете, то перейдите на 3-стадийное дифференциальное измерение, т.е. внутренний опорник, 3 диффвхода, 3 измерения и однозначно с включённым входным буфером.
Внутренний опорник будет при этом не доступен, но он и не нужен — входную цепь можно подключить к любому локально стабильному источнику.
Её должны последовательно составлять RTD, эталон и два резистора, сверху/снизу, т.е. нормирующих сигналы в допустимый диапазон уровней в этом режиме АЦП.
Ещё раз повторю, что 4-проводное соединение выгоднее, потому что число деталей такое же, но входов надо 2, и измерений тоже 2, т.е. меньше.
И ещё раз — никаких встроенных источников тока, не верьте им.
|
|
|
|
|
Mar 28 2012, 19:50
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(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), но принцип работы схемы другой, все считается ручками
|
|
|
|
|
Mar 29 2012, 05:41
|
Группа: Новичок
Сообщений: 6
Регистрация: 28-03-12
Пользователь №: 71 055

|
Ruslan1, Благодарю за совет , сегодня переделаю схему и скорректирую софт для проверки. Я подозревал что это из за несбалансированности источников тока, все таки +-0,5% это много... по результатам отпишусь.
|
|
|
|
|
Mar 29 2012, 07:12
|
Группа: Новичок
Сообщений: 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 }
|
|
|
|
|
Mar 29 2012, 07:33
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(bychkov77 @ Mar 29 2012, 08:41)  Ruslan1, Благодарю за совет , сегодня переделаю схему и скорректирую софт для проверки. Я подозревал что это из за несбалансированности источников тока, все таки +-0,5% это много... по результатам отпишусь. Да пожалуйста  Вроде достаточно много их применял для RTD- проблем не было. Причем руками калибровочные константы в АЦП никогда не трогал, меня калибровка канала в целом интересовала, посему есть калибровочные константы в приборе (многоканалка) и процедура поверки-калибровки для метрологов-ремонтников. Кстати, если вдруг у Вас 4х проводка- лучше посмотрите AD7789. Они примерно на 30% дешевле и при этом имеют 24 бита а не 16. Опять же референсное сопротивление, но уже в верхнем плече, оно же задает максимальный ток. на NTC работает отлично, для меди-платины нужно смотреть разрешающую способность.
|
|
|
|
|
Mar 29 2012, 08:16
|

Гуру
     
Группа: Модератор 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ов насажали, и все не туда, куда надо?  Суть проблемы объединения двух однобайтовых (BYTE) значений в одно двухбайтное (WORD) только в том, чтобы не потерять значение после сдвига buf1 на 8 позиций влево. Т.к. существует риск, что сдвинутые разряды пропадут, не поместившись в BYTE. Чтобы этого не случилось, buf1 приходится СНАЧАЛА растянуть до WORD, и только потом в этом виде сдвигать - тогда уж точно сдвинутым влево битам найдется место. Вот так: *Fs = ((WORD)buf1<<8) | buf2; А у вас buf1 сдвигается влево безо всяких предосторожностей, а то, что потом WORD стоят лесом, уже не поможет, поскольку потерянные разряды не восстановить, преобразуя к более просторной сетке задним числом. Если у вас эта витиеватая конструция все-таки работает нормально, то скорее всего лишь потому, что buf1 определено у вас не как BYTE, а как WORD (к сожалению, в приведенном вами коде декларация buf1 отсутствует). Но если это так, то и подавно ни один из поставленных вами WORD здесь не нужен.
|
|
|
|
|
Mar 29 2012, 12:43
|
Группа: Новичок
Сообщений: 6
Регистрация: 28-03-12
Пользователь №: 71 055

|
Цитата(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 дискрет
|
|
|
|
|
May 29 2012, 09:23
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
вот тоже собираюсь измерять RTD и вижу кроме AD7792/93 еще у техаса ADS1247/48 которые выглядят примерно одинаково, на первый взгляд разница только в значениях источников тока (у техаса 50 - 1500мка, у ад 10 - 1000мка), и у техаса про подключаемый буфер ничего не написано. Как думаете - у техаса источники тока более одинаковы чем у ад ?
|
|
|
|
|
May 29 2012, 14:00
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
Ruslan1 читая ваши рекомендации я понимаю что вы предлагаете не использовать оба источника но оставить один и использовать эталонный резистор. было бы неплохо увидеть это в виде схемы.. вот еще одна рекомендация но с использованием AIN3 .. начинается путаница
Эскизы прикрепленных изображений
|
|
|
|
|
May 29 2012, 19:31
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
Ruslan1 постараюсь осмыслить, завтра привезу парочку микросхем и буду стыковать с ниосом
|
|
|
|
|
May 31 2012, 08:23
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

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

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
Ruslan1кажеца, но я не знаю где грань. А что касается описания формулы - это еще бесплатная подсказка или уже платная ?
Сообщение отредактировал saska - Jun 1 2012, 12:06
|
|
|
|
|
Jun 1 2012, 14:31
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
закон ома точно не помню но что то о пропорциональной связи сопротивления напряжения и тока.. на гугле и вики забанен  а вот применительно к вашей формуле сразу возникает вопрос - а где же А3 ? Rx = Re*((A2-A1)/65536) где А1 и А2 - соотвецтвенно код, измеренный с входов Аin1 и Ain2 Rx - измеряемое сопротивление, Re - эталонное сопротивление
|
|
|
|
|
Jun 1 2012, 15:35
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(saska @ Jun 1 2012, 15:06)  Ruslan1кажеца, но я не знаю где грань. А что касается описания формулы - это еще бесплатная подсказка или уже платная ? А Вы посмотрите выше, как у bychkov77 получилось: человек копал этот вопрос но результат его не устроил. Достаточно было намека на пальцах, чтобы он не только понял о чем идет речь, но и довел до результата. То есть видно, что человек "в теме", ему просто небольшой совет нужен был. Вам же нужно "написать", "описать", "рассказать". По Вашему вопросу: A3 нигде. делайте так как написали.
|
|
|
|
|
Jun 5 2012, 14:07
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
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 нормально работают еепромки, но тут чото хитрое
Сообщение отредактировал saska - Jun 5 2012, 14:03
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 6 2012, 05:06
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
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, 10:22
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 6 2012, 09:20
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
Tanya если внимательно посмотреть ваши посты в теме и других по AD7792/93 то обнаруживаю что из десятка ответов нет ни одного по существу. ни формулы, ни кусочка кода, даже малейшего упоминания о реализации проекта. Складывается впечатление что вы либо познали всe либо вообще не в теме, тоесть микросхему в живую и не видели и с ней не работали. По регламенту оформления постов спасибо за указания- исправил. О общих правилах построения трехпроводной схемы подключения RTD осведомлен, но это надо развивать в другой теме
|
|
|
|
|
Jun 6 2012, 09:33
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

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

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
вот привожу расчет и подтверждение формулы Ruslan1 мож кому пригодица я так понимаю что идентичность в показаниях нескольких микросхем ацп достигается засчет идентичности параметров эталонных резисторов в цепи каждого ацп. А можно ли эту идентичность свести к какому нибуть одному элементу или параметру? например к общему эталонному Uref.. если нет таких вариантов прошу объяснить почему, или привести пример компромиссного решения. Вопрос в первую очередь к Ruslan1 так как он единственный кто тут комментирует по существу
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 7 2012, 16:39
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
Plain наверное расшифровать эту фразу Цитата Судя по отсутствию в Ваших "формулах" такого существа, как IREF, прочитать тему Вам по-прежнему лениво вам показалось очень сложно и мне остается только догадываться что за IREF я не указал. Применительно к моим "формулам" и нарисованной схеме, IREF это ток в цепи схемы подачи опорного напряжения на ацп. Я уверен что ток в этой цепи должен быть пренебрежимо мал. Для подтверждения прикрепляю шот даташита , заметьте я не бросаю общих беспредметных фраз типа "читайте дш внимательней" "смотрите закон ома" и прочих. Прошу вас указывать поконкретнее, но без крайностей. Насчет последовательного соединения RTD спасибо, попорбую нарисовать схему и предложить на редактирование
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 7 2012, 17:49
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(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.. если нет таких вариантов прошу объяснить почему, или привести пример компромиссного решения. Вам предложили мостовую схему измерения. У моста не может быть несколько верхних-нижних плеч.
|
|
|
|
|
Jun 7 2012, 19:31
|
Гуру
     
Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710

|
Цитата(saska @ Jun 7 2012, 19:39)  Для подтверждения прикрепляю шот даташита Ну да, где с какого-то перепугу указан абстрактный средний ток — нормального инженера этот факт должен сильно напрячь, потому что: а) он не постоянный; б) максимальный не указан вовсе. Упреждая возможное продолжение Ваших мечт, скажу, что второй пункт у таких АЦП частенько доходит до нескольких миллиампер.
|
|
|
|
|
Jun 8 2012, 06:36
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

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

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
Plain читаю псто№3 Цитата Внутренний опорник будет при этом не доступен, но он и не нужен — входную цепь можно подключить к любому локально стабильному источнику. я вот смотрю на блок схему ацп и вижу что при подключении входа А3 происходит и подключение Uref ацп к в нутреннему источнику опорного напряжения, тоесть внутренний доступен. что вы имели в виду ?
|
|
|
|
|
Jun 8 2012, 14:49
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
Ruslan1 можете рассказать как вы в своем проекте с AD7792 с трехпроводкой учли ток Iref ? (вроде вопрос коррелирован с типом ацп)
|
|
|
|
|
Jul 25 2012, 06:51
|
Группа: Новичок
Сообщений: 1
Регистрация: 25-07-12
Пользователь №: 72 895

|
А скажите, плз, кто-нибудь занимался добычей правдоподобных данных с внутреннего датчика АЦП? У меня почему-то с внутреннего датчика приезжает совсем отрицательная температура (если верить DS)
|
|
|
|
|
Aug 17 2012, 06:00
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
я просто откалибрвал по китайскому мультиметру с термопарой, правда сам параметр нигде не используется. Кстати спасибо Ruslan1 за подсказки, а девайс получился удобным, многофунциональным - можно термосопр подключать по 2-, 3-, 4-х проводной схеме, а также можно подключать термопару на максимальном коефф усиления, но термопара должна быть изолированная (дурацкое ограничение ад7792 !!)
|
|
|
|
|
Jun 19 2014, 11:26
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
пусть поздно, но вот сфоткал что получилось - на плиске крутятся 12 каналов по трехпроводной схеме, частота сбора 1 - 32 Гц. Сбор и арифметика реализована аппаратно, процессор в плиске при старте только подготавливает АЦП - сброс, конфиг, калибровка. В процессе отладки вылезли все "бобики" описанные на форуме, но определена последовательность действий после которой АЦП начал слушаца.
Эскизы прикрепленных изображений
|
|
|
|
|
Jun 20 2014, 06:37
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115

|
Цитата(saska @ Jun 19 2014, 15:26)  пусть поздно, но вот сфоткал что получилось - на плиске крутятся 12 каналов по трехпроводной схеме, частота сбора 1 - 32 Гц. Сбор и арифметика реализована аппаратно, процессор в плиске при старте только подготавливает АЦП - сброс, конфиг, калибровка. В процессе отладки вылезли все "бобики" описанные на форуме, но определена последовательность действий после которой АЦП начал слушаца. Привет! Клевая штука получилась, тоже давно ужу хотел попробовать на плиске сгородить чё-нить. Вопрос по ошибкам измерения. Подключил я переменное сопротивление на вход АЦП и собственно его меряю. Ставлю коэффициент усиления 16 (регистр CONFIG, в верхнем байте) и получаю на выходе ошибку. Без усиления измеренное сопротивление = 237.10 Ом, с усилением измеренное сопротивление = 237.29 Ом. Разница почти 0.2 Ом, что много. Очевидно вылезла ошибка усиления. По фразе gain error в даташите полазил, ничего не нашел как с ней бороться. Буффер всегда включен (регистр CONFIG, нижний байт). Внутренняя калибровка тут вряд ли поможет (поправьте если не прав), поскольку запуская калибровку с выбранным коэффициентом усиления, эталонные (калиброванные) сопротивления будут измеряться с той же ошибкой усиления. Значит ли, что если применен коэфициент усиления, то ошибка усиления не устранима возможностями самой АЦП ? Спасибо! PS А зачем аж 12 каналов ? В смысле не могу представить сферу применения где сразу 12 каналов температур может понадобится.
|
|
|
|
|
Jun 20 2014, 15:00
|
Участник

Группа: Участник
Сообщений: 23
Регистрация: 13-01-06
Пользователь №: 13 156

|
в описании на микросхему имеется фраза - При смене коэффициента усиления обязательно делайте внутреннюю калибровку, иначе вылезет ошибка связанная с неточностью внутренней обвязки (резисторов) переключателя коэффициентов, ну и может еще входной ток буферного усилителя скажется. А калибровку лучше делать динамическую хотя бы 2 раза в секунду, ибо этот ацп давал мне разброс +/- 30 единиц кода в зависимости от внешней температуры от 20 до 40 градусов соответственно на столе и в составе прибора, и опорный резистор совсем не при делах. Динамическую решил отключить для простоты сбора и отсуцтвии требований точности, усилителем тож перестал пользоваца т.к. и без него точность в полградуса выходит. Шумит в верху диапазона 2 разряда,а в низу диапазона 1 разрядик. Проверяю блоком сопротивлений и разница в нормальных условиях порядка +/- 0.05Ом, о большем даже не мечтаю ) Опорные резисторы размером 0805 5ppm 0.01% коих в ассортименте на складах mouser, digikey,arrow и пр. От себя добавлю что процедуру калибровки надо проконтролировать - убедица что коэффициенты действительно изменились. Модуль применяется в составе накопителя ТН3 из состава СБИ АТ для измерения температур холодных спаев, воздуха в системах и тд
|
|
|
|
|
Jun 25 2014, 05:44
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115

|
Цитата(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 дискрет всего. Это хорошо. А вот с ошибкой усиления ничего не изменилось, калибровка никак не сказывается на ней, буду компенсировать внешней калибровской в коде микроконтроллера. Удачи!
|
|
|
|
|
Jun 27 2014, 05:33
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115

|
Цитата(Lagman @ Jun 25 2014, 13:05)  А 3-х проводную схему подключения применили как писали (рисовали) в этой теме? ( картинка) Привет Почти такая же, разница только что только компенсацию внизу меряю. Тут схемка
|
|
|
|
|
Jun 30 2014, 07:04
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115

|
Цитата(Lagman @ Jun 27 2014, 16:31)  У вас 4-х проводная или я не правильно понял? Трех проводка  Схема допускает подключение по 2х 3х и 4х проводной схеме. Установкой перемычек выбирается нужная схема. Я использую в основном 3х проводное
|
|
|
|
|
Jun 30 2014, 17:28
|
Частый гость
 
Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115

|
Цитата(Xenia @ Jun 30 2014, 19:33)  Где там эти перемычки? Не вижу! На мой взгляд, только SPI поддерживает и ничего более. А 4-ый провод - чипселект, он обычно бывает нужен для сихронизации. Смотрите мой пост от Jun 27 2014, 09:33 Там в приложении схемка SCHEMATIC1___ADC_DI.pdf . Речь про неё
|
|
|
|
|
Feb 15 2016, 04:38
|
Местный
  
Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041

|
Цитата(Ruslan1 @ May 29 2012, 20:26)  Вот, визуализировал свой же текст в графической форме. первый рисунок для описания принципа, второй для трехпроводки.  У меня вопрос по этой схеме. Нужно ли это схему калибровать? Я имею ввиду не встроенную калибровку, а именно калибровку всего измерительного канала, при такой схеме подключения. Например есть у меня с десяток плат, сделанных по такой схеме, нужно ли их ВСЕ калибровать на эталоне?
|
|
|
|
|
Feb 18 2016, 07:44
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(yanvasiij @ Feb 15 2016, 07:38)   У меня вопрос по этой схеме. Нужно ли это схему калибровать? Я имею ввиду не встроенную калибровку, а именно калибровку всего измерительного канала, при такой схеме подключения. Например есть у меня с десяток плат, сделанных по такой схеме, нужно ли их ВСЕ калибровать на эталоне? Какая точность измерения и в каком диапазоне рабочих температур Вам нужна? Точность и ТКС резистора- известна, влияние входных токов можно тоже предсказать ( в буферизированной моде они там вообще никакие, максимум 1 nA) Берете и считаете, что получается при Вашем диапазоне сопротивлений в худшем случае. У нас еще входные цепи для защиты установлены , так вот их неодинаковость компенсировали калибровкой. Кстати, важный вопрос- в чем задана погрешность. Например, если измеряется NTC и погрешность нужна не в Омах а в Градусах, то можно сильно уменьшить необходимый для ее достижения динамический диапазон сопротивления, и выбрать менее битный АЦП. (так как зависимость R(T) нелинейная).
|
|
|
|
|
Feb 19 2016, 12:54
|
Местный
  
Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041

|
Цитата(Ruslan1 @ Feb 18 2016, 12:44)  Какая точность измерения и в каком диапазоне рабочих температур Вам нужна? Точность и ТКС резистора- известна, влияние входных токов можно тоже предсказать ( в буферизированной моде они там вообще никакие, максимум 1 nA) . Я имел ввиду, если считать референтный резистор абсолютно точным, насколько значительна погрешность АЦП и вообще всей схемы?
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|