Jump to content

    

смещение нуля at91sam7s256

Recommended Posts

Стоит или беситься? АЦП в минус мерить умеет?

Стабильно стоит. По всем каналам. При том, что само АЦП нормально измеряет значения. Т.е. измерял от 100 отсчетов 1000. АЦП в минус не измеряет.

Share this post


Link to post
Share on other sites

Obam

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

Вылечилось заменой дросселя-развязки по земле на перемычку.

Share this post


Link to post
Share on other sites

В нуле у АЦП at91sam7s256 стабильно 8 отсчетов. По пяти каналам. Кто - нибудь сталкивался?

Была похожая проблема. При детальном изучении оказался неправильно настроен выход при правильной настройки АЦП.

Share this post


Link to post
Share on other sites

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

Вылечилось заменой дросселя-развязки по земле на перемычку.

 

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

 

Была похожая проблема. При детальном изучении оказался неправильно настроен выход при правильной настройки АЦП.

Выход или вход? О какой настройке идет речь?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

 

Мож проц дохлый?

Share this post


Link to post
Share on other sites

Подтяжки отключены.
Тогда ой. Посмотрел - аналоговый режим включается автоматически при включении канала в настройках АЦП.

Мож проц дохлый?
Может и так. Но слабо верится. Хотя... обещают ошибку смещения не более 2 единизы МЗР. Вы пишете, что такая ошибка по пяти каналам. А по остальным? Впрочем, какая разница - они все на один порт разведены. Смущает, что при 20 кОм наступает некий порог. Проверьте еще разок все ноги земли. Может цифровая земля этого порта отвалилась.

Share this post


Link to post
Share on other sites

kleverd

Скорее всего косяк в плате(непропай). Надо померить сопротивление между пинами и дорожками.

8 отсчетов, конечно многовато.

А может помеха какая-то навелась. Эксперименты с выключением мобильников и люминесцентных ламп иногда помогают.

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

Edited by kleverd

Share this post


Link to post
Share on other sites

Косяк на плате я подозревал в первую очередь. Но увы. Ошибка по всем восьми каналам одинаковая. Разводке земли я всегда уделяю много внимания. И это меня еще не разу не подводило. Грешу на процессор. Будут другие платы - отпишусь.

Share this post


Link to post
Share on other sites

У вас входной тракт как выполнен? Стоят ли входные буферные усилители, может активные фильтры по каналам?

В двух вариантах - на одном входе 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)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.