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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> STM32F103 проблема с АЦП
Алексей ВМ
сообщение Oct 24 2016, 11:55
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 23-10-08
Пользователь №: 41 128



Добрый день,

Столкнулся со следующей проблемой с АЦП на STM32F103VBT6 - при достижении некоторого напряжения на входе АЦП данные с него не изменяются при последующем увеличении напряжения. Код, на котором застывают показания - 1023 (0x3FF) (вх. напряжение 0.63 В), затем при увеличении напряжения код скачком увеличивается до 1046. Опорное напряжение - внешнее 2.5 В, формирует AD.

Алексей.
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 24 2016, 12:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Я не сталкивался, но сходу проверил бы несколько вещей:
- не превышена ли тактовая частота АЦП?
- процедуру самокалибровки делать не забываете?
- нет ли шума в цепи питания Vdda?
Go to the top of the page
 
+Quote Post
Алексей ВМ
сообщение Oct 24 2016, 12:24
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 23-10-08
Пользователь №: 41 128



Цитата(scifi @ Oct 24 2016, 15:02) *
Я не сталкивался, но сходу проверил бы несколько вещей:
- не превышена ли тактовая частота АЦП?
- процедуру самокалибровки делать не забываете?
- нет ли шума в цепи питания Vdda?


Как задать частоту АЦП не нашел, используются настройки по умолчанию.
Самокалибровку делаю.
Vdda чистый.

Проблема проявляется только при напряжении на входе 0.64 В, грубо говоря, на одном сравнительно узком участке диапазона входного напряжения.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 24 2016, 12:44
Сообщение #4


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

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



Осциллограмму входного сигнала - в студию!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 24 2016, 12:50
Сообщение #5


Гуру
******

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



Может вход не настроен на аналоговый режим? В этом случае как раз около половины питания во входных цепях должен появляться сквозной ток, возможно он как-то влияет.


--------------------
На любой вопрос даю любой ответ
"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
Алексей ВМ
сообщение Oct 24 2016, 12:59
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 23-10-08
Пользователь №: 41 128



Цитата(ViKo @ Oct 24 2016, 15:44) *
Осциллограмму входного сигнала - в студию!


Сигнал подается прямо на вход АЦП от калибратора Fluke 715. Осциллограмма представляет собой прямую линию, уровень шумов ~20 мВ. Сигнал медленно изменяется с помощью калибратора.

Цитата(Сергей Борщ @ Oct 24 2016, 15:50) *
Может вход не настроен на аналоговый режим? В этом случае как раз около половины питания во входных цепях должен появляться сквозной ток, возможно он как-то влияет.


Код
                /* Configure P as analog input -------------------------*/
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
    
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
    
        GPIO_StructInit(&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3| GPIO_Pin_4| GPIO_Pin_5);
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOC, &GPIO_InitStructure);


Все пины настроены как аналоговые входы.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 24 2016, 13:01
Сообщение #7


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

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



1023 - это не половина, а четверть диапазона.
Тогда нужно найти, какой частотой тактируется.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Oct 24 2016, 13:04
Сообщение #8


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я голосую за превышение частоты тактирования АЦП.
Частота равна частоте APB2, делённой на прескалер АЦП. Поищите у себя что-то типа такого:
Код
    RCC->CFGR = (RCC->CFGR & ~(RCC_CFGR_HPRE | RCC_CFGR_PPRE2 | RCC_CFGR_PPRE1 | RCC_CFGR_ADCPRE)) |
            RCC_CFGR_HPRE_DIV1 | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_ADCPRE_DIV6;



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Oct 24 2016, 13:11
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



А сам АЦП на нужную разрядность настроили?
Go to the top of the page
 
+Quote Post
Алексей ВМ
сообщение Oct 24 2016, 13:18
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 23-10-08
Пользователь №: 41 128



Цитата(AHTOXA @ Oct 24 2016, 16:04) *
Я голосую за превышение частоты тактирования АЦП.
Частота равна частоте APB2, делённой на прескалер АЦП. Поищите у себя что-то типа такого:


Так оно и есть. После деления частоты проблема пропала. Спасибо!


Цитата(rudy_b @ Oct 24 2016, 16:11) *
А сам АЦП на нужную разрядность настроили?


Не нашел такой настройки.
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Oct 24 2016, 22:06
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



Ага, посмотрел, у 1хх действительно нет, настройка разрядности только у 2хх.
Go to the top of the page
 
+Quote Post
eu1cc
сообщение Oct 27 2016, 09:19
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 68
Регистрация: 24-10-10
Из: Minsk
Пользователь №: 60 382



Всем день добрый!
Спрошу тут:
Камень: STM32F103RCT6. По входу АЦП стоит резистор 10кОм на землю и ничего больше не подключено. Значения АЦП "скачут" в диапазоне 0...0х10 бит. При подаче на вход напряжения, меряет корректно. Собственно вопрос: Почему нет 0, при отсутствии сигнала. От настроек может быть?
Go to the top of the page
 
+Quote Post
Alechek
сообщение Oct 27 2016, 09:51
Сообщение #13


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

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(eu1cc @ Oct 27 2016, 14:19) *
Камень: STM32F103RCT6. По входу АЦП стоит резистор 10кОм на землю и ничего больше не подключено. Значения АЦП "скачут" в диапазоне 0...0х10 бит. При подаче на вход напряжения, меряет корректно. Собственно вопрос: Почему нет 0, при отсутствии сигнала. От настроек может быть?

Правильно заданный вопрос содержит половину ответа.
А звучать правильный будет так:
Цитата
Камень: STM32F103RCT6. По входу АЦП стоит АНТЕННА с резистором 10кОм на землю и ничего больше не подключено. Значения АЦП "скачут" в диапазоне 0...0х10 бит.....


Вобщем, смотрите разводку.
Go to the top of the page
 
+Quote Post
scifi
сообщение Oct 27 2016, 10:25
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Кстати, в зависимости от настроек АЦП (а именно время выборки) 10 кОм может быть вовсе не таким уж маленьким сопротивлением. Соответственно, будет прыгать туда-сюда в зависимости от того, что там происходит на ёмкости выборки между преобразованиями.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Allregia
сообщение Oct 29 2016, 12:45
Сообщение #15


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Блин, нежные они какие-то, эти F103 - отлаживался на макете, коснулся пинцетом одного неподключенного аналогового входа в разьеме (оттуда он через 1к и 0.1мкф в землю идет на проц), и видимо от статики при касании (хотя, искры вроде небыло).- все перезапустилось, и при этом у проца АЦП вышибло - вся программа работает, только с АЦП все нули читаются.
Перепаял проц - все заработало. На всякий случай, повесил 3.6в зенеры на все, что за пределы платы выходит.
Ни с одним другим СТМ32, ЛПЦ или ПИК - никогда такого небыло! Да еще чтобы через RC-цепочку!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:12
Рейтинг@Mail.ru


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