Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с AD7730
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Метрология, датчики, измерительная техника
lordak
Разрабатываю АЦП для тензомоста с подключением к компу.
Подключил AD7730 к PIC-микроконтроллеру, считываю значения регистров - все отлично, значения соответствуют дефолтным в DataSheet. Калибрую, устанавлваю значения регистров - все нормально.
Когда начинаю считывать данные - данные считываются, они действительно пропорциональны приложенному весу, но через произвольные промежутки времени проскакивает какая-то ерунда! Одно или несколько неправильных значений.
В целом проблема аналогична http://www.telesys.ru/wwwboards/mcontrol/6...ges/36278.shtml
Пробовал ставить резисторы, положительного эффекта не достиг.
Данные считываю в режиме Single Conversion, 16 бит, мост запитывается постоянным напряжением. Если необходимо, выложу исходники программы.

Как выйти из этой ситуации? Помогите! Уже 4 дня сижу, ничего не могу поделать...
Tanya
Цитата(lordak @ Feb 6 2009, 01:40) *
Как выйти из этой ситуации? Помогите! Уже 4 дня сижу, ничего не могу поделать...

Что тут можно посоветовать - локализовать. Мост заменить сначала. Убрать длинные провода - наводки. Продолжать трясти и думать. Мобильник еще...
И компьютер. И попробуйте догадаться, где происходит возмущение - в аналоговой части или при передаче уже.
xemul
Если включен FIR фильтр, то не забывайте проверять бит Steady в регистре статуса. Для проверки поиграйте с битами Skip и Fast в Filter Register.
Возмутителем спокойствия (целиком согласен с Таней) легко может быть мобильник.
lordak
Огромное спасибо за советы!!! a14.gif Действительно, отключение FIR фильтра помогло. После отключения глюки сразу же прекратились. А в даташите этот момент совершенно не отражен, и в интернете тоже!

Теперь буду разбираться с проверкой Steady и реализацией Сontinuous Mode. Еще в планах реализовать запитку переменным током, если хватит ума на это smile.gif Счас пытаюсь найти подходящие полевики. Все-таки точность желает лучшего...
Herz
Цитата(lordak @ Feb 6 2009, 22:01) *
Все-таки точность желает лучшего...

А конкретнее? И какой датчик используете? Какая длина проводов к мосту?
lordak
Датчик от обычных бытовых весов за $12. Длина проводов минимальная, около 15 см. Но несмотря на это китайцы получили на нем 5 тыс отсчетов от 0 до 5 кг. Хочу повторить их подвиг, но пока не получается
xemul
Цитата(lordak @ Feb 7 2009, 21:13) *
Датчик от обычных бытовых весов за $12. Длина проводов минимальная, около 15 см. Но несмотря на это китайцы получили на нем 5 тыс отсчетов от 0 до 5 кг. Хочу повторить их подвиг, но пока не получается

Странно. 12-13 значащих битов на 7730 получаются без особых ухищрений. А что китайцы говорят про точность этого прибора?smile.gif
Чтобы не пересказывать, позволю себе еще раз сослаться на "МЕТОДЫ практического конструирования при нормировании сигналов c датчиков".
По-моему, там и про импульсное питание моста было.
lordak
Спасибо за ссылку. Этот документ уже когда-то читал. На выходных попробовал реализовать запитку переменным напряжением, получилось, но результат отвратительный - вместо стабильных данных какая-то модулированная синусоида) Использовал 74HC04A и транзисторы IRFD9110 и IRFD110, наверно не подходящие для этой задачи.
По поводу китайских весов - поставил на вход RC-фильтры и действительно получил с их тензодатчика 14 битов, при включенном FIR-фильтре. Но, к сожалению, глюки так и не удалось устранить - привожу пример:
...
16834.
16834.
16834.
16834.
16834.
16834.
16834.
16832.
16833.
16834.
16834.
16834.
16834.
16834.
16833.
16832.
16832.
16832.
16833.
16832.
16833.
16833.
16924.
17580.
19408.
22303.
24924.
25564.
23766.
20779.
18326.
17138.
16848.
16833.
16832.
16832.
16832.
16833.
16833.
16832.
16832.
16832.
...
Если FIR-фильтр отключить, эти глюки пропадают, но появляются новые - через некоторое время происходят скачки, такое впечатление что меняется значение DAC-регистра. Т.е. например минуту АЦП выдает 10000, потом происходит скачек и начинает выдавать 20000, потом через минуту возвращается обратно, и т.д.
Получается куда не ткнись - везде глюки sad.gif
Все операции провожу в режиме Single Conversion Mode. В Continuous Conversion Mode вобще ничего считать не получилось.
Бит Steady попробовал проверять, но в Single Conversion это приводит к невозможности после этого считать данные вообще. Получаю только 0 или FFFF. В даташите по поводу Single Conversion пишут: The result of the single conversion on the AD7730 in this mode will not be provided until the full settling time of the filter has elapsed.
В Continuous Conversion если начинаю считывать Status Register, получаю набор произвольных значений... Предполагаю что это вообще не значения этого регистра, а нечто другое)
В общем уже устал гадать, что же такое с моим АЦП. Толи я тупой, толи оно слишком сложное)
По поводу радиопомех - повыносил из комнаты все радиотелефоны, поотключал вайфаи, блютузы - никакого эффекта. Установить корреляцию каких-то внешних явлений с этими глюками не удается...
Проводил эксперимент на 2 разных экземплярах АЦП – результат абсолютно одинаков.
Требуется ли какая-то обвязка между ножками контроллера и AD7730? Есть ли какие-то ограничения на длину провода между AD7730 и контроллером - сейчас сделано 60 см, может стоит укоротить? Может ли это как-то влиять на корректную работу?...
Herz
Самое смешное, что у меня похожая проблема с тем же датчиком в чисто аналоговой системе поддержания веса. Измеряемый вес порядка 2 кг, точность поддержания - ок. 1 г. Так вот, некоторое время устройство работает нормально, потом вдруг так, как будто груз вдруг " полегчал" грамм на 100. Приходилось менять уставку. Разобраться, в чём дело, времени пока не было. Попробуйте убедиться, что "глючит" именно АЦП - подайте ему сигнал с чисто резистивного моста с подстройкой симметрии. Кстати, 15 см до датчика это всё-таки многовато. И для чего Вам питать его переменным током? Ну, импульсами ещё понятно...
Herz
Похоже, автор решил свою проблему. Интересно всё же было бы узнать, в чём дело было. Подробности не сообщите?
777777
Цитата(Herz @ Feb 9 2009, 11:29) *
Кстати, 15 см до датчика это всё-таки многовато. И для чего Вам питать его переменным током? Ну, импульсами ещё понятно...

Не поверите (я и сам сомневался вначале), но я питаю тензодатчик через кабель длиной 100 метров, переменным током, да еще на диапазоне 10 мВ, тем не менее единица младщего разряда стоит как вкопаная. Мост, правда, низкоомный - 50 Ом, - запитывается транзисторами IRF7509:
Нажмите для просмотра прикрепленного файла
Причем опроное REFIN берется прямо с выходов транзисторов, т.е. не тянется отдельная пара проводов до датчика.

Скорее всего проблема из-за того, что вы используете Single Conversion - в этом случае output rate будет нерегулярным, да еще без FIR-фильтра результаты окажутся непредсказуемыми. Включите Continuous Conversion и считывайте данные по прерываниям. Еще прочитайте главу DIGITAL FILTERING и обратите внимание на Figure 12 - при output rate 50 Гц частоты 200, 400... Гц практически не подавляются, а это гармоники сетевой частоты, поэтому output rate нужно сдвинуть - у меня она 57 Гц.

P.S. А у вас кварц 4.9152 МГц?

P.P.S. И уж конечно никаких RC-цепочек на входе, цифровые фильтры микросхемы лучше их в тысячи раз, не говоря уже о том, что на переменном токе они недопустимы.

Цитата(Herz @ Feb 9 2009, 11:29) *
Попробуйте убедиться, что "глючит" именно АЦП - подайте ему сигнал с чисто резистивного моста с подстройкой симметрии.

При этом желательно не наколоться на эффект, связанный с его необычайной чувствительностью. Когда я подключил резистивный мост, показания начали страшно прыгать. Я долго пытался выяснить в чем дело - от настоящего датчика все работало нормально! - пока не догадался обернуть резисторы бумагой. Прыжки немедленно прекратились. Оказалось, что флуктуации воздуха вокруг резисторов меняют их сопротивление, а этот АЦП их легко чувствует - при диапазоне 10 мВ единица младшего разряда всего 0.3 мкВ!

З.Ы. А зачем подстройка симметрии? У 7730 все для этого есть внутри.
Herz
Цитата(777777 @ Feb 19 2009, 12:40) *
Не поверите (я и сам сомневался вначале), но я питаю тензодатчик через кабель длиной 100 метров, переменным током, да еще на диапазоне 10 мВ, тем не менее единица младщего разряда стоит как вкопаная. Мост, правда, низкоомный - 50 Ом, - запитывается транзисторами IRF7509:

Действительно, трудно поверить. Практически невозможно. biggrin.gif
Цитата
Причем опроное REFIN берется прямо с выходов транзисторов, т.е. не тянется отдельная пара проводов до датчика.

Скорее всего проблема из-за того, что вы используете Single Conversion - в этом случае output rate будет нерегулярным, да еще без FIR-фильтра результаты окажутся непредсказуемыми. Включите Continuous Conversion и считывайте данные по прерываниям. Еще прочитайте главу DIGITAL FILTERING и обратите внимание на Figure 12 - при output rate 50 Гц частоты 200, 400... Гц практически не подавляются, а это гармоники сетевой частоты, поэтому output rate нужно сдвинуть - у меня она 57 Гц.

Это не совсем так. На рис. 12 показана частотная характеристика для Output Data Rate 200 Гц. Кроме того, корень зла - the chopping of the input, если этот режим не использовать, всё не так страшно.
Цитата
P.P.S. И уж конечно никаких RC-цепочек на входе, цифровые фильтры микросхемы лучше их в тысячи раз, не говоря уже о том, что на переменном токе они недопустимы.

Позволю себе не согласиться. Антиалиазинговый фильтр на входе совсем не будет лишним. Он поможет избавиться от проблем, изложенных выше. К чему, к примеру оцифровывать всю полосу, чтобы затем иметь проблемы с неравномерностью подавления цифровым фильтром гармоник наводок?
Цитата
З.Ы. А зачем подстройка симметрии? У 7730 все для этого есть внутри.

Я имел в виду проверку АЦП.
777777
Цитата(Herz @ Feb 20 2009, 20:31) *
Цитата
Не поверите (я и сам сомневался вначале), но я питаю тензодатчик через кабель длиной 100 метров

Действительно, трудно поверить. Практически невозможно. biggrin.gif

Используется многожильный кабель, внутренние 4 жилы идут на мост, а остальные используются для экранирования - соединены с землей со стороны платы, а со стороны датчика брошены неподключенными (даже друг с другом)
Цитата(Herz @ Feb 20 2009, 20:31) *
Это не совсем так. На рис. 12 показана частотная характеристика для Output Data Rate 200 Гц.

Тем более - если output rate 50 Гц, но уже первую гармонику сетевой частоты он не подавит.
Цитата(Herz @ Feb 20 2009, 20:31) *
Кроме того, корень зла - the chopping of the input, если этот режим не использовать, всё не так страшно.

Во-первых, никакого зла я здесь не вижу. А во-вторых без chopping нельзя работать с возбуждением переменным током, а это очень полезная фича - позволяет компенсировать паразитные термопары, при малых напряжениях датчика это обязательно.
Цитата(Herz @ Feb 20 2009, 20:31) *
Позволю себе не согласиться. Антиалиазинговый фильтр на входе совсем не будет лишним. Он поможет избавиться от проблем, изложенных выше.

С этим успешно справляется sinc3-фильтр, см. Figure 10. В худшем случае (на частоте 1,5 output rate) он обеспечивает подавление 40 дБ, а на кратных частотах - бесконечное подавление. А rc-цепочка даст только 20 дБ/декаду. Не говоря уже о том, что с ней нельзя будет использовать возбуждение переменным током.

А вообще - как я понял, все проблемы с этим АЦП как правило связаны с уделением недостаточного внимания цифровому фильтру, а это в сигма-дельта АЦП - самый важный узел.
Herz
Цитата(777777 @ Feb 21 2009, 10:14) *
Используется многожильный кабель, внутренние 4 жилы идут на мост, а остальные используются для экранирования - соединены с землей со стороны платы, а со стороны датчика брошены неподключенными (даже друг с другом)

А что за кабель? Сколько в нём всего жил?
Цитата
С этим успешно справляется sinc3-фильтр, см. Figure 10. В худшем случае (на частоте 1,5 output rate) он обеспечивает подавление 40 дБ, а на кратных частотах - бесконечное подавление. А rc-цепочка даст только 20 дБ/декаду. Не говоря уже о том, что с ней нельзя будет использовать возбуждение переменным током.

И всё-таки, если интересующая полоса лежит существенно ниже ODR, лишнее я бы подрезал. Ведь назначение того фильтра - подавление шумов дискретизации, их природа другая. А почему Вы считаете, что нельзя? Из-за некоторого затухания полезного сигнала?
777777
Цитата(Herz @ Feb 21 2009, 13:22) *
А что за кабель? Сколько в нём всего жил?

Точно не помню, но сильно больше 10-ти. Штук 12-16. Проще, конечно, использовать обычный экранированный, но у заказчика был такой, его и поставили.
Цитата(Herz @ Feb 21 2009, 13:22) *
И всё-таки, если интересующая полоса лежит существенно ниже ODR, лишнее я бы подрезал. Ведь назначение того фильтра - подавление шумов дискретизации, их природа другая. А почему Вы считаете, что нельзя? Из-за некоторого затухания полезного сигнала?

Нельзя при возбуждении переменным током, здесь понятно почему. А при постоянном можно, но не нужно. Просто нет смысла - на фоне цифровых фильтров вы не заметите эффекта от простого фильтра первого порядка.
Herz
Цитата(777777 @ Feb 21 2009, 13:03) *
Нельзя при возбуждении переменным током, здесь понятно почему. А при постоянном можно, но не нужно.

Простите, но вот мне непонятно почему. С чего Вы взяли, что нельзя?
Вот же иллюстрация из приводившегося недавно документа от Cirrus Logic:
Нажмите для просмотра прикрепленного файла
Или тут фильтры не те?
Цитата
Просто нет смысла - на фоне цифровых фильтров вы не заметите эффекта от простого фильтра первого порядка.

Кашу маслом не испортишь. biggrin.gif
777777
Цитата(Herz @ Feb 23 2009, 15:20) *
Цитата
Нельзя при возбуждении переменным током, здесь понятно почему.
Простите, но вот мне непонятно почему. С чего Вы взяли, что нельзя?
Вот же иллюстрация из приводившегося недавно документа от Cirrus Logic:

Не знаю, что это за иллюстрация, но я думаю вы представляете как выглядит прямоугольный сигнал, прошедший через RC-цепочку. Ясно, что правильного результата от этого ждать не приходится.
Цитата(Herz @ Feb 23 2009, 15:20) *
Кашу маслом не испортишь. biggrin.gif

Не понимаю я такого довода. Если показания прыгают - то RC-цепочка не поможет, надо настраивать цифровые фильтры. Если же показания стабильны - то зачем она? Это - мертвому припарка.
Tanya
Цитата(777777 @ Feb 24 2009, 09:45) *
Не понимаю я такого довода. Если показания прыгают - то RC-цепочка не поможет, надо настраивать цифровые фильтры. Если же показания стабильны - то зачем она? Это - мертвому припарка.

Это припарка еще живому. На входе могут быть всякие иглы и другой неудобоваримый для сигма-дельта мусор. Посмотрите на номиналы RC цепочки. Даже некоторый дрейф ее параметров должен лежать за границей точности. Для удовлетворения претензий самых строгих пуристов можно предложить такую же цепочку на опорное напряжение.
777777
Цитата(Tanya @ Feb 24 2009, 10:03) *
Для удовлетворения претензий самых строгих пуристов можно предложить такую же цепочку на опорное напряжение.

Это, типа, чтобы одинаково исказить и сигнал, и опору? smile.gif

А что касается иголок, то они сигма-дельте не страшны. Согласно принципу его действия. Гораздо серьезнее искажения от таких цепочек.
Tanya
Цитата(777777 @ Feb 24 2009, 13:07) *
Это, типа, чтобы одинаково исказить и сигнал, и опору? smile.gif

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

Да, одинаково мало. Иголки, если большие, могут забить интегратор. Кроме того, Вы можете довольно редко ( раз в секунду) менять полярность - термоЭДС с которой Вы боретесь не успеет увернуться из сетей.
777777
Цитата(Tanya @ Feb 24 2009, 13:14) *
Кроме того, Вы можете довольно редко ( раз в секунду) менять полярность - термоЭДС с которой Вы боретесь не успеет увернуться из сетей.

Это как, АЦП настроить на постоянку, а полярность периодически менять контроллером? Да еще учитывать это в результатах измерений? Это называется "закат солнца вручную". А какой великой цели мы достигнем? Еще раз повторяю: цифровые фильтры самого АЦП обеспечивают подавление в десятки а в некоторых точках и в сотни децибел, и лепить на входе простой фильтр первого порядка нет никакого смысла, особенно если учесть, что у того фильтра, что на схеме, частота среза в районе мегагерца.
Tanya
Цитата(777777 @ Feb 24 2009, 13:26) *
Это как, АЦП настроить на постоянку, а полярность периодически менять контроллером? Да еще учитывать это в результатах измерений? Это называется "закат солнца вручную". А какой великой цели мы достигнем? Еще раз повторяю: цифровые фильтры самого АЦП обеспечивают подавление в десятки а в некоторых точках и в сотни децибел, и лепить на входе простой фильтр первого порядка нет никакого смысла, особенно если учесть, что у того фильтра, что на схеме, частота среза в районе мегагерца.

Все Вы пишите правильно, но иногда хочется что-нибудь неправильное сделать. Шумы без модуляции питания меньше, а если есть уверенность, что распределение температур стационарное, то "неправильно" делать лучше. А если перед цифровым фильтром стоит аналоговый, то подавление перемножается ведь или складывается, если в децибелах, не так ли?
777777
Цитата(Tanya @ Feb 24 2009, 14:03) *
Все Вы пишите правильно, но иногда хочется что-нибудь неправильное сделать.

Ээ-э... А что вы делаете сегодня вечером? smile.gif
Tanya
Цитата(777777 @ Feb 24 2009, 14:31) *
Ээ-э... А что вы делаете сегодня вечером? smile.gif

Если Вы пишите вы не с заглавной буквы. то это обращение ко всем. Поэтому отвечу.

В этот чудесный вечерний момент читаю Ваш флуд, а может, и флейм.
Читаю и вижу, что в тот же момент пишу тоже флейм, а может,... и флуд.
Намек Вам.
777777
Цитата(Tanya @ Feb 24 2009, 18:56) *
В этот чудесный вечерний момент читаю Ваш флуд, а может, и флейм.
Читаю и вижу, что в тот же момент пишу тоже флейм, а может,... и флуд.

То есть действительно делаете что-то неправильное...
Vladimir_T
Проблемы с выбросами в отсчетах на AD7730 тоже есть и у меня. И питаю его переменным током, и экранирую датчик и сам АЦП, но без последующей обработки на МК не обойтись. В любом случае потребуются цифровые ФВЧ.
lordak
Всем огромное спасибо за обсуждение! Давно на форум не заходил, а сегодня зашел и удивился сколько постов в теме biggrin.gif
Приятно осознавать, что с AD7730 работаю и мучаюсь не только я.

За прошедшее время, не смотря на то, что был завален работой, получилось несколько подвижек.
Во-первых, подобрал правильные резисторы между микроконтроллером и AD7730, в результате чего выбросы прекратились! Поставил вместо 500 ом 1,2 ком на ноги ..., и все стало ОК. Так что если AD7730 делает вам smile3046.gif - ставьте резисторы и все будет 08.gif
Во-вторых, наконец, удалось получить в свое распоряжение драйвер для запитки моста переменным напряжением (IR4427). В субботу только забрал посылку. Теперь могу всем сказать, что переменное напряжение - это круто, и его нада использовать. Если раньше было явление, когда сигнал полз, т.е. можно оставить датчик, придти через 5 мин - а сигнал поменялся на 10 отсчетов, то теперь такие чудеса прекратились.

Но, к сожалению, 16 стабильных разрядов с моего моста мне получить пока не удалось... (АЦП работает на 10 мВ) Возможно это связано с тем что схема собрана криво косо на макетной плате кривыми проводками, и если ее поместить в экранированный корпус и нормально развести ситуация улучшится. Возможно, нужно внести изменения в саму схему.
Если есть какие-то ухищрения по поводу получения вожделенных 16 разрядов, поделитесь, пожалуйста. Например, по поводу правильного разделения цифровой и аналоговой части и т.д. Очень хочу получить 16 разрядов smile.gif
lordak
P.S. Приношу извинения, что давно не заходил на форум и не сообщал о своих мучениях (или успехах, даже не знаю, как это назвать)
777777
Цитата(Vladimir_T @ Mar 21 2009, 19:11) *
Проблемы с выбросами в отсчетах на AD7730 тоже есть и у меня. И питаю его переменным током, и экранирую датчик и сам АЦП, но без последующей обработки на МК не обойтись.

Режим запуска автоматический или ручной? Какая частота оцифровки? Частота кварца 4.9152 или какой на складе был?

Цитата(Vladimir_T @ Mar 21 2009, 19:11) *
В любом случае потребуются цифровые ФВЧ.

А почеу мне не понадобились?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.