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

Atmega128 -ацп странное поведение

Atmega128a - используется 8 каналов ацп. 4-термисторных входа делитель с 10к/термистор , 4-по напряжению делитель 5к6/5к2 -все через повторитель lm324

Подключаю 10к резистор на первом канале ~2.5в - остальные 3 канала пустые без резисторов т.е. уних 5v на выходе -все нормально -сопротивление меряется хорошо

 

Подключаю 10к резистор на первом канале -любой другой канал подключаем на 10к еще один резистор - показания первого начинают ползти еще один канал 10к еще ползут т.е. например на первом канале было 9960 после подключения первого 10000, после второго 10060.

Если подключать 1к сопротивления или наоборот за 100к то влияния нет

Также влияет подключение на вольтовые входы -между 30% - 80% от диапазона ацп

Все конечно укладывается в5% но все равно как-то непонятно...

 

частота ацп 125000гц

ацп запускается с частотой 200раз в секунду - работает по прерыванию

чип 16МГц

 

 

Что за засада?

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

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


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

Что за засада?

 

Да кто ж ее знает ? Я, например, из ваших словесных излияний не понял почти ничего. Что стоило просто привести схему ?

 

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


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

проблема в том что - самые высокие значения ацп и низкие - не влияют друг на друга

влияют от ~30 до 80%

 

причем 4 канала на одном операционнике 4 на другом - и они влияют друг на друга в указанном диапазоне

 

прерывание

ISR(ADC_vect)
{

  adc_val= ADCL;  
//shift from 8bit to 10bit*/
adc_val+= (ADCH<<8);

AI[adc_ch]=(AI[adc_ch]+adc_val)/2;


adc_ch++;
if(adc_ch>7)
adc_ch=0;

}

 

инит

//  ADC module initialization 
void adc_init(void)
{
//select reference voltage
//AVCC with external capacitor 
ADMUX|=(0<<REFS1)|(1<<REFS0);
//set prescaller and enable ADC
ADCSRA|=(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
adc_ch=0;

}

 

 

опрос 200раз в секунду - 8 каналов == каждый канал 25 раз в секунду

 

//  ADC single conversion routine 
void adc_start_conversion(void)
{
//set ADC channel
ADMUX=(ADMUX&0xF0)|adc_ch;
//Start conversionio with Interupt after conversion
ADCSRA |= (1<<ADSC)|(1<<ADIE);

}

post-44931-1302336617_thumb.png

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

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


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

1.Проверьте сперва цифровым вольтметром напряжения на ножках контроллера, чтоб убедиться, что аналоговая часть работает корректно.

2. Попробуйте сэмплировать каждый канал по 3-4 раза, может результаты такого теста дадут доп. информацию к размышлениям.

3. Я бы попробовал вставить задержку после переключения канала и началом сэмплирования. И "поигрался" с ней, наблюдая результат.

Например, так:

//set ADC channel
ADMUX=(ADMUX&0xF0)|adc_ch;
//delay
_delay_us(100);  
//Start conversionio with Interupt after conversion
ADCSRA |= (1<<ADSC)|(1<<ADIE);

PS: Лично я с такой проблемкой не сталкивался, правда я ни разу не использовал мультиплексор, мне нужен был только один канал.

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

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


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

Как подключены AVCC, AREF?

Есть ли в их цепи какие-то фильтры?

По земле нету перекосов?

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


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

аналоговая часть работает корректно - по крайней мере с очень большой долей вероятности тк мерил напряжение на ногах оно не скачет (при вышеописанных действиях) по земле нет вроде особых проблем - питальник в другом конце платы на 3 напряжения 5/12/15. т.е. просто показания не скачут и никаких левых нагрузок на аналоговых напряжениях нет.

 

avcc подключено через фильтр 100uH+220uF +aref на 0.1 сидит - используется референс с avcc.

 

3. Я бы попробовал вставить задержку после переключения канала и началом сэмплирования. И "поигрался" с ней, наблюдая результат.

насчет задержки - интересная тема я тоже думал но не пробовал - спасибо в понедельник попробую отпишу

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


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

Посмотри на наличие на других портах камня напряжений превышающих питающее. В т.ч. и на цифровых. Кроме того, не забывай о том, что влет в Sleep автоматом запускает преобразование АЦП...

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


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

sleep не использую- и так нормально

напряжения на ногах проверю - хотя мало вероятно тк там же защитные диоды а ноги подключены либо на 5в либо через резисторы 10к

 

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


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

короче не помогает задержка

даже если оставить только нулевой канал все равно влияют другие софтварно отключенные каналы и именно в диапазоне ~30-80%

буду щас их железно отпаивать и смотреть

 

походу это дроссель avcc (=ref у меня) влияет как оказалось

стоял чип дроссель 1210 -100uH - у него сопротивление ~20Ом - падало до 40мв

поменял на выводной 100uH ~0608 все в порядке - <2.5мв

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

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


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

На схеме не видно, но показалось, что на выходах ОУ стоят 10к резисторы. Зачем??

 

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


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

для защиты входов ацп от перенапряжения - чтобы мегу не сожгло если на выходе вдруг будет 15в аналогового питания

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


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

для защиты входов ацп от перенапряжения - чтобы мегу не сожгло если на выходе вдруг будет 15в аналогового питания

рекомендуется меньше 10к выходное сопротивление источника сигнала. Смысла тогда нет в повторителе ИМХО

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


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

С резисторами неубедительно. Если посреди схемы ВНЕЗАПНО появляются 15 вольт какого-то питания, то это, как бы, ну. Да, резисторов в каждый провод навтыкать. Для защиты каждой детали от каждой другой детали.

 

Зато вспомнил про другие резисторы я. Которые internal pull-up. И которые автоматически сами собой отключаться не обещали, когда хочем мерять АЦП ту же ногу.

Конкретно за сабжёвую микросхему про это не гарантирую, а вообще есть такая тема.

 

(изображение схемы профессионально подготовлено к вылаживанию, детектед: чтоб ни один шпиён, зато наглядно и не при...дёрёшься)

(и ещё детектед: этой весной стало модно топеки про АЦП AVR заводить разные одинаковые, но различающиеся точным названием микросхемы, автором и разделом)

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...