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

 
 
 
Reply to this topicStart new topic
> смещение нуля at91sam7s256, В нуле у АЦП стабильно 8 отсчетов.
Димон Безпарольн...
сообщение Mar 25 2015, 16:57
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



В нуле у АЦП at91sam7s256 стабильно 8 отсчетов. По пяти каналам. Кто - нибудь сталкивался?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Mar 25 2015, 17:05
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Стоит или беситься? АЦП в минус мерить умеет?
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение Mar 25 2015, 17:07
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(Golikov A. @ Mar 25 2015, 20:05) *
Стоит или беситься? АЦП в минус мерить умеет?

Стабильно стоит. По всем каналам. При том, что само АЦП нормально измеряет значения. Т.е. измерял от 100 отсчетов 1000. АЦП в минус не измеряет.
Go to the top of the page
 
+Quote Post
Obam
сообщение Mar 26 2015, 12:25
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Нечто подобное было: "перебдел" - поставил дроссельки (~200 мкГн) в развязку по ВЧ и питания "цифра-аналог", и земли "цифра-аналог".
Вылечилось заменой дросселя-развязки по земле на перемычку.


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Александр С
сообщение Mar 26 2015, 12:45
Сообщение #5





Группа: Участник
Сообщений: 6
Регистрация: 23-03-15
Из: Москва
Пользователь №: 85 850



Цитата(Димон Безпарольный @ Mar 25 2015, 17:57) *
В нуле у АЦП at91sam7s256 стабильно 8 отсчетов. По пяти каналам. Кто - нибудь сталкивался?

Была похожая проблема. При детальном изучении оказался неправильно настроен выход при правильной настройки АЦП.
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение Mar 26 2015, 13:00
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(Obam @ Mar 26 2015, 15:25) *
Нечто подобное было: "перебдел" - поставил дроссельки (~200 мкГн) в развязку по ВЧ и питания "цифра-аналог", и земли "цифра-аналог".
Вылечилось заменой дросселя-развязки по земле на перемычку.


Что касается земли, то дросселей я туда конечно же не ставил, но идея интересная - может просто плохо пропаяна земля. Я чип вручную паял.

Цитата(Александр С @ Mar 26 2015, 15:45) *
Была похожая проблема. При детальном изучении оказался неправильно настроен выход при правильной настройки АЦП.

Выход или вход? О какой настройке идет речь?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 26 2015, 13:05
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 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
Димон Безпарольн...
сообщение Mar 26 2015, 13:08
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(Сергей Борщ @ Mar 26 2015, 16:05) *
Возможно вход настроен на цифровой режим и в нем не отключена подтяжка. Вроде и мизерный там ток, и сопротивление от вывода до точки подключения этой подтяжки небольшое, а набежать может. Может ток какой течет между цифровой и аналоговой землей и приподнимает или опускает потенциал аналоговой земли.

Подтяжки отключены. Но ток, подтягивающий выводы вверх все же течет. Условный ноль (8 отсчетов) наступает при подпайке резистора 20КОм на землю. Меньший резистор не дает реального нуля.

Мож проц дохлый?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 26 2015, 14:31
Сообщение #9


Гуру
******

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



Цитата(Димон Безпарольный @ Mar 26 2015, 15:08) *
Подтяжки отключены.
Тогда ой. Посмотрел - аналоговый режим включается автоматически при включении канала в настройках АЦП.
Цитата(Димон Безпарольный @ Mar 26 2015, 15:08) *
Мож проц дохлый?
Может и так. Но слабо верится. Хотя... обещают ошибку смещения не более 2 единизы МЗР. Вы пишете, что такая ошибка по пяти каналам. А по остальным? Впрочем, какая разница - они все на один порт разведены. Смущает, что при 20 кОм наступает некий порог. Проверьте еще разок все ноги земли. Может цифровая земля этого порта отвалилась.


--------------------
На любой вопрос даю любой ответ
"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
kleverd
сообщение Apr 13 2015, 20:51
Сообщение #10


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

Группа: Свой
Сообщений: 131
Регистрация: 26-04-14
Из: Москва
Пользователь №: 81 525



Скорее всего косяк в плате(непропай). Надо померить сопротивление между пинами и дорожками.
8 отсчетов, конечно многовато.
А может помеха какая-то навелась. Эксперименты с выключением мобильников и люминесцентных ламп иногда помогают.
А у АЦП никакого режима калибровки нету случаем?

Сообщение отредактировал kleverd - Apr 13 2015, 20:52
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение Apr 15 2015, 03:48
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Косяк на плате я подозревал в первую очередь. Но увы. Ошибка по всем восьми каналам одинаковая. Разводке земли я всегда уделяю много внимания. И это меня еще не разу не подводило. Грешу на процессор. Будут другие платы - отпишусь.
Go to the top of the page
 
+Quote Post
stoker
сообщение Apr 16 2015, 12:11
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 28-11-05
Из: Москва
Пользователь №: 11 469



У вас входной тракт как выполнен? Стоят ли входные буферные усилители, может активные фильтры по каналам?
Go to the top of the page
 
+Quote Post
Димон Безпарольн...
сообщение Apr 16 2015, 12:26
Сообщение #13


Знающий
****

Группа: Участник
Сообщений: 734
Регистрация: 29-11-10
Пользователь №: 61 247



Цитата(stoker @ Apr 16 2015, 15:11) *
У вас входной тракт как выполнен? Стоят ли входные буферные усилители, может активные фильтры по каналам?

В двух вариантах - на одном входе AD8628, операционник, на трех - конденсаторы 1мкф керамика и резистивный делитель. Результат один и тот же. В программе приходится вычитать 7 отсчетов. Чтение АЦП по готовности, в прерывании:
Код
__irq void ADC_int(void) {            //Прерывание от АЦП бит DRDY. Время выполнения 2мкс
//Канал 2
    if (*ADC_SR & 4) {                //Проверка готовности канала EOC2
        ADC_ch2 = *ADC_CDR2-7;        //Чтение канала сбрасывает канальный бит прерывания EOC2
        *ADC_CHER =    8;}                //Включить канал 3
//Канал 3
    if (*ADC_SR & 8) {                //Проверка готовности канала EOC3
        ADC_ch3 = *ADC_CDR3-7;        //Чтение канала сбрасывает канальный бит прерывания EOC3
        *ADC_CHER =    16;}            //Включить канал 4
//Канал 4
    if (*ADC_SR & 16) {                //Проверка готовности канала EOC4
        ADC_ch4 = *ADC_CDR4-7;        //Чтение канала сбрасывает канальный бит прерывания EOC4
        *ADC_CHER =    32;}            //Включить канал 5
//Канал 5
    if (*ADC_SR & 32) {                //Проверка готовности канала EOC5.
        ADC_ch5 = *ADC_CDR5-7;        //Чтение канала сбрасывает канальный бит прерывания EOC5
        *ADC_CHER =    64;    }            //Включить канал 6
//Канал 6
    if (*ADC_SR & 64) {                //Проверка готовности канала EOC6
        ADC_ch6 = *ADC_CDR6-7;        //Чтение канала сбрасывает канальный бит прерывания EOC6
        *ADC_CHER =    128;}            //Включить канал 7
//Канал 7
    if (*ADC_SR & 128) {            //Проверка готовности канала EOC7
        ADC_ch7 = *ADC_CDR7-7;        //Чтение канала сбрасывает канальный бит прерывания EOC7
        *ADC_CHER =    4;}                //Включить канал 2
//Общая ветвь
        *ADC_CR=(1<<1);                //Начать преобразование
        *AIC_EOICR = 1;}            //__irq void ADC_int(void)
Go to the top of the page
 
+Quote Post

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

 


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


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