Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AD7730 + датчик давления 26PCA
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
Страницы: 1, 2, 3, 4
alux
Да. Остановился таки на возбуждении постоянным напряжением. Может после всего на досуге поэксперементирую со знакопеременным smile.gif

Цитата(sensor_ua @ Mar 20 2007, 23:28) *
если сенсор имеет хороший отклик и мы этот отклик со всеми 7.5 мс установления в Fast Mode хотим получить сразу, фильтр должен быть выше этих 15 Гц. Я бы поставил выше цифры 400 Гц, например, 1-2 кГц. Что рассчитывать? ФНЧ? Я не имею расчёта требований, а выбираю по критериям и все их Вам уже описывал - может и есть некоторые другие достаточно субъективные, но это всё равно плюс-минус трамвайная остановка. Расчёт видел когда-то в аппликухах Crystal, но касался он несколько другого АЦП (но тоже сигма-дельта), кажись CS5505, и используемого в несколько других условиях. Там цифры были 412 Ом на 470 пФ.

У 26PCAFA6D заявлено максимальный отклик 1 мс. Кстати, время установления в Fast Mode
у AD7730 7.5мс . У AD7730L - в два раза больше , 15мс. Я выбрал с буквой (L) из-за потребления.
Да, я обратил внимание на низкое потребление на горячо разрекламированной Вами у CS5522 (7.5mW), понравилась интересная возможность подстройки входного диапазона, и калибровочные коэффициенты для каждого канала и мн.др... Просто я имел дело с AD7714 и не хотел бы сейчас кардинально что-нибудь менять. Возможно, я заложу CS5522 в следующей разработке.

Цитата(sensor_ua @ Mar 20 2007, 23:28) *
если сенсор имеет хороший отклик и мы этот отклик со всеми 7.5 мс установления в Fast Mode хотим получить сразу, фильтр должен быть выше этих 15 Гц. Я бы поставил выше цифры 400 Гц, например, 1-2 кГц.

Частота среза фильтра должна рассчитыватся исходя из Output Data Rate или уровня шума ? Ваши цифры отличаются на 2 порядка (15Гц...2кГц). Так все-таки... wink.gif
sensor_ua
Посмотрел доку на сенсор и тоже ничего запрещающего не нашёл.

Цитата
У 26PCAFA6D заявлено максимальный отклик 1 мс. Кстати, время установления в Fast Modeу AD7730 7.5мс . У AD7730L - в два раза больше , 15мс. Я выбрал с буквой (L) из-за потребления.

Итак, обсуждается схема 25. Имеем нюанс с уровнем синфазного напряжения на входе АЦП - и доблестно хитрым хинтом со смещением AGND ниже уровня нуля на 1.2 В или чуть больше, получаем результат. Вроде бы ничего, да и сам производитель рекомендуетwink.gif Правда, я не совсем уверен, что знаю, куда подключать в такой схеме конденсаторы ФНЧwink.gif
Цитата
Частота среза фильтра должна рассчитыватся исходя из Output Data Rate или уровня шума ? Ваши цифры отличаются на 2 порядка (15Гц...2кГц). Так все-таки...

Если Вы хотите получить максимально быстро сигнал отклика сенсора, то фильтр должен иметь более высокую частоту среза, чем единица на время ОТКЛИКА СЕНСОРА. Если время отклика сенсора мало и меньше периода обновления выходных данных АЦП, то это не очень хорошо, так как что Вы намеряете может совсем не совпасть с ожидаемым. Как пример, измерение давления газа после редуктора - там дергания с достаточно низкой частотой, но это "низко" может быть неприемлемо для выбранной скорости оцифровки.
Т.е. частоту обновления данных нужно рассматривать (по возможности) как скорость оцифровки. И она должна быть быстрее, чем время отклика сенсора, скорее время изменения сигнала давления уже на входе АЦП. Но скорость обновления данных, ИМХО, никоим образом напрямую не связана с частотой среза ФНЧ, которая выбирается из нижней частоты ожидаемых наводок/помех и т.п. - т.е. частоту среза фильтра выгодно выбирать ниже нижней частоты помехи. Однако есть маленький нюанс - частота выборки входным каскадом АЦП. Так вот важна не то чтобы сама частота выборки, а скорее величина заряда, отбираемая от выходной емкости фильтра, а если ещё ближе, то насколько изменится напряжение на ней, в зависимости от величины сигнала и количества выбранного заряда. Соответственно, эту емкость хотелось бы взять максимально большую, но тогда у соответствующих типов конденсаторов обычно выше ESR и часто больший тангенс угла потерь. Да ещё и влияние входных токов АЦП... А нам ещё зарядить после выборки опять через какое-то сопротивление (мост и резистор из ФНЧwink.gif нужно, а ток заряда обратно пропорционален времени заряда. Т.е. при включенном буфере (иногда это не буфер, а только видимость;() как-будто влияние выборки и входных токов практически не должно оказывать влияния.
Итого, если ожидаемые помехи в районе радиосигналов, то частота среза фильтра значительно ниже 150 кГцwink.gif уже как-будто хорошо. Но, как говорила монашка, натягивая презерватив на свечку... "Бережёного Бог бережёт."
ИМХО, есть смысл бояться и других, более низкочастотных помех.
О нижней границе частоты среза уже говорил.
alux
Цитата(sensor_ua @ Mar 21 2007, 01:30) *
Имеем нюанс с уровнем синфазного напряжения на входе АЦП - и доблестно хитрым хинтом со смещением AGND ниже уровня нуля на 1.2 В или чуть больше, получаем результат. Вроде бы ничего, да и сам производитель рекомендуетwink.gif

1) Я забыл про этот нюанс. Как и чем задавать это смещение (-1.2В)? Покажите, пожалуйста, на примере.

2) И еще. Можно ли вместо OPA244 поставить OP291 ? Просто я уже заказал ее...

3) Может в качестве преобразователя +5В -> +/-10В применить MAX864 ? Она работает на более высокой частоте (200кГц) и ее фирма рекомендует применять в новых разработках.
sensor_ua
1) Хинт в самой схеме 25 уже сделан. Посмотрите куда подключено GNDA. Если Вы хотите подать опорное прямо относительно GNDA, то придётся смещать уже сигнал, и в плюс.
2) OP291 имеет максимальное напряжение питания 12 V, потому при именно таком включении не подойдёт. Поставьте хоть LM2904 (почти LM358 в индустриальном исполнении) - оно есть на каждой раскладке как семечки - там точность особенная не нужна - такое сгодится.
3) Не совсем понимаю, зачем Вам делать +10 В. Если у Вас батарея уже даёт по минимуму вольт 8. Что касается -10 В, то, наверно, более высокая частота лучше будет, только максимовские микросхемы дороговаты. Я б вааще на КМОП 555 - LMC555, ICM555, 7555 и т.д. - слепил минусаторwink.gif И прямо от входных 8-9 В питал бы.
alux
В догонку.... Для питания цифровой части схемы AD7730L необходим источник питания +3В. Какой Вы посоветуйте? Нахожу только на 3.3В


Цитата(sensor_ua @ Mar 21 2007, 15:04) *
Хинт в самой схеме 25 уже сделан. Посмотрите куда подключено GNDA.

Т.е. к схеме на рис.25 добавлять ничего не надо? AGND по схеме на -2.5В ниже цифровой земли.
sensor_ua
Цитата
необходим источник питания +3В

По параметрам неочевидно, но, похоже, действительно нужно именно 3 В. LP2980 от NSC и туча TPS7xxxx от TI решат Ваш вопрос, да и LP2951 можно так отрегулировать.

Цитата
Т.е. к схеме на рис.25 добавлять ничего не надо? AGND по схеме на -2.5В ниже цифровой земли.

Вроде всё путём.
alux
ОУ для следящего стабилизатора можно любой или лучше малошумящий (например OP213) ?
Стабилизатор напряжения на 3В сделаю из LM317. Других на 3В у нас не продаются sad.gif.
Цитата(sensor_ua @ Mar 21 2007, 01:30) *
.
Итак, обсуждается схема 25. Имеем нюанс с уровнем синфазного напряжения на входе АЦП - и доблестно хитрым хинтом со смещением AGND ниже уровня нуля на 1.2 В или чуть больше, получаем результат. Вроде бы ничего, да и сам производитель рекомендуетwink.gif Правда, я не совсем уверен, что знаю, куда подключать в такой схеме конденсаторы ФНЧwink.gif

А что, разве нельзя просто RC-цепочки на каждый вход AIN (конденсаторы на землю(только какую?)) ? Или синфазный фильтр (емкость - паралельно входам, резисторы - последовательно). Мне кажется, катит только второй вариант. Как расчитать частоту среза такого фильтра?


Цитата(sensor_ua @ Mar 21 2007, 15:04) *
Что касается -10 В, то, наверно, более высокая частота лучше будет, только максимовские микросхемы дороговаты. Я б вааще на КМОП 555 - LMC555, ICM555, 7555 и т.д. - слепил минусаторwink.gif И прямо от входных 8-9 В питал бы.

Странно, MAX864 стоит почти в раза дешевле MAX680 smile.gif. Где-то порядка 5$ в розницу.
sensor_ua
Цитата
ОУ для следящего стабилизатора можно любой или лучше малошумящий (например OP213) ?

Вроде не должно быть особых требований. Малошумящий из дешёвых - TL062 - и будет в этой схеме прекрасно себя чувствовать. Если индустриальный - ADTL062.
Цитата
А что, разве нельзя просто RC-цепочки на каждый вход AIN (конденсаторы на землю(только какую?)) ? Или синфазный фильтр (емкость - паралельно входам, резисторы - последовательно). Мне кажется, катит только второй вариант. Как расчитать частоту среза такого фильтра?

Да на верно и то и то можно. Считай, что по земле по переменке емкости закорочены и цепочка из 2-х последовательных уже стоит. Ну добавил им ещё одну в параллельwink.gif)) - я ж говорил - трамвайная остановка. В одном из DS на ADS1255 эти емкости были вааще по 10 мкФwink.gif))

Цитата
Странно, MAX864 стоит почти в раза дешевле MAX680 smile.gif. Где-то порядка 5$ в розницу.

За минусатор это очень дорого всё равно. То же Гэ от AD будет стОить намного дешевле. Но на 555 ещё дешевле.
alux
Повторю вопрос, который задавал в самом начале. Можно ли для питания следящего стабилизатора использовать напряжения +/-10В от MAX232 ? Не скажется передача данных по RS-232 на работе сенсора ?
sensor_ua
Цитата
Можно ли для питания следящего стабилизатора использовать напряжения +/-10В от MAX232 ? Не скажется передача данных по RS-232 на работе сенсора ?

Оно-то вроде бы можно, но нужно внимательно смотреть на просадки по выходу генератора, возможности ОУ в стабилизаторе по быстродействию, подавлению нестабильности по питанию и т.п. MAX232 в таком варианте обвязать нужно конденсаторами по 1 мкФ, а не 0.1, а потом уж смотреть. Например, SP3222 и ADM3222 так ущербно себя ведут (SP вааще) при нагрузке, что я бы не советовал их для такого подключения. Обратите внимание на MAX3243E (от TI они к тому же совсем недорогие) - у них нагрузочная способность генератора рассчитана на 3 выхода и ведёт он себя неплохо - малые просадки от нагрузки. ИМХО, стоит перестраховаться и либо проверить, либо заложить дополнительную установку отдельного "минусатора" и резистор-перемычку от MAX
alux
По поводу схемы следящего стабилизатора... Правильно ли запитан ОУ : плюс питания на +5В, минус питания - на -10В. Может питание ОУ на +/-10В ?
sensor_ua
Может. Только ОУ, конечно, должен иметь соответствующий запас (TL062, например)
alux
Необходимо измерить этим прибором температуру объекта (в газоходе). Максимальная температура - до 500 С. В качестве датчика температуры - что-нибудь из серии HEL (Honeywell). Подключение датчика - 4х проводное. Для измерения температуры хочу использовать второй канал АЦП (AIN2+-). Измерение температуры объекта будет проводится в отдельном цикле, т.е. в этот момент измерения давления не будет. Напомню, что датчик давления подключен к AIN1+- , питание +-5В (см. datasheet AD7730).
Вопрос: Как правильно подключить термодатчик к данной схеме?
sensor_ua
Если найдёте соответствующий датчик, я так понимаю, что хотитие применить платиновый RTD, на такую температуру, то Вам придётся придумать что-то типа источника тока (я бы преобразователь напряжение/ток применил) для запитки сенсора. Тут нюанс с опорным напряжением - нужно чтоб поменьше плавало, потому преобразователь напряжение/ток позволит сделать схему измерения пропорциональной. Примеры таких преобразователей, если вдруг не приходилось пользовать, посмотрите в AN687 от Microchip и DS INA2132 TI
alux
Спасибо за ссылки! Все-таки хочу уточнить один момент. В моей схеме опорное напряжение +/- 2.5 В для AD7730 формируется из падения напряжения питания моста +/- 5В на резистивном делителе 5к - 10к - 5к. Если применять схему (fig. 5) из AN687, то на входы A1 подать опорное напряжение +/- 2.5 В с делителя, питать микросхемы А1, А2 +/- 5В. Для 4-х проводной схемы : верхний вывод термосопротивления - на источник тока 1мА, нижний - на -5В (или на -2.5В)? Нужен ли усилитель А3 (для 4-х пров. схемы) ? Ведь АЦП имеет высокое входное сопротивление и ток по измерительным проводам течь не будет. В схеме прецизиозного измерения температуры на сахара_ru в измерительные цепи включены резисторы 3.3кОм. Нужно ли их ставить и как расчитывать эти сопротивления? Имеет ли смысл применять 4-х проводную схему (вместо 3-х проводной)? Длина измерительного кабеля ~1...2м.
sensor_ua
Цитата
нижний - на -5В (или на -2.5В)?
Проблемка этой схемы в том, что напряжение на измерительном резисторе равно опорному напряжению, т.е. придётся питание положительное к +5В затягивать, а ток на -2.5 В садить, дабы диапазон синфазного входного напряжения попал в допуск АЦП. Может, ещё и небольшой резистор ближе к -2.5 В придётся врезать.
Цитата
ток по измерительным проводам течь не будет

Это приближениеwink.gif Течёт он, называется входным током АЦПwink.gif.
Цитата
в измерительные цепи включены резисторы 3.3кОм. Нужно ли их ставить и как расчитывать эти сопротивления?

Это фильтры НЧ. Критерии мы уже обсуждали.
Цитата
Имеет ли смысл применять 4-х проводную схему (вместо 3-х проводной)? Длина измерительного кабеля ~1...2м.

Чем меньше сопротивление сенсора (RTD) и больше желание получить минимальную погрешность, тем ближе к 4-хпроводной схеме
alux
Цитата(sensor_ua @ May 14 2007, 20:04) *
Проблемка этой схемы в том, что напряжение на измерительном резисторе равно опорному напряжению, т.е. придётся питание положительное к +5В затягивать, а ток на -2.5 В садить, дабы диапазон синфазного входного напряжения попал в допуск АЦП. Может, ещё и небольшой резистор ближе к -2.5 В придётся врезать.

Не понял. Питание ОУ А1, А2 = +/- 5В. На вход А1 опорное напряжение +/- 2.5В. Нижний вывод ТС - на -2.5В ? Для чего нужен еще дополнительный резистор врезать? AIN2(-) = REF(-) = -2.5V , REF(+) = +2.5V, что есть в пределах нормы.Нужен ли А3 для устранения влияния проводов?

А... я понял. Вы имели в виду следующее: V (ain2) = 1mA* 100 Ohm = 0.1V. А макс. входное напряжение на АЦП +/- 80мВ. Я прав? Дополнительный резистор нужен для приведения к диапазону +/- 80мВ. Вернее к диапазону 0...+80мВ. А зачем питание АЦП на +5 В затягивать? АЦП же питается от +/- 2.5В.
sensor_ua
АЦП никуда переподключать не нужно. Собирайте как обрисовали, только RTD к -2.5В нужно подключать через небольшой резистор (см., например, схему на Сахаре)
Цитата
Нужен ли А3 для устранения влияния проводов?

Если 4-хпроводка, то нафиг
alux
И еще один маленький, но очень большой вопрос. Как обнаружить обрыв, КЗ температурного датчика? На ум приходит только контролировать скорость изменения измеряемой величины. Если постоянная - значит обрыв. Как лучше поступить в данном случае?
sensor_ua
В любом случае будете иметь диапазон валидных значений и остальное, правда это "остальное" может бытьт чуть урезано, а диапазон валидных - расширен для какого-то запаса.
В правильных АЦП есть отключаемые источники тока (совсем небольшого), используемых именно для диагностирования непонятных ситуаций - BURNOUT CURRENT. В AD7730 они есть.
Ещё один нюанс - в HART-датчиках, например, используются разные механизмы передачи диагностических сообщений такого рода - вариант с изменением статуса сообщения и весёлый вариант с использованием значения NAN во float.
alklimenko
ALUX !
Я слегка просмотрел Ваш диалог.
Конечно, не разобрался, но сам применяю РЕЗИСТИВНЫЕ тензодатчики и датчики давления.
Простое и качественное решение, по моему:
- стабилизатор 78L05 на процессор
- стабилизатор малошумящий для АЦП с датчиком и REFом
- пассивные фильтры по питанию
- пассивная экранировка измерительной части
- АЦП AD7730 (10,20,30 мВ входы)
- частота опроса ОКОЛО 50 Гц
если датчик резистивный - 16 разрядов Вам обеспечено, причем сс термокомпенсацией до 40 ГрС
PS получите максимум 8 мв на датчике, при 10мВ входе АЦП - приемлемо
чем больше Вы усложните схему активными элементами, особенно с ШИМ-источниками напряжения. тем будет хуже
alux
Цитата(alklimenko @ Aug 24 2007, 15:34) *
чем больше Вы усложните схему активными элементами, особенно с ШИМ-источниками напряжения. тем будет хуже

Хуже, наверное, некуда. Мне так и не удалось запустить АЦП (вывод RDY постоянно был в ="1"). Спаял отладочную плату для AD7730L, чтобы проверить через LPT фирменное software от AD. Сгорел синем пламенем. Когда дотронулся до АЦП, получил ожег пальца первой степени. 07.gif Причину так и не установил. На форумах читал об тиристорном эффекте AD7730. Наверное - это мой случай. Сейчас жду поставки AD7799. Надеюсь таких проблем не будет. Схему немного изменил. Датчик буду питать не от -5В...+5В , а от 0... +10В. +10 В формируется удвоителем напряжения ADM660 из источника ИОН +5В (REF195). Вы считаете, что моя проблема была в использовании ШИМ-преобразователя в качестве питания аналоговой части АЦП?
alux
Спаял схему измерения сигнала с мостового датчика давления (26PCA) на AD7799. Напомню, размах на выходе датчика 16мВ при возбуждении от +10В. Аналоговое питание АЦП +5В. ИОН=+2.5В. Я немного оплошал... Не заметил в ДШ AD7799, что входной сигнал при включенном усилении (gain >= 4) ограничен диапазоном GND+300мВ ... AVdd-1,1В. А у меня получается на выходе моста напряжение относительно земли +4,9В. Что выше указанного диапазона. Конечно, проще было бы запитать мост от +5В. Но как это скажется на уровне выходного сигнала и точности? Для повышения точности можно датчик запитать от +7,5В. У меня в схеме используется два ИОН : +5В и +2,5В. Из них можно получить +7,5В. Следовательно, валидный входной диапазон на входе АЦП уже будет 7,5 / 2 = 3,75В. Что в пределах нормы. Третий вариант : для получения максимальной точности использовать внешний усилитель (ИУ с однополярным питанием(AD623) или ОУ с нулевым смещением AD8551 с усилением 1,25 / 0,016 = 78,125) и AD7799_GAIN=2. Недостаток (AD8552) - необходимы 4шт высокоточных (0.1%) резисторов для делителей. В случае с AD623 вывод REF ИУ соединить с +2,5В и с AIN(-) как в ДШ. Сигнал на входе АЦП будет смещен на +2,5В. Я склоняюсь больше к этому варианту (AD623). Что вы посоветуйте?
Tanya
Цитата(alux @ Jan 23 2008, 17:06) *
Спаял схему измерения сигнала с мостового датчика давления (26PCA) на AD7799. Напомню, размах на выходе датчика 16мВ при возбуждении от +10В. Аналоговое питание АЦП +5В. ИОН=+2.5В. Я немного оплошал... Не заметил в ДШ AD7799, что входной сигнал при включенном усилении (gain >= 4) ограничен диапазоном GND+300мВ ... AVdd-1,1В. А у меня получается на выходе моста напряжение относительно земли +4,9В. Что выше указанного диапазона. Конечно, проще было бы запитать мост от +5В. Но как это скажется на уровне выходного сигнала и точности? Для повышения точности можно датчик запитать от +7,5В. У меня в схеме используется два ИОН : +5В и +2,5В. Из них можно получить +7,5В. Следовательно, валидный входной диапазон на входе АЦП уже будет 7,5 / 2 = 3,75В. Что в пределах нормы. Третий вариант : для получения максимальной точности использовать внешний усилитель (ИУ с однополярным питанием(AD623) или ОУ с нулевым смещением AD8551 с усилением 1,25 / 0,016 = 78,125) и AD7799_GAIN=2. Недостаток (AD8552) - необходимы 4шт высокоточных (0.1%) резисторов для делителей. В случае с AD623 вывод REF ИУ соединить с +2,5В и с AIN(-) как в ДШ. Сигнал на входе АЦП будет смещен на +2,5В. Я склоняюсь больше к этому варианту (AD623). Что вы посоветуйте?

Кроме того, что Вы сами предложили, можно добавить вариант отдельного развязанного питания. С последующей привязкой одного выхода моста к удобному потенциалу... А из Ваших лучшее -7.5 вольт - всего-то на четверть хуже, чем 10 вольт номинального.
alux
В случае с AD623 можно обойтись без резистора (GAIN=1). Т.к. сигнал будет смещен на +2,5В, то можно AD7799_GAIN=128. Но как-то жаба давит использовать ИУ только для смещения выхода.
Цитата(Tanya @ Jan 23 2008, 21:45) *
Кроме того, что Вы сами предложили, можно добавить вариант отдельного развязанного питания. С последующей привязкой одного выхода моста к удобному потенциалу...

Можете набросать схему. Не совсем представляю...
sensor_ua
Цитата
размах на выходе датчика 16мВ при возбуждении от +10В

Цитата
проще было бы запитать мост от +5В. Но как это скажется на уровне выходного сигнала и точности?

Вы бы запитали сенсор от 5 В и тогда уж определились, хватает ли Вам полученной точности/погрешности. Что касается
Цитата
ИОН=+2.5В

то если Вы получаете опору не из 10 В, то, так как схема включения не ratiometric, получите неприятные сюрпризы. Лучше запитайте всё-таки от 5В, а опору сделайте делителем на 2-х прецизионных резисторах (одинаковых, причём более важна не точность, а минимальный близкий ТКС), либо понизьте Ваши 10В до, скажем, 7.5В с помощью какой-нибудь LP2951 и уже этим питайте, но опору возьмите с делителя на 3. Если велики входные токи по входу опоры, можете поставить фильтр-повторитель на правильном ОУ (примеры есть в DS LTC2410)
alux
Цитата(sensor_ua @ Jan 24 2008, 10:24) *
если Вы получаете опору не из 10 В, то, так как схема включения не ratiometric, получите неприятные сюрпризы. Лучше запитайте всё-таки от 5В, а опору сделайте делителем на 2-х прецизионных резисторах (одинаковых, причём более важна не точность, а минимальный близкий ТКС), либо понизьте Ваши 10В до, скажем, 7.5В с помощью какой-нибудь LP2951 и уже этим питайте, но опору возьмите с делителя на 3. Если велики входные токи по входу опоры, можете поставить фильтр-повторитель на правильном ОУ (примеры есть в DS LTC2410)

+10В в данный момент формируется из +5В ИОН(REF195) умножением *2 (ADM660). +2,5В формируется отдельным ИОН(REF192). Планирую использовать два одинаковых REF195(+5V) для формирования +5В и +10В по схеме Stacking Reference. +5В - в качестве ИОН для АЦП. От +5В сделать делитель /2 для смещения выхода ИУ на +2,5В (вывод REF ИУ подключен к делителю (+2,5В) и соединен с AIN(-)). +10В - для питания моста. Перед входами АЦП применить три ИУ(AD623) с gain=10 (два датчика давления и датчик температуры - ТС или ТП). Или Вы все-таки настаиваете, что опору для АЦП (+5В) лучше сделать делителем (10к + 10к ?) из +10В ?
sensor_ua
Ещё раз - отдельный опорник - значит схема не ratiometric. Если
Цитата
+5В - в качестве ИОН для АЦП

то от них и питайте свои мосты (если они, конечно, не очень далеко расположены). ИМХО, это будет оптимальный вариант. А вот ТСМ/П запитайте от преобразователя напряжение/ток от опоры.
alux
Может быть я чего-то не понимаю... Схема включения дифференциального датчика давления 26PCA как я описывал постом выше. Вывожу на индикатор результаты измерения. АЦП (AD7799) в режиме измерения униполярного сигнала. Напомню, что сигнал на входе АЦП смещен на +2,5В, КУ=10 AD623 (ИУ). Размах сигнала на выходе моста +16мВ. Когда дую в первую трубку, значения уменьшаются до 0. Если втягиваю воздух из нее - показания увеличиваются. А вот если дуть или вытягивать воздух в/из второй трубки, то показания никак не меняются. Разве так должно быть? 05.gif
sensor_ua
Цитата
Может быть я чего-то не понимаю...

Поменяй сигнальные провода и убедись в работоспособности/неработоспособности электроники/программы
alux
Цитата(sensor_ua @ Mar 20 2008, 22:36) *
Поменяй сигнальные провода

Вы имеете в виду поменять местами выводы на выходе моста перед ИУ ? Подключил согласно схеме: положительный вывод моста (2) соединил с (IN+) AD623, отрицательный вывод моста (4) - с (IN-) AD623. По идее на выходе ИУ сигнал должен меняться в пределах от +2,5В+0мВ до +2,5В+160мВ. Или может быть я ошибаюсь, и сигнал меняется в пределах +2,5В - 80мВ ... до +2,5В + 80мВ ? Тогда АЦП не будет "видеть" ниже +2,5В. Мне не понятно, почему воздействие на второй вывод порта датчика не вызывает никаких изменений. Я так понимаю, раз мембрана изгибается в одну сторону под действием положительного давления со стороны одного порта, то воздействие отрицательного давления со стороны другого порта также должно вызывать аналогичное изменение. Или я не прав?
sensor_ua
Цитата
Вы имеете в виду поменять местами выводы на выходе моста перед ИУ

Именно - для проверки того, что воздействие на плюсовую камеру даст обратное выходное возмущение, т.е. если туда наддуть, то должно быть заметно уменьшение кода и наоборот. То же можно оценить милливольтметром (микровольтметром) безо всяких переключений - если воздействие на минусовую камеру даёт адекватное изменение дифференциального входного на входе INA, то дело не в сенсоре
alux
Измерил простым цифровым тестером сигнал на выходе ИУ. Действительно сигнал меняется от +2,5В-80мВ до +2,5В+80мВ. Я не сказал еще про то, что к минусовой трубке подключен такой же датчик давления, второй порт которого открыт для измерения статического давления. Ошибка была в программе. Т.е. в действительности выводил на ЖКИ значение статического давления для обеих каналов (т.е. канал не переключался). И второе, нужно настроить АЦП в режим измерения биполярного сигнала. Зря только побеспокоил уважаемое товарищество smile.gif
alux
При проверке другим микроманометром выяснилось, что мой прибор выдает заниженные в два раза показания. Для начала хочу определиться с базовыми понятиями:
при создании отрицательного давления на минусовом порте датчика 26PCA, который по даташиту имеет span=16.7mV, напряжение на положительном выводе датчика увеличивается на +16.7мВ, а на отрицательном уменьшается на - 16.7мВ ? Или 16.7мВ - это разность напряжений между положительным и отрицательным выводами мостового датчика, т.е. на положительном выводе +8.35мВ, а на отрицательном выводе -8.35мВ?
Осциллографа под рукой нет, чтобы проверить сигнал непосредственно на датчике.
sensor_ua
Цитата
span=16.7mV
относится к дифференциальному сигналу -
Цитата
это разность напряжений между положительным и отрицательным выводами мостового датчика
alux
Т.е. напряжение наположительном выводе увеличилось на +7.8мВ, а на отрицательном на -7.8мВ и наоборот при смене полярности давления? Тогда нестыковочка получается... Если быть точным, то span=15.6mV.
Схема построена следующим образом: два мостовых датчика давления 26PCA подключены через ИУ AD627 с GAIN_IA=5 (без резистора) к первым двум входам АЦП AD7799. Схему выкладываю, чтобы было понятно.
Датчики рассчитаны на диапазон 1 PSI. Для начала я вывел значения на ЖКИ в кодах АЦП и установил коэффициент усиления АЦП таким, чтобы биполярный сигнал менялся в пределах 0х000000 до 0xffffff. В спокойном состоянии значение АЦП = 0x800000.
Экспериментально установил, что такому изменению сигнала соответствует GAIN_ADC=16. Судя по даташиту AD7799 для REF=+2.5V при таком усилении это соответствует диапазону +/-156.2mV на входе АЦП.
По даташиту AD627 выходное напряжение на выходе ИУ равно:
Vout = [Vin(+) - Vin(-)]*5 + Vref , т.е. сигнал на выходе ИУ по-вашему должен меняться в пределах:
Vout = [-7.8 - 7.8]*5 + 2500 = 2500 - 78mV до
Vout = [7.8 + 7.8]*5 + 2500 = 2500 + 78mV
Это не соответствует диапазону АЦП, соответствующему GAIN_ADC=16.
Поправьте меня, если я не прав, тогда пойдем дальше...
sensor_ua
Не понял, зачем экспериментально узнавать диапазон шкалы, если он и так описан в DS в разделе DATA OUTPUT CODING (у меня DS v0 - стр. 24) - для сигнала, который
Цитата
биполярный
Code = 2^(N – 1) × [(AIN × GAIN/VREF) + 1], где N = 24 и это может и похоже на
Цитата
+/-156.2mV на входе АЦП

N:=24
= 24
AIN:=156.2e-3
= 0.1562
GAIN:=16
= 16
VREF:=2.5
= 2.5
Code:=2^(N-1)*((AIN*GAIN/VREF)+1)
= 16774531.64544 = $FFF583.A53B8E5 ,
вот только старший бит это бит знака и шкала, соответственно, в два раза меньше +/-(156.2/2) mV
alux
Давайте еще раз... GAIN_ADC=16 и CODE = 0xFFFFFF напряжение на входе АЦП AIN= (0xFFFFFF-0x800000)*2.5/0x800000/16 = +0.1562 V.
При CODE = 0x000000 , AIN = (0x000000-0x800000)*2.5/0x800000/16 = -0.1562 V

Т.е. если я правильно вас понял, это соответствует напряжению на входе АЦП +/-0.078 V ?
sensor_ua
Насчёт знакового бита чуток апшипся - в этом АЦП его нет - вся шкала по модулю при указанных опоре и усилении имеет значение 156 мВ с копейками со смещением в половину, т.е.
Цитата
это соответствует напряжению на входе АЦП +/-0.078 V ?

если режим АЦП биполярный
alux
Цитата(sensor_ua @ Sep 10 2008, 16:32) *
вся шкала по модулю при указанных опоре и усилении имеет значение 156 мВ с копейками со смещением в половину

Не понял на счет смещения в половину...
Формула для расчета AIN в биполярном режиме при указанном усилении и опоре дает результат +/-156мВ.
С чего Вы взяли, что будет +/-78мВ ?!!

PS. Померял осциллографом сигнал перед входом АЦП (после ИУ). Показал, как я и ожидал, +/-156мВ. Сигнал на самом датчике померять не удалось из-за шумов.
Какие теперь будут Ваши аргументы?
sensor_ua
DS говорит
When the ADC is configured for bipolar operation, the output
code is offset binary, with a negative full-scale voltage resulting
in a code of 000...000, a zero differential input voltage resulting
in a code of 100...000, and a positive full-scale input voltage
resulting in a code of 111...111.
А далее берёте формулы из указанного раздела DS и считаете калькулятором.
ЗЫ. У меня такого АЦП нет и, тем более, определений величины шкалы
alux
Цитата(sensor_ua @ Sep 10 2008, 21:01) *
А далее берёте формулы из указанного раздела DS и считаете калькулятором.
Я же приводил расчеты по этой формуле. Я хочу разобраться, почему так происходит. Почему перед АЦП сигнал меняется в пределах +/-156мВ относительно +2.5 В?
Вопрос стоит так, - как меняется сигнал на выходе моста : +/-7.8 мВ или +/- 15.6 мВ ? Пока экспериментально получается второе... Хотя априори должно быть первое.
sensor_ua
Вы сначала четко определитесь - какой у Вас режим АЦП - униполярный или биполярный?А затем честно померяйт е сигнал на входе (не надо крутого осциллографа/вольтметра) АЦП и прикиньте какой должен бывть ожидаемый код. Эти данные можно попытаться соотнести с чтением регистров настроек АЦП
alux
Цитата(sensor_ua @ Sep 10 2008, 21:53) *
Вы сначала четко определитесь - какой у Вас режим АЦП - униполярный или биполярный?
Совершенно очевидно, что биполярный. Иначе и быть не может,- не отображалось бы отрицательные значения. В регистры АЦП пишется все правильно.

Цитата(sensor_ua @ Sep 10 2008, 21:53) *
А затем честно померяйте сигнал на входе (не надо крутого осциллографа/вольтметра) АЦП
Еще раз повторяю, напряжение на входе АЦП, померянное осциллографом и мультиметром составляет +/-156мВ.

Цитата(sensor_ua @ Sep 10 2008, 21:53) *
прикиньте какой должен бывть ожидаемый код.
Затем вывожу на ЖКИ значения в кодах АЦП и постепенно увеличивал GAIN_ADC до тех пор, пока размах сигнала на входе АЦП "вписывался" в диапазон 0x000000 ... 0xFFFFFF без искажения. Это получается при GAIN_ADC = 16. Что соответствует ADC Input range (2.5V Ref) +/-156mV при таком усилении.
Далее для проверки вывожу на ЖКИ это значение АЦП, пересчитанное в Вольты. Получается +/-31.2мВ.
Код
enum { AD7799_1_GAIN, AD7799_2_GAIN, AD7799_4_GAIN, AD7799_8_GAIN,
       AD7799_16_GAIN, AD7799_32_GAIN, AD7799_64_GAIN, AD7799_128_GAIN };

#define Vref          2.51        // 2.5 V
#define GAIN_IA       5.0         // Gain of Instrumental Amplifier 5
#define STEPS_U       16777216.0// Full-Scale 2^24 for unipolar operation
#define STEPS_B       8388608.0 // Full-Scale 2^(24-1) for bipolar operation

#define Vin(adc_value) (((adc_value)-(signed long)STEPS_B)*Vref/GAIN_IA/STEPS_B)

....................................................
// Maintain multiplexing of input channels
if(++mux > 2)  mux=0;

ad7799_write_config(1, 0, AD7799_16_GAIN, 1, 1, AD7799_AIN1_CHAN+mux); //burnout, bipolar, gain, ref_det, buf, chan  

.........................................................
Vin(ValueADC.data[0])/(1<<AD7799_16_GAIN);
Т.е. получается, что сигнал на выходе датчика меняется все-таки +/-31.2mV !!!
Или скажите, в чем я не прав.
alux
Возвращаясь к вопросу о заниженных в два раза показаниях моего прибора относительно другого.
Я считаю, что одно из двух: либо датчик расчитан на диапазон 2PSI (хотя таких не бывает), либо врет "поверенный" прибор smile.gif Я ошибки в расчетах не вижу.
Судите сами. Если значение Vin(ValueADC)/(1<<AD7799_16_GAIN) при максимальном давлении составляет 31.2мВ (это подтверждается выводом на ЖКИ), то при пересчете в дифференциальное давление (нижняя формула) получится 703 мм.вод.ст. , что я и наблюдаю при выводе на ЖКИ. Но при том же давлении другой "проверенный" прибор показывает в два раза больше!
Код
#define SPAN          (0.015687*2)      // Span (V) of Pressure Sensors = 1 psi
#define mm_Hg         51.714        // мм. рт. ст. (@ 0 гр. C)
#define mm_H2O        703.05        // мм вод. ст. (@ 0 гр. C)
#define sPRESSURE(ain_value) ((ain_value)/SPAN*mm_Hg)    // Статическое давление, мм. рт. ст.
#define dPRESSURE(ain_value) ((ain_value)/SPAN*mm_H2O)   // Дифференциальное давление, мм. вод. ст.
sensor_ua
Читаю и не понимаю. Что-то Вы путаете. Без привязки к конкретному типу АЦП если 24 бит, то максимальное беззнаковое 0xFFFFFF = 16777215. Делим 2.5В на 16 и получаем 2.5/16 = 1.5625E-1 (В)= 156.25 мВ. Это ВСЯ шкала и неоткуда ей становиться больше. Если плюс-минус, то половина шкалы туда, половина сюда - итого +/-78 мВ с копейками. Ваш усилитель имеет Ку = 5 и это относится к дифференциальному напряжению на его входе. Сигнал моста должен быть равен не более 156.25/5 = 3.125E+1 мВ, т.е. +/-1.5625E+1. Формула из DS, которую Вы вывернули в
Цитата
#define Vin(adc_value) (((adc_value)-(signed long)STEPS_B)*Vref/GAIN_IA/STEPS_B)

при коде равном 0xFFFFFF даёт 5 В, т.е. без оговорки о половине шкалы она не соответствует голому коду - она относится именно к положительной или отрицательной шкале. Т.е. если привести к математике без тех лишних оговорок, то получится
#define Vin(adc_value) (((adc_value)-(signed long)STEPS_B)*Vref/GAIN_IA/STEPS_U)
alux
Цитата(sensor_ua @ Sep 11 2008, 10:39) *
Формула из DS, которую Вы вывернули в ...
при коде равном 0xFFFFFF даёт 5 В
Вы не правы.
При значении 0xFFFFFF получается не 5, а 0.5 . А теперь с этого места идем дальше... И не подгоняйте результат под "сочиненную" формулу.

Стр.22 из даташита AD7799:
Код
with a 2.5 V reference, the unipolar ranges are
from (0 mV to 19.53 mV) to (0 V to 2.5 V), and the bipolar
ranges are from ±19.53 mV to ±2.5 V.


Формулы для расчета входного напряжения:
Код
DATA OUTPUT CODING
When the ADC is configured for unipolar operation, the output
code is natural (straight) binary with a zero differential input
voltage resulting in a code of 00...00, a midscale voltage resulting
in a code of 100...000, and a full-scale input voltage resulting in
a code of 111...111. The output code for any analog input voltage
can be represented as
Code = (2^N × AIN × GAIN)/VREF
When the ADC is configured for bipolar operation, the output
code is offset binary, with a negative full-scale voltage resulting
in a code of 000...000, a zero differential input voltage resulting
in a code of 100...000, and a positive full-scale input voltage
resulting in a code of 111...111. The output code for any analog
input voltage can be represented as
Code = 2^(N – 1) × [(AIN × GAIN/VREF) + 1]
where:
AIN is the analog input voltage.
N = 16 for the AD7798, and N = 24 for the AD7799.


Я разбил ход мыслей на тезисы:
1) АЦП настроен на биполярный режим.
2) Коэффициент усиления АЦП = 16, при этом нет искажения сигнала. Сигнал (в кодах АЦП) меняется почти от 0x000000 до 0xFFFFFF . В спокойном состоянии код равен почти 0x800000.
3) При этом напряжение на входе АЦП (после ИУ) меняется от +2.5В-156мВ до +2.5В+156мВ. Это подтверждается измерением тестером и осциллографом.
4) Значение АЦП по формуле для биполярного режима перевожу значение АЦП в напряжение в Вольтах с учетом коэффициента усиления ИУ = 5 по формуле
Код
#define Vref          2.51        // 2.5 V
#define GAIN_IA       5.0         // Gain of Instrumental Amplifier 5
#define STEPS_U       16777216.0  // Full-Scale 2^24 for unipolar operation
#define STEPS_B       8388608.0   // Full-Scale 2^(24-1) for bipolar operation

#define Vin(adc_value) (((adc_value)-(signed long)STEPS_B)*Vref/GAIN_IA/STEPS_B)  

Vin(ValueADC.data[0])/(1<<AD7799_16_GAIN)
и вывожу полученное значение на ЖКИ. Это значение на ЖКИ меняется от -31мВ до +31мВ. Т.е. при создании давления 1PSI = 703мм.вод.ст. сигнал меняется по модулю 31мВ в зависимости от направления давления.
5) Значение напряжения в Вольтах перевожу в мм.вод.ст. по формуле:
Код
#define SPAN          (0.015687*2)      // Span (V) of Pressure Sensors = 1 psi
#define mm_H2O        703.05        // мм вод. ст. (@ 0 гр. C)
#define dPRESSURE(ain_value) ((ain_value)/SPAN*mm_H2O)   // Динамическое давление, мм. вод. ст.

Это подтверждается выводом на ЖКИ - при создании максимального давления выводится по модулю значение 703 мм.вод.ст.
6) При создании давления аспиратором (компрессором) значения, например 300 (по моему прибору), другой "поверенный" прибор показывает в два раза больше, т.е. 600.

А теперь скажите, пожалуйста, в каком месте я не прав? sad.gif
sensor_ua
Цитата
Вы не правы.
Похоже дважды не так
вот почему -GAIN_IA не там
#define GAIN 16
и тогда поправленная Ваша формула работает
Vin:=(((adc_value)-STEPS_B)*Vref/(GAIN*STEPS_B))
Только это относится ко входу АЦП
получается +/-156.2

Если считать как я предполагал, что шкала не менялась (при установке биполярного режима), то для двуполярного сигнала смещение в половину шкалы просто прибавляется (к формуле для униполярного режима)
Code:=(2^24*AIN*GAIN)/VREF+2^23
Соответственно имеем
Ain:=(Code-2^23)*VREF/(GAIN*2^24)
учитывая Ваши дефайны получаем
#define Vin(((adc_value)-STEPS_B)*Vref/(GAIN*STEPS_U))

либо шкала действительно в 2 раза больше и фсё соответствует формуле для биполярного режима
Если верить стр. 22, то так оно и есть - шкала для биполярного в 2 раза больше и формула в DS правильная
и получается Vin:=(((adc_value)-STEPS_B)*Vref/(GAIN*STEPS_B))

Цитата
Я считаю, что одно из двух: либо датчик расчитан на диапазон 2PSI (хотя таких не бывает), либо врет "поверенный" прибор smile.gif Я ошибки в расчетах не вижу.

А что c переключением питания моста? Может, вы складываете отсчёты и забываете поделить пополам?
alux
Цитата(sensor_ua @ Sep 11 2008, 12:30) *
Похоже дважды не так
Что не так? Я указал Вам на ошибку в расчетах (0.5 вместо 5).

Цитата(sensor_ua @ Sep 11 2008, 12:30) *
вот почему -GAIN_IA не там
#define GAIN 16
и тогда поправленная Ваша формула работает
Vin:=(((adc_value)-STEPS_B)*Vref/(GAIN*STEPS_B))
Только это относится ко входу АЦП
получается +/-156.2
Все верно. А теперь если разделить 156.2 на 5 (GAIN_IA), то получим прежние +/-31мВ.
И покажите мне разницу между вычислением Vin:
Код
#define Vin(adc_value) (((adc_value)-(signed long)STEPS_B)*Vref/GAIN_IA/STEPS_B)
с последующим делением на 16 (напомню, что AD7799_16_GAIN = 4):
Код
Vin(ValueADC.data[0])/(1<<AD7799_16_GAIN)
... и Вашим вариантом. Результат тот же.

Цитата(sensor_ua @ Sep 11 2008, 12:30) *
А что c переключением питания моста? Может, вы складываете отсчёты и забываете поделить пополам?
Питание я пока не переключаю. Хотя сейчас как-раз думаю над этим. Уже купил IR4428.

PS. Взял измеритель кровяного давления. ..

PS2. Сравнение с третьим манометром (кровяного давления) показало, что мои показания действительно занижены в два раза. Так в каком месте мне нужно поделить/умножить на 2 ?
Получается, как у Шарикова:"...взять все и поделить". smile.gif
sensor_ua
Цитата
Результат тот же.

Тот же, только дефайну Vin название другое дать надо было

Цитата
Что не так? Я указал Вам

да у меня не так - сначала тупо в формулу всё подставил и не посмотрел на GAIN_IA а потом посчитал неправильно, ну и с английским не сложилось без чтения 22-й страницыwink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.