С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.79/53: Рейтинг темы: голосов - 53, средняя оценка - 4.79
omd
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 192
1

Вопрос по точности АЦП в Atmega48

01.04.2012, 09:16. Просмотров 9606. Ответов 21
Метки нет (Все метки)

Делаю измеритель на микроконтроллере и столкнулся с таким моментом. Если брать Atmega8, то он при использовании АЦП со встроенным ИОН на 2,56В без проблем обеспечивает нужную точность +-2 LSB. А вот с Atmega48PA где встроенный ИОН работает на напряжении 1,1В точность получается гораздо хуже, от -6 до +3 LSB. Она попадает в допуск +-2LSB только при питании АЦП от внешнего источника напряжением 5В.
Получается, что в даташите обман? Никто с этим эффектом не сталкивался?

И еще не понятка. У АЦП есть биты REFS, отвечающие за выбор опоры. REFS=11 от внутреннего ИОН, REFS=00 от внешнего источника работает. А вот с REFS=01 (от вывода AVCC) как раз не понятка. Если первоначально было REFS=11, а потом поменять на REFS=01 то код АЦП не меняется и при изменении AVCC ничего не происходит, т.е. переключение в режим AVCC как бы не работает.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 09:16
Ответы с готовыми решениями:

Нормирование данных датчика температуры LM35 с АЦП (ATMega48)
Есть следующий код, выводит значение, считанное с АЦП во вторую строку на...

Здравствуйте. Вопрос по UATR на ATmega48
Здравствуйте. Помогите рабочим примером обработки прерывания по приёму байта по...

Вопрос по АЦП
Без прелюдии и сразу к делу!)) Короче вопрос такой: даю я команду АЦП (tiny45)...

Вопрос по АЦП. + 1V на ножках.
Добрый день. Прошу подсказки. Настраиваю АЦП на прием напряжения с...

мелкий вопрос по АЦП
Здрасьте, использую gcc пишу а си, имеется небольшой ламерский вопрос по ацп в...

21
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
01.04.2012, 09:38 2
а можно код, например?
0
omd
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 192
01.04.2012, 09:46 3
Код
// Настройка АЦП
ADMUX=0xC2;   // канал АЦП2, внутренний ИОН 1,1В с конденсатором
ADCSRA=0x84;   // вкл АЦП, Кд=16 (125кГц), правое выравнивание бит

// ~~~~~~~~ ЗАМЕР АЦП ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ADMUX=0xC2;   // включаем
// суммируем 16 замеров АЦП
NA=0;
for (i=0;i<16;i++)   {NA+=mesuare_U();}
NA/=16;   // вычисляем средний код

// ******** Функции ********************************************
// Замер кода АЦП
int mesuare_U(void)
{
ADCSRA|=(1<<ADSC);   // пуск замера
while (bit_is_set(ADCSRA,ADSC)); // крутимся в цикле до конца замера
return (ADCL+(ADCH<<8));
}
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
01.04.2012, 10:42 4
Цитата Сообщение от omd
Делаю измеритель на микроконтроллере и столкнулся с таким моментом. Если брать Atmega8, то он при использовании АЦП со встроенным ИОН на 2,56В без проблем обеспечивает нужную точность +-2 LSB. А вот с Atmega48PA где встроенный ИОН работает на напряжении 1,1В точность получается гораздо хуже, от -6 до +3 LSB. Она попадает в допуск +-2LSB только при питании АЦП от внешнего источника напряжением 5В.
Получается, что в даташите обман? Никто с этим эффектом не сталкивался?
Точность всегда 1LSB, Вы скорей всего наблюдаете шум из-за нестабильности ИОН.
Цитата Сообщение от omd
И еще не понятка. У АЦП есть биты REFS, отвечающие за выбор опоры. REFS=11 от внутреннего ИОН, REFS=00 от внешнего источника работает. А вот с REFS=01 (от вывода AVCC) как раз не понятка. Если первоначально было REFS=11, а потом поменять на REFS=01 то код АЦП не меняется и при изменении AVCC ничего не происходит, т.е. переключение в режим AVCC как бы не работает.
У Вас небольшая путаница – через пин AVCC запитывается модуль АЦП, а внешнее опорное подается на пин AREF. Судя по всему AVCC у Вас в воздухе, в мега8 есть аппаратный баг – AVCC закорочен с VCC (см. errata), поэтому о нем можно как бы забыть, по этой же причине бессмысленно цеплять на него фильтр. При выборе внутреннего ИОН он подключен на AREF для подключения блокировочного конденсатора с целью сгладить шум, наводимый цифровой частью.
Запитайте АЦП, подключите кондер и «точность» Вас удовлетворит.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
01.04.2012, 10:55 5
Я о стиле программирования, omd пишет:
Цитата Сообщение от omd
Код:
// Настройка АЦП
ADMUX=0xC2; // канал АЦП2, внутренний ИОН 1,1В с конденсатором
ADCSRA=0x84; // вкл АЦП, Кд=16 (125кГц), правое выравнивание бит

Чтобы проверить правильность, мне сначала приходится переводить hex в bin:
Код
// Настройка АЦП
ADMUX=0b11000010;   // канал АЦП2, внутренний ИОН 1,1В с конденсатором
ADCSRA=0b10000100;   // вкл АЦП, Кд=16 (125кГц), правое выравнивание бит
А затем лезть в даташит и переводить уже в нормальный, удобочитаемый вид:
Код
// Настройка АЦП
ADMUX=(1<<REFS1) | (1<<REFS0) | (1<<MUX1)
ADCSRA=(1<<ADIM) | (1<<ADPS2)
Неужели с самого начала сложно придерживаться такого стиля программирования?
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
01.04.2012, 11:28 6
Цитата Сообщение от omokost
Неужели с самого начала сложно придерживаться такого стиля программирования?
Сложно. Пока не покажут на примере. А что ты так удивляешься? Родился с Си в зубах?

Вот теперь автор темы будет писАть красивою. Благодаря твоей подсказке :)
0
ptoop
0 / 0 / 0
Регистрация: 19.09.2010
Сообщений: 1,761
01.04.2012, 11:30 7
Вот теперь автор темы будет писАть красивою. Благодаря твоей подсказке :)
Согласен. Сам несколько раз расписывал это новичкам.
Когда только начинал - тоже высчитывал "нигические числа" на калькуляторе, пока не понял, как надо :)
0
omd
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 192
01.04.2012, 12:26 8
Показания АЦП стабильны, шумов не наблюдается ни при однократных замерах ни после усреднения по 16 замерам. Речь идет об отклонении х-ки от теоретической N=V/Vref*1024, т.е. о нелинейности АЦП.
AVCC в схеме соединен с VCC.
Насчет конденсатора на Aref спасибо, попробую.
По стилю согласен :), но с другой стороны я не запоминаю, где и какие биты надо выставлять, так и так надо лезть в даташит. Получается, что волшебные хексы, что роспись по битам - время на кодинг тратится одинаковое.
0
omokost
0 / 0 / 0
Регистрация: 24.12.2011
Сообщений: 2,753
01.04.2012, 12:33 9
Цитата Сообщение от omd
Получается, что волшебные хексы, что роспись по битам - время на кодинг тратится одинаковое.
Может вам и нет разницы, и через энное время вы сможете вспомнить, что сами написали. Но вы обращаетесь за помощью, а здесь есть разница.
У разных AVR есть разное кол-во значимых бит в одних и тех-же регистрах. И посчитать их на лету в hex представлении нереально. Поэтому и просьба, писать понятнее.
0
kytikot
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 3,435
01.04.2012, 12:35 10
Насчет стиля записи конфигурационных битов.
При правильной записи, с указанием мнемоник:

1. Увеличивается удобочитаемость, причем не только для себя, но и для других;
2. Улучшается переносимость кода;
3. Уменьшается возможность сделать ошибку.

Если вам пофигу, как писать, то другим разбираться в вашем коде будет точно так же пофигу, и ответов вы на форуме не дождетесь.
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
01.04.2012, 18:10 11
Цитата Сообщение от omd
Речь идет об отклонении х-ки от теоретической N=V/Vref*1024, т.е. о нелинейности АЦП.
Хмм… Поделитесь, как Вы эту нелинейность вычислили? Может нелинейность в источнике? Как подключен источник ко входу АЦП? Обычно рекомендуют межру источником и входом АЦП балласт на килоом.
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
01.04.2012, 20:53 12
Цитата Сообщение от tyzord66
Хмм… Поделитесь, как Вы эту нелинейность вычислили?
+1. Я вот тоже недавно обратил внимание на характеристики встроенного АЦП, до этого меня устаривал показометр или были внешние АЦП. И именно при внутренней опоре как-то сомнения возникли. Но там исследовать пока не вышло, источник - мостик после транса, нужно резать-пилить для проверки. Поэтому с интересом ознакомлюсь с результатами уважаемого коллеги omd
0
omd
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 192
01.04.2012, 22:34 13
Пробовал ставить 0,1 мкФ на Aref показания не меняются.
Приложил файл в формате опен оффис (при экспорте в pdf получается слишком большой размер 384кб и движок форума его не пропускает)


./styles/iosyitistromyss/imageset/icon_topys_attach.gif" width="14" height="18
[95.27 Кб]
0
dsodir
0 / 0 / 0
Регистрация: 28.09.2010
Сообщений: 4,284
01.04.2012, 22:41 14
Сопротивление источника сигнала для АЦП какое?
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
01.04.2012, 22:45 15
А чем измерял входное напряжение?

У тебя, теоретически, деже лучше должно получаться, чем снимают характеристики АЦП. Обычно идеальную прямую проводят между двумя точками (например, ноль и шкала), а потом смотрят отклонения от этой "калибровочной" прямой. Ты же проводишь прямую, наилучшим (в смысле МНК) образом соответствующую всем данным опытов. Поэтому она может и не проходить через крайние точки - но зато минимизируются большие отклонения.
В таких условиях я бы ожидал весьма малых погрешностей...
0
omd
0 / 0 / 0
Регистрация: 27.01.2010
Сообщений: 192
01.04.2012, 23:11 16
Внутреннее сопротивление источника для АЦП равно 4,7кОм (сопротивление делителя, подключенное к земле). Напряжение измерял MASTECH-MY65.
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
01.04.2012, 23:26 17
Цитата Сообщение от omd
Напряжение измерял MASTECH-MY65.
Ну... Там точность невысокая. не нашел четкой цифры, но вижу, что 4,5 разряда на 1000 мВ дадут младшую цифру, совпадающую с дискретностью АЦП. Так что в качестве образцового его рассматривать трудно. Может потому такие результаты?

А поточнее нечем задавать?

Упс. Сморозил. 4,5 - это даст 0,1 мв. Пожалуй, достаточно.

Хорошо, а характер погрешности? Вот эта нелинейность - если повторить опыт, повторяется?
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
02.04.2012, 01:19 18
Цитата Сообщение от omd
Приложил файл в формате опен оффис
Мда, фундаментальный подход, снимаю шляпу. Вот только рядом с прецизионными R1 и R2 переменный R3 выглядит как то нелепо.

У Евстифеева есть вот такие рекомендации относительно точности:

0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
02.04.2012, 01:32 19
Цитата Сообщение от tyzord66
Вот только рядом с прецизионными R1 и R2 переменный R3 выглядит как то нелепо.
Вовсе нет. Его нестабильность меньше влияет на общий к-т - именно в силу наличия R2. А нестабильность R1 прямо бы полезла в результат. Зачем же нам источники уплывания к-та от того, что рядом комар посцыт?
Вполне.

КАРОЧИ, формула правильная, а коммунизма нет! Вот почему - интересно...
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
02.04.2012, 01:42 20
Цитата Сообщение от drvtos
Цитата Сообщение от tyzord66
Вот только рядом с прецизионными R1 и R2 переменный R3 выглядит как то нелепо.
Вовсе нет. Его нестабильность меньше влияет на общий к-т - именно в силу наличия R2. А нестабильность R1 прямо бы полезла в результат.

Не в этом дело, к чему тогда однопроцентники?

Цитата Сообщение от drvtos
Зачем же нам источники уплывания к-та от того, что рядом комар посцыт?
Мне кажется ТС через меру доверяет и Б5-44 и тому от которого питает сам МК - нигде фильтров не стоит, даже Vcc c AVCC замкнул.
0
02.04.2012, 01:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2012, 01:42

АЦП, вопрос по книге Ю.Ревич "Практическое программирование
Ю.Ревич &quot;Практическое программирование МК AVR на языке ассемблер&quot; страница 46...

Вопрос о влиянии низкой тактовой частоты на работу АЦП
Доброго, джентльмены. Ваяю приборчик на Тини26 с использованием АЦП....

Расширение АЦП микроконтроллера и подключение к АЦП датчиков
Здравствуйте. У меня встала задача сделать устройство для элеватора, для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru