пятница, 4 августа 2023 г.

Минимальное напряжение AREF для ADC

Нужно было измерить линейность R-2R ЦАП после резистивного делителя (было интересно насколько просядет максимум сигнала и сохранится ли линейность). Исходный сигнал лежит в диапазоне от 0V до почти напряжения питания (в моем случае было 0V - 4.95V), но для моих целей нужно чтобы сигнал был в пять раз меньше (0V - 0.5V).

Измерения делались через АЦП Atmega32U4 (Arduino Leonardo) - у этого микроконтроллера есть несколько вариантов опорного напряжения АЦП:

  • DEFAULT - 5V;
  • INTERNAL - 2.56V;
  • EXTERNAL - то, что подается на пин AREF;

Вначале попробовал вариант с 2.56V, но это в шесть раз больше чем максимум измеряемого сигнала и хотелось лучшей точности. Стал пробовать вариант EXTERNAL - подал на пин AREF 0.5V относительно земли и получил "зашкал" на АЦП - все значения были 1023 даже если на вход подавалось 0V. Вначале грешил на "кривую" ардуину и стал прозванивать пины микроконтроллера и сверяться с даташитом - никаких ошибок не нашёл.

А потом поднял напряжение AREF до 1V и оно заработало! В гугле на первой странице есть описание этой проблемы. Я не поленился и пошёл перечитывать даташит, но ничего про минимальное напряжение AREF в нем не нашёл. Если верить документации Arduino, то на AREF можно подавать от 0V до 5V и либо это целиком зависит от микроконтроллера, либо в документации стоит поправить.

Комментариев нет:

Отправить комментарий