Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/37: Рейтинг темы: голосов - 37, средняя оценка - 4.73
Kro48
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 9
1

нелинейность АЦП AtMega16?

01.04.2013, 18:51. Просмотров 6703. Ответов 15
Метки нет (Все метки)

Пытаюсь использовать AtMiko16 для измерений напряжения. Использую внутренний ИОН(2.56). НО напряжение на Ареф-ноге 2,7, а потолок измерений мк показывается только при 2,8В.(вроде не беда)

НО проблема, что значения, которые получаю, имеют разное соотношение вольт на единицу АЦП!
И чем больше напряжение на входе, тем больше единиц АЦП получаю(и соотношения нелинейное).

Кусок кода вот:
Код
ADMUX=1<< REFS0|
1<< REFS1;
ADCSRA=1<< ADIM;
ADMUX&=~(31<< MUX0);
ADMUX|=channel<< MUX0;
for (d=0;d<8;d++)
{
ADCSRA|=1<< ADSC;
while (!(ADCSRA &(1 << ADIF)));
U[d]=ADC;
ADCSRA|=1 << ADIF;
}
Подскажите,пожалуйста, с чем такое может быть связанно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2013, 18:51
Ответы с готовыми решениями:

Atmega16 АЦП
Здравствуйте! Пытался запустить АЦП на Atmeag16, с выводом значений на LCD. Что б долго не...

АЦП+ UART на ATmega16: проблемы
Добрый день. Имеются следующие проблемы. 1. При попытке наладить передачу значения АЦП по UART...

Atmega16, АЦП и Протеус [решено]
Блин, второй день мучаюсь. Схема на AtMiko16, меряю АЦП напряжение на аккумуляторе. Очень похожая...

АЦП в Atmega16 не хочет работать.
Здравствуйте. Вчера вот попытался заюзать встроенный АЦП у Atmega16, раскурил Даташит, настроил...

Помогите настроить АЦП в ATMEGA16
Доброго времени суток, уважаемые форумчане! Опыт работы с микроконтроллерами у меня весьма мал,...

15
stritsh
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
01.04.2013, 19:21 2
Результат АЦП считывайте побайтно сначала младший потом старший. И не очень понятно вот это ?
Код
ADMUX&=~(31<< MUX0);
ADMUX|=channel<< MUX0;
0
Финский
0 / 0 / 0
Регистрация: 11.12.2011
Сообщений: 789
01.04.2013, 19:21 3
WTF ~(31<< MUX0); ?
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
01.04.2013, 19:52 4
31 == 0x1F == 0b00011111
MUX0 == 0
так что просто зануление битов мультиплексора.
но вот делать так лучше не надо.

"писать код надо так, как будто поддерживать его после тебя будет какой-нибудь маньяк-убийца, который знает где ты живешь".
0
domis
0 / 0 / 0
Регистрация: 04.09.2012
Сообщений: 82
01.04.2013, 23:24 5
Где-то в инете читал, что стабильность у внутреннего ИОНа не очень хорошая, сам не проверял.
0
stritsh
0 / 0 / 0
Регистрация: 28.12.2012
Сообщений: 161
02.04.2013, 00:05 6
Цитата Сообщение от Kro48
И чем больше напряжение на входе, тем больше единиц АЦП получаю(и соотношения нелинейное).
А показания при нуле и максимальном значении измеренного напряжения совпадают с реальным?
0
Леанид Ивинавич
0 / 0 / 0
Регистрация: 16.02.2012
Сообщений: 699
02.04.2013, 00:36 7
Линейность АЦП может быть плохой, если превышена его тактовая частота. Когда в ADCSRA биты ADPS2..0 равны нулю, тактовая частота АЦП получается 1/2 тактовой контроллера. Такое пройдет, если тактовая контроллера не выше 400 кГц.
0
Kro48
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 9
02.04.2013, 10:52 8
Кстати питание контроллера осуществляется через USB, т.е. там не ровно 5В питание,а чуть меньше, в этом может быть причина?

1) До борьбы с шумами (как показано в pdf на. 211 стр(Analog Noise Canceling
Techniques)) земля была нулем(измерение АЦП 31(GND) канала), после припайки земля сместилась и поплясывает. Значение опроного напряжения=2.56 на ноге AREF не соответствует, намеряемому на ней же вольтметром=2,7В. По измерениям АЦП ноль-не ноль(примерно 0.2В), а максимум примерно 2.8В.

2) Тактируюсь от внутреннего RC(8МГц). делитель ставил и максимальный(128)-ничего не изменилось.

3) А как правильнее занулить каналы в ADMUX, если необходимо по ходу работы менять их?

На считывание запись
Код
U[d]=ADC;
вроде не повлияла.(хотя согласен, что корректнее побайтнно)
0
Kro48
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 9
02.04.2013, 12:50 9
Используя АЦП и вольтметр получил следующее:

В - единицы АЦП - ед\В

0.08 - 2 - 25
0.09 - 7 - 77
0.1 - 10 -100
0.2 - 51 - 250
0.3 - 91 - 303
0.4 - 131 - 327
0.5 - 172 -344
1- 376 - 376
1.5- 589- 386
1.75- 680- 388
2- 784 - 392
2.1- 822 - 391
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
02.04.2013, 15:56 10
у вас какое-то странное предстваление о нелинейности. это всего лишь смешение.
график по первым двум столбцам постройте всё сразу станет понятно, а потом еще натяните на него линейную аппроксимацию и посмотрите разницу,
нелинейности там <1%. и то только в одной точке 1.5В - скорее всего ошибка конкретного изменения, остальные укладываются в 2lsb из даташита.
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
02.04.2013, 16:18 11
Цитата Сообщение от _pv
скорее всего ошибка конкретного изменения
Да я бы еще спросил, чем измерялось. Такое малое число цифр в первой колонке настораживает: а мож там такой вольтметр, что им поверять данный АЦп и нельзя.
Чем измеряешь входное, уважаемый?
0
Kro48
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 9
02.04.2013, 17:23 12
- Измерения проводились Вольтметром APPA201N(измеряет с точностью до 3 знака в диапазоне от 0 до 2 В) вроде бы можно ему доверять- служба стандартизации его поверяла.
В начале шаг довольно малый, т.к. в этот диапазон напряжений интересует больше.

- Про неленейность-имею в виду, что соотношение единиц АЦП на Вольт в разных диапазонах различно (3 столбец). Более менее линейная зависимость только ближе к максимуму, т.е. порядка 390 единиц АЦП на вольт. Если построить график этой зависимости получается, что для того, чтобы вычислить напряжение в разных диапазонах, нужно знать среднее значение ед.АЦП на вольт в этом диапазоне. Что не совсем удобно.

А по моему представленю должно быть так: напряжение = (показание АЦП / К ), где К это вроде как константа, которая может менятся в зависимости от опорного напряжения.
Поправьте, если я не прав.
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
02.04.2013, 17:29 13
откройте excel скопируйте туда первые два столбца.
постройте график, только измеренного напряжения от показаний АЦП, а не наоборот, добавте линейный fit, в свойствах галочка "показывать уравнение на диаграмме" и посмотрите на формулу.
0
Kro48
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 9
02.04.2013, 18:58 14
Да,Вы правы.
Спасибо за объяснения и терпение.я понял
0
Brimdir3000
0 / 0 / 0
Регистрация: 28.01.2012
Сообщений: 53
02.04.2013, 19:09 15
Да проще простого жеж, по двум удобным точкам считаетшь уравнение прямой (через две точки) - резульатат (напр. 1 В и 2 В) соотв. получаешь - x = (y+32)/408! Ну и все собстна. Нелинейность в зависимости от напряжения единиц ацп на вольт из-за того что при расчете делении не учитываешь смещение функции по y, если бы она через 0 проходила тогда, да, можно делить на коэфф-т. В итоге берешь свои показания с ноги плюсуишь к ним 32 делишь на 408 и полуаешь напругу. Усе))
0
drvtos
1 / 1 / 0
Регистрация: 25.05.2010
Сообщений: 3,610
02.04.2013, 22:49 16
Цитата Сообщение от Kro48
- Измерения проводились Вольтметром APPA201N(измеряет с точностью до 3 знака в диапазоне от 0 до 2 В) вроде бы можно ему доверять
Доверяй на здоровье. Но для поверки АЦП с заявленной линейностью хотя бы на уровне 8 бит это твое чудо применять нельзя.



Что такое 0,5% - это 1/200.

Так что со смещением, конечно, коллеги верно подсказали, но после устранения оной тем более нет смысла такой грубый вольтметр использовать для поверки данного АЦП.
0
02.04.2013, 22:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2013, 22:49

АЦП+бесконечный поворотный потенциометр (Atmega16)
Приветствую. Имеется контроллер atmega16 и поворотный потенциометр, который может вращаться не...

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

ATMEGA16 мультиплексирование входов для АЦП и компаратора
Коллеги, рад приветствовать! Впервые на этом форуме, поэтому сильно не пинайте. Начал осваивать...


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

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

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