Метрологические параметры АЦП Ардуино.

Вопросы по аппаратной части Ардуино
Эдуард
Администратор
Сообщения: 365
Зарегистрирован: 30 окт 2016, 20:53

Метрологические параметры АЦП Ардуино.

Сообщение Эдуард » 07 ноя 2016, 23:12

Часто задают вопрос: ”С какой точностью плата Ардуино измеряет аналоговые сигналы?” Я коротко расскажу о погрешностях измерения АЦП Ардуино, и как их можно уменьшить.

Для измерения аналоговых сигналов плата Ардуино использует АЦП последовательного приближения с аналоговым коммутатором. Мы в программе вызываем функцию analogRead(). Она подключает коммутатор к выбранному аналоговому входу, вырабатывает управляющие сигналы для АЦП, ожидает окончания преобразования и возвращает измеренный код. Что определяет точность измерения?

Прежде всего, о параметрах, на которые мы не можем повлиять. Они определятся характеристиками микроконтроллеров, установленных на платах. Обычно это микроконтроллеры ATmega168 и ATmega328.

Разрешающая способность АЦП.
В Ардуино используется 10 разрядный АЦП, что соответствует 1024 градациям выходного кода.
Разрешающая способность или точность АЦП с идеальной передаточной характеристикой равна 100% / 1024 = 0,098 %.

Погрешности преобразования АЦП.
Производители микроконтроллеров ATmega88/168/328 нормируют полную ошибку преобразования АЦП, в которую включены:
    интегральная нелинейность;
    дифференциальная нелинейность;
    ошибка квантования;
    ошибка коэффициента преобразования;
    ошибка смещения нуля.
Полная ошибка не превышает 2 единиц младшего разряда, что соответствует погрешности 100% / 1024 * 2 = 0,2 %.

В документации на микроконтроллеры приводятся значения отдельных точностных параметров:

    Интегральная нелинейность – не более 0,5 единицы младшего разряда, т.е 0,05 %.
    Интегральная нелинейность характеризует отклонение реальной характеристики АЦП от идеальной в середине шага квантования.

    Дифференциальная нелинейность - не более 0,25 единицы младшего разряда, т.е 0,025 %.
    Этот параметр характеризует отклонение между серединами соседних шагов квантования на реальной и идеальной характеристиках. Т.е. показывает насколько одинаковые ступеньки характеристики.

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

    Ошибка смещения нуля – не более 2 единиц младшего разряда, т.е 0,2 %.
    Показывает значение сигнала на входе АЦП при выходном коде равном 0. Может быть скорректирована прибавлением к выходному коду поправочного коэффициента.
Из динамических характеристик достаточно знать, что время преобразования АЦП в системе Ардуино примерно 110 мкс.

Из вышесказанного можно сделать вывод, что погрешность измерения АЦП Ардуино не превышает 0,2 %.

Но есть еще элементы системы, значительно влияющие на точность измерения АЦП.

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

Использование в качестве ИОН напряжения питания платы 5 В.
Режим задается функцией analogReference(DEFAULT). Самый простой, но самый не точный вариант. В Arduino UNO R3 напряжение 5 В вырабатывается линейным стабилизатором NCP1117ST50. Напряжение на выходе этой микросхемы поддерживается с достаточно высокой точностью 1 %.
Можно дополнительно повысить точность преобразования, если измерить напряжение питания и учесть его значение при переводе кода в напряжение. Например, если реальное напряжение равно 5,02 В, то можно выполнить перевод так
u = 5.02 * (float)analogRead(A0) / 1024. ;
Температурная погрешность NCP1117ST50 не превышает 0,5 % во всем температурном диапазоне.

Можно использовать внутреннее опорное напряжение 1,1 В. Режим включается функцией analogReference(INTERNAL). Все вышесказанное, верно для этого варианта. Производители микроконтроллера гарантируют опорное напряжение в пределах 1 … 1,2 В, т.е. точность немного выше 1 %.

Существует радикальный способ значительно улучшить температурную стабильность АЦП. Это применение внешнего ИОН. Режим включается функцией analogReference(EXTERNAL). Но он требует дополнительного аппаратного узла.
Вот схема внешнего ИОН, реализованного на микросхеме LM431 (TL431).

ION_scheme.PNG
ION_scheme.PNG (6.2 КБ) 6504 просмотра

Это недорогой ИОН с неплохими параметрами. Производитель гарантирует напряжение на выходе в диапазоне 2,485 … 2,51 В, но с высокой температурной стабильностью 0,005 % / °C.

Внутреннее сопротивление источника сигнала.
Последний параметр, влияющий на точность измерения это внутреннее сопротивление источника сигнала. Разработчики микроконтроллеров ATmega определили, что для сохранения максимальной точности внутреннее сопротивление источника сигнала на аналоговом входе не должно превышать 10 кОм.
В частности, это требование должно быть учтено при использовании на аналоговых входах платы Ардуино резисторных делителей. Эквивалентное сопротивление делителя должно быть не более 10 кОм.

Диапазон входного сигнала.
И еще одна рекомендация. Для максимально точности измерения диапазон входного аналогового сигнала должен быть как можно ближе к диапазону измерения АЦП.
Поясню. Если у нас диапазон измерения АЦП равен 5 В, а мы измеряем сигнал с максимальным напряжением 1 В, то точность измерения будет в 5 раз меньше, чем для сигнала с диапазоном 0 … 5 В. Т.е. необходимо либо ставить усилитель, либо уменьшать напряжение ИОН.


assa-
Сообщения: 3
Зарегистрирован: 29 мар 2017, 09:49

Re: Метрологические параметры АЦП Ардуино.

Сообщение assa- » 30 мар 2017, 09:24

Есть подозрение что ограничение сопротивления источника сигнала в 10кОм обусловлено временем заряда внутренней емкости выборки-хранения. И если использовать на входе фильтр с емкостью то это ограничение можно игнорировать.


Вернуться в «Аппаратное обеспечение»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей