реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32F103 и сильный шум АЦП, все доступные каналы через ДМА
Ruslan-maniak
сообщение Jul 17 2018, 10:50
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Приветствую. Пытаюсь запустить все АЦП каналы доступные на контроллере STM32F103ZCT (21 канал: 15 каналов в ADC1 и 6 каналов в ADC3) при одновременной работе через ДМА в циклическом режиме. То есть выборка происходит все время для всех каналов. И столкнулся со следующей проблемой. Очень большой шум в каналах (но не во всех). Даже если их накоротко посадить на землю, то на некоторых каналах (особенно у ADC3) измерения достигают 100-150 LSB. При чем эти значения не периодические, а постоянны, то есть ноль в канале я вижу реже чем значение выше например 50 LSB. При этом у каждого канала свой шум и он также зависит от Rank'а присвоенного при конфигурировании канала. Частота тактирования АЦП = 36МГц. Если её опускать то ничего не меняется. Время сэмплирования стоит максимальное ADC_SampleTime_239Cycles5. Подскажите как получить адекватные значения по всем каналам? Кто сталкивался с такой проблемой? Или СТМ на это не способен в принципе и стоит сразу смотреть в сторону внешних АЦП?

Сообщение отредактировал Ruslan-maniak - Jul 17 2018, 11:14
Go to the top of the page
 
+Quote Post
uriy
сообщение Jul 17 2018, 12:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



При подключении входов к питанию значение с АЦП тоже не доходит до 4096 и составляет порядка 3900? Тогда вы забыли сделать калибровку.
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Jul 17 2018, 13:39
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Цитата(uriy @ Jul 17 2018, 19:51) *
При подключении входов к питанию значение с АЦП тоже не доходит до 4096 и составляет порядка 3900? Тогда вы забыли сделать калибровку.

До 4095 не доходит. В районе 4000 LSB. плюс-минус. Калибровку произвожу
Код
    
ADC_Cmd(adc->number, ENABLE);  
    
    // калибровка АЦП
    ADC_ResetCalibration(adc->number);
    while(ADC_GetResetCalibrationStatus(adc->number));
    ADC_StartCalibration(adc->number);
    while(ADC_GetCalibrationStatus(adc->number));    
    
    ADC_SoftwareStartConvCmd(adc->number, ENABLE);

Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 17 2018, 14:32
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Vref смотрели, нормальное, не шумит, не возбуждается, не звенит?
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Jul 17 2018, 15:10
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Цитата(ViKo @ Jul 17 2018, 21:32) *
Vref смотрели, нормальное, не шумит, не возбуждается, не звенит?

Действительно, там шумновато. амплитуда шумов около 0.05 В. Попробую докинуть ёмкости. Но мне кажется, дело не только в шуме.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 17 2018, 15:56
Сообщение #6


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Ruslan-maniak @ Jul 17 2018, 18:10) *
Но мне кажется, дело не только в шуме.

В питании в целом?
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 17 2018, 18:01
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Ruslan-maniak @ Jul 17 2018, 13:50) *
. . . Даже если их накоротко посадить на землю, то на некоторых каналах (особенно у ADC3) измерения достигают 100-150 LSB. . . .
Может в разводке дело, по GND переток под процессором ? Соблюдено, то что в даташите "General PCB design guidelines" ?
ps sm.gif
ну, и банальная промывка платы рекомендуется.
Go to the top of the page
 
+Quote Post
pnp_mechanic
сообщение Jul 17 2018, 19:03
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 25-07-17
Пользователь №: 98 462



В АЦП STM32 нет входного буфера. Во время выборки через ключ подключается конденсатор, который был подключен к предыдущему каналу. Возможно проблемы в в входных цепях вашей схемы.
Go to the top of the page
 
+Quote Post
Ruslan-maniak
сообщение Jul 18 2018, 04:13
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 27-12-12
Из: Томск
Пользователь №: 74 999



Некоторые дополнения. Смотрите, у меня 20 идентичных по схемотехнике каналов. Все 20 каналов идут через повторители на ОУ. Перед ОУ стоят цифровые потенциометры которые в данный момент прижимают сигнал к земле накоротко. Если замерить мультиметром то сопротивление получается там около 200-300 Ом. Так вот сейчас для эксперимента запускаю измерения только для одного канала циклически через ДМА (буфер на 10 замеров) и каждую миллисекунду смотрю что в буфере. И например на канале ADC1-15 среднее значение этого буфера всегда равно нулю, а максимальный пик фиксируется за длительное время не более 10 LSB. Если же взять канал ADC1-10 то там картина разительно отличается. Среднее значение буфера скачет от 20 до 80 LSB. А максимальный пик фиксируется практически сразу в районе 180 LSB, и постепенно доходит до 200 LSB. Даже если я замыкаю напрямую землю контроллера и пин АЦП. На мой взгляд такое поведение вряд ли можно объяснить (оправдать) неправильной разводкой (разводка отличается лишь тем что длина дорожки от ОУ до АЦП больше на 4 см), непромывкой, или проблемами с питанием. Кто что думает?
Go to the top of the page
 
+Quote Post
Plain
сообщение Jul 18 2018, 05:26
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 6 776
Регистрация: 5-03-09
Из: Москва
Пользователь №: 45 710



Да не над чем тут думать, кроме очередной страницы ни о чём. Когда таки соизволите додумать выложить схему и разводку — вот тогда подумаем подумать.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 18 2018, 07:51
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Ruslan-maniak @ Jul 18 2018, 07:13) *
. . . Перед ОУ стоят цифровые потенциометры которые в данный момент прижимают сигнал к земле накоротко. Если замерить мультиметром то сопротивление получается там около 200-300 Ом. . . .
Накоротко - это перемычка входа на GND, все остальное от линии отключено.
Если стоят повторители (как оказалось), зачем время выборки максимальное ? Поставьте среднее, минимальное.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 18 2018, 09:08
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Ruslan-maniak @ Jul 17 2018, 16:39) *
Калибровку произвожу
CODE
    
ADC_Cmd(adc->number, ENABLE);  
    
    // калибровка АЦП
    ADC_ResetCalibration(adc->number);

"Если ничего не помогает - прочтите, наконец, инструкцию"...
QUOTE
Note: 1 It is recommended to perform a calibration after each power-up.
2 Before starting a calibration the ADC must have been in power-off state (ADON bit = ‘0’) for
at least two ADC clock cycles
.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Wasserati
сообщение Jul 18 2018, 11:39
Сообщение #13


Участник
*

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



Цитата
Частота тактирования АЦП = 36МГц.

Максимальная частота тактирования АЦП - 14 МГц. Отсюда и могу быть проблемы.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th April 2024 - 12:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016