Zeal0t 0 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба Добрый день. АЦП ADS1248. Подключена к STM32 по SPI. Схема подключения полная из DS. Читается, пишется, DRDY при измерении/чтении изменяет. К АЦП будут подключены тензомост и термистор. В данный момент выполняю измерение внутренних значений АЦП на основании режима задаваемого через регистр MUX1. Накопились вопросы, которые сам так и не смог решить. 1. В режиме MUX1 "проверка нуля ацп (AVDD + AVSS)/2" имеем шум на входе, который пока списываю на плату/питание/etc. Но иногда "ловлю" броски до максимума разрешения АЦП. Можно ли как то определить причину этого? 2. Режим MUX1 "контроль температуры". При прогреве АЦП, в разумных пределах, видим рост показаний от АЦП. Примерно на температуре +52..+53 градуса C имеем "бросок" показаний на 50-60 тысяч едениц. Затем показания опять плавно растут. При охлаждении платы и АЦП видим падение показаний и опять скачок уже вниз на 50-60 тыс. едениц. Что было опробовано. Проверено питание. Замена АЦП. Плата промыта. Все равно имеем броски. Подскажите - куда и что копать? Мыслей нет ( Могу приложить screenshot`s графиков снимаемых с АЦП Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 16 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба Но иногда "ловлю" броски до максимума разрешения АЦП. Можно ли как то определить причину этого? Скорее всего, несинхронная работа шины: АЦП принял дополнительный клок (или, наоборот, не принял). Либо то же самое с DRDY: мастер увидел фронт, которого не было, и пошел считывать. У меня было подобное (но с другим АЦП): пару раз сутки проскакивали такие битые измерения. Проблема была в программе, сбивалась синхронизация по DRDY(точнее, возникало "паразитное" вычитывание по ошибочно взведенному прерыванию по DRDY сигналу). Могу приложить screenshot`s графиков снимаемых с АЦП Вы логическим анализатором посмотрите лучше. Настройте его на запуск по фронту какого-то пина, которым дергайте в случае детектирования невалидных данных. Очень удобно и понятно (анализатор и немного предысторию пишет). Учитывая, что у китайцев 8-канальный анализатор по 15 баксов продают, это самый эффективный способ отладки подобных железячно-софтовых связок. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба Скорее всего, несинхронная работа шины: АЦП принял дополнительный клок (или, наоборот, не принял). Либо то же самое с DRDY: мастер увидел фронт, которого не было, и пошел считывать. По моему маловероятно т.к. при нагреве происходит плавное повышение значения читаемого с АЦП, затем резкий скачок и затем опять плавное повышение. Если не нагревать плату и АЦП - значения идут стабильные (ну в пределах шумов стабильные). Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 16 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба По моему маловероятно т.к. при нагреве происходит плавное повышение значения читаемого с АЦП, затем резкий скачок и затем опять плавное повышение. Если не нагревать плату и АЦП - значения идут стабильные (ну в пределах шумов стабильные). Вам нужно локализовать проблему: или Вы неправильно данные принимаете, или АЦП такие неправильные данные передает. Для этого нужен логический анализатор, который покажет, какие байты на самом деле в шине бегают. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба Вам нужно локализовать проблему: или Вы неправильно данные принимаете, или АЦП такие неправильные данные передает. Для этого нужен логический анализатор, который покажет, какие байты на самом деле в шине бегают. А вот так если вместо логического анализатора? Поможет как то? 1. Чтение данных с АЦП выполняется в прерывании по низкому уровню DRDY. 2. Очередное значение заносится в кольцевой буфер. 3. Буфер постоянно передается в программу верхнего уровня. 4. На верхнем уровне он копится и его можно посмотреть, график построить. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба затем резкий скачок и затем опять плавное повышение. В каком смысле? Одиночный выброс, или "как бы" сдвиг нуля - длинная ступенька? А температура внутренняя? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 21 января, 2014 Опубликовано 21 января, 2014 (изменено) · Жалоба В каком смысле? Одиночный выброс, или "как бы" сдвиг нуля - длинная ступенька? Сдвиг нуля В каком смысле? Одиночный выброс, или "как бы" сдвиг нуля - длинная ступенька? А температура внутренняя? Это и есть значения с внутреннего датчика температуры АЦП. Вот как это выглядит DATE, TIME, TEMPERATUREMCU, TEMPERATUREADC 21.1.2014, 14:23:46.796, 32, 425450 21.1.2014, 14:23:46.937, 32, 425410 ... 21.1.2014, 14:25:36.921, 45, 458223 21.1.2014, 14:25:36.984, 45, 458223 вот тут начало это ступеньки и далее продолжает набирать по чуть-чуть 21.1.2014, 14:25:37.046, 45, 524400 21.1.2014, 14:25:37.125, 45, 524400 21.1.2014, 14:25:37.921, 45, 524400 21.1.2014, 14:25:38.000, 45, 524400 21.1.2014, 14:25:38.062, 45, 524959 21.1.2014, 14:25:38.109, 45, 524959 21.1.2014, 14:25:38.921, 46, 524959 21.1.2014, 14:25:39.218, 46, 525437 21.1.2014, 14:25:39.281, 46, 525437 21.1.2014, 14:25:39.343, 46, 525437 Изменено 21 января, 2014 пользователем Zeal0t Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба Сдвиг нуля Это и есть значения с внутреннего датчика температуры АЦП. Вот как это выглядит А зачем вообще Вам эта температура? Да еще с такой точностью? Вот одновременно сдвиг нуля и какое-нибудь измерение стабильного напряжения будет информативнее. Я так думаю. Или... Что в последней колонке? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 63 21 января, 2014 Опубликовано 21 января, 2014 · Жалоба Если ступенька всегда в одном месте шкалы, то стоит попробовать два варианта: - после включения, подать на вход АЦП напряжение чуть ниже этого места и наблюдать(или нет) ступеньку - когда температура устоялась и показания не плывут, на вход АЦП подать образцовое напряжение и плавно его повышать - будет ступенька в этом месте или нет. И по хорошему бы понаблюдать за поведением выхода REF. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба А зачем вообще Вам эта температура? Да еще с такой точностью? Вот одновременно сдвиг нуля и какое-нибудь измерение стабильного напряжения будет информативнее. Я так думаю. Или... Что в последней колонке? В последней колонке значение АЦП при измерении внутреннего параметра температура. Эту температуру предполагалось использовать для контроля нагрева электроники. По большому счету от нее можно и отказаться если бы не одно НО. Точно так же прыгает значение с внешнего датчика температуры подключенного к каналам АЦП. И соответственно я делаю только 2 вывода - или я как то неправильно работаю с АЦП, или у него уплывает опора/ноль/etc и как то надо это решить. Одновременное измерение стабильного напряжения? Могу сделать замеры/выборку внутренних параметров АЦП и предоставить данные. Что бы не раздувать тему - какой параметр может помочь: - Inputs shorted to midsupply (AVDD + AVSS)/2 - V REFP – V REFN (full-scale) - Temperature measurement diode - (V REFP1 – V REFN1 )/4 - (V REFP0 – V REFN0 )/4 - (AVDD – AVSS)/4 - (DVDD – DVSS)/4 Если ступенька всегда в одном месте шкалы, то стоит попробовать два варианта: - после включения, подать на вход АЦП напряжение чуть ниже этого места и наблюдать(или нет) ступеньку - когда температура устоялась и показания не плывут, на вход АЦП подать образцовое напряжение и плавно его повышать - будет ступенька в этом месте или нет. Это данные не на входе АЦП. Это его внутренний датчик температуры. Хотя данные на входе тоже скачут. И по хорошему бы понаблюдать за поведением выхода REF. Дельное предложение. Спасибо. Сейчас займусь... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба В последней колонке значение АЦП при измерении внутреннего параметра температура. Расшифруйте, пожалуйста. - Inputs shorted to midsupply (AVDD + AVSS)/2 - V REFP – V REFN (full-scale) Начать с этого. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба Расшифруйте, пожалуйста. У ADS1248 в регистре MUX1 есть мультиплексор особых режимов. Один из режимов это контроль температуры когда АЦП подключает свои датчики для внутреннего измерения температуры. Вот в этой колонке как раз и есть значения, которые читаются с АЦП в этом режиме. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба У ADS1248 в регистре MUX1 есть мультиплексор особых режимов. Один из режимов это контроль температуры когда АЦП подключает свои датчики для внутреннего измерения температуры. Вот в этой колонке как раз и есть значения, которые читаются с АЦП в этом режиме. Сама фраза сломала мне мозг - "параметра температура". А что эти цифры означают? А предыдущая колонка - это что за температура? И еще - это оно само греется, или Вы помогаете? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Zeal0t 0 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба Сама фраза сломала мне мозг - "параметра температура". А что эти цифры означают? А предыдущая колонка - это что за температура? И еще - это оно само греется, или Вы помогаете? Извиняюсь - возможно сумбурно сам написал ) У ADS1248, помимо чтения с входов, есть измерение внутренних режимов самой АЦП. Режим задается записью битов 2:0 в регистр MUX1. Вот эти режимы: 000 Normal operation 001 Inputs shorted to midsupply (AVDD + AVSS)/2 010 V REFP – V REFN (full-scale) 011 Temperature measurement diode 100 (V REFP1 – V REFN1 )/4 101 (V REFP0 – V REFN0 )/4 110 (AVDD – AVSS)/4 111 (DVDD – DVSS)/4 Т.е. при выборе режима отличного от "Normal operation" АЦП выполняет измерение на основании заданного режима. Таким образом "параметр температура" - это значение на входе АЦП в режиме "011 Temperature measurement diode". Результат с АЦП читаем и записываем себе в буфер. Т.е. эти цифры - это значение которым ответило АЦП в текущем режиме измерения. Предыдущая колонка - это температура (приблизительная с точностью +-1 градус) измереная с помощью STM32, которая и управляет/читает АЦП. Измеряем следующим образом. Плата запускается, и с переодичностью 100ms выполняет измерение всех внутренних параметров (пока только для справки) и 2-х внешних датчиков. Данные с платы поступают на верхний уровень что бы посмотреть графики и данные. Затем постепенно начинаем плату прогревать феном. Надеюсь все описал ) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tanya 4 22 января, 2014 Опубликовано 22 января, 2014 · Жалоба Извиняюсь - возможно сумбурно сам написал ) Предыдущая колонка - это температура (приблизительная с точностью +-1 градус) измереная с помощью STM32, которая и управляет/читает АЦП. Так это температура внутри STM32? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться