Перейти к содержанию
    

Добрый день.

 

АЦП ADS1248. Подключена к STM32 по SPI. Схема подключения полная из DS. Читается, пишется, DRDY при измерении/чтении изменяет.

К АЦП будут подключены тензомост и термистор.

В данный момент выполняю измерение внутренних значений АЦП на основании режима задаваемого через регистр MUX1.

 

Накопились вопросы, которые сам так и не смог решить.

1. В режиме MUX1 "проверка нуля ацп (AVDD + AVSS)/2" имеем шум на входе, который пока списываю на плату/питание/etc. Но иногда "ловлю" броски до максимума разрешения АЦП. Можно ли как то определить причину этого?

2. Режим MUX1 "контроль температуры". При прогреве АЦП, в разумных пределах, видим рост показаний от АЦП. Примерно на температуре +52..+53 градуса C имеем "бросок" показаний на 50-60 тысяч едениц. Затем показания опять плавно растут. При охлаждении платы и АЦП видим падение показаний и опять скачок уже вниз на 50-60 тыс. едениц.

 

Что было опробовано.

 

Проверено питание.

Замена АЦП.

Плата промыта.

 

Все равно имеем броски.

Подскажите - куда и что копать? Мыслей нет (

Могу приложить screenshot`s графиков снимаемых с АЦП

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но иногда "ловлю" броски до максимума разрешения АЦП. Можно ли как то определить причину этого?

Скорее всего, несинхронная работа шины: АЦП принял дополнительный клок (или, наоборот, не принял). Либо то же самое с DRDY: мастер увидел фронт, которого не было, и пошел считывать.

У меня было подобное (но с другим АЦП): пару раз сутки проскакивали такие битые измерения. Проблема была в программе, сбивалась синхронизация по DRDY(точнее, возникало "паразитное" вычитывание по ошибочно взведенному прерыванию по DRDY сигналу).

 

Могу приложить screenshot`s графиков снимаемых с АЦП

Вы логическим анализатором посмотрите лучше. Настройте его на запуск по фронту какого-то пина, которым дергайте в случае детектирования невалидных данных. Очень удобно и понятно (анализатор и немного предысторию пишет).

Учитывая, что у китайцев 8-канальный анализатор по 15 баксов продают, это самый эффективный способ отладки подобных железячно-софтовых связок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорее всего, несинхронная работа шины: АЦП принял дополнительный клок (или, наоборот, не принял). Либо то же самое с DRDY: мастер увидел фронт, которого не было, и пошел считывать.

По моему маловероятно т.к. при нагреве происходит плавное повышение значения читаемого с АЦП, затем резкий скачок и затем опять плавное повышение. Если не нагревать плату и АЦП - значения идут стабильные (ну в пределах шумов стабильные).

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По моему маловероятно т.к. при нагреве происходит плавное повышение значения читаемого с АЦП, затем резкий скачок и затем опять плавное повышение. Если не нагревать плату и АЦП - значения идут стабильные (ну в пределах шумов стабильные).

Вам нужно локализовать проблему: или Вы неправильно данные принимаете, или АЦП такие неправильные данные передает. Для этого нужен логический анализатор, который покажет, какие байты на самом деле в шине бегают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вам нужно локализовать проблему: или Вы неправильно данные принимаете, или АЦП такие неправильные данные передает. Для этого нужен логический анализатор, который покажет, какие байты на самом деле в шине бегают.

А вот так если вместо логического анализатора? Поможет как то?

1. Чтение данных с АЦП выполняется в прерывании по низкому уровню DRDY.

2. Очередное значение заносится в кольцевой буфер.

3. Буфер постоянно передается в программу верхнего уровня.

4. На верхнем уровне он копится и его можно посмотреть, график построить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

затем резкий скачок и затем опять плавное повышение.

В каком смысле? Одиночный выброс, или "как бы" сдвиг нуля - длинная ступенька?

А температура внутренняя?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В каком смысле? Одиночный выброс, или "как бы" сдвиг нуля - длинная ступенька?

Сдвиг нуля

 

В каком смысле? Одиночный выброс, или "как бы" сдвиг нуля - длинная ступенька?

А температура внутренняя?

 

Это и есть значения с внутреннего датчика температуры АЦП.

 

Вот как это выглядит

 

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

Изменено пользователем Zeal0t

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сдвиг нуля

 

 

 

Это и есть значения с внутреннего датчика температуры АЦП.

 

Вот как это выглядит

А зачем вообще Вам эта температура? Да еще с такой точностью?

Вот одновременно сдвиг нуля и какое-нибудь измерение стабильного напряжения будет информативнее. Я так думаю.

Или... Что в последней колонке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если ступенька всегда в одном месте шкалы, то стоит попробовать два варианта:

- после включения, подать на вход АЦП напряжение чуть ниже этого места и наблюдать(или нет) ступеньку

- когда температура устоялась и показания не плывут, на вход АЦП подать образцовое напряжение и плавно его повышать - будет ступенька в этом месте или нет.

И по хорошему бы понаблюдать за поведением выхода REF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А зачем вообще Вам эта температура? Да еще с такой точностью?

Вот одновременно сдвиг нуля и какое-нибудь измерение стабильного напряжения будет информативнее. Я так думаю.

Или... Что в последней колонке?

 

В последней колонке значение АЦП при измерении внутреннего параметра температура.

Эту температуру предполагалось использовать для контроля нагрева электроники.

По большому счету от нее можно и отказаться если бы не одно НО.

Точно так же прыгает значение с внешнего датчика температуры подключенного к каналам АЦП. И соответственно я делаю только 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.

Дельное предложение. Спасибо. Сейчас займусь...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В последней колонке значение АЦП при измерении внутреннего параметра температура.

Расшифруйте, пожалуйста.

 

- Inputs shorted to midsupply (AVDD + AVSS)/2

- V REFP – V REFN (full-scale)

Начать с этого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расшифруйте, пожалуйста.

У ADS1248 в регистре MUX1 есть мультиплексор особых режимов.

Один из режимов это контроль температуры когда АЦП подключает свои датчики для внутреннего измерения температуры.

Вот в этой колонке как раз и есть значения, которые читаются с АЦП в этом режиме.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У ADS1248 в регистре MUX1 есть мультиплексор особых режимов.

Один из режимов это контроль температуры когда АЦП подключает свои датчики для внутреннего измерения температуры.

Вот в этой колонке как раз и есть значения, которые читаются с АЦП в этом режиме.

Сама фраза сломала мне мозг - "параметра температура". А что эти цифры означают? А предыдущая колонка - это что за температура?

И еще - это оно само греется, или Вы помогаете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сама фраза сломала мне мозг - "параметра температура". А что эти цифры означают? А предыдущая колонка - это что за температура?

И еще - это оно само греется, или Вы помогаете?

 

Извиняюсь - возможно сумбурно сам написал )

 

У 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-х внешних датчиков. Данные с платы поступают на верхний уровень что бы посмотреть графики и данные. Затем постепенно начинаем плату прогревать феном.

 

Надеюсь все описал )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извиняюсь - возможно сумбурно сам написал )

 

Предыдущая колонка - это температура (приблизительная с точностью +-1 градус)

измереная с помощью STM32, которая и управляет/читает АЦП.

Так это температура внутри STM32?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...