ЗАДАЧИ УРОКА

  • Разобрать схему подключения аналогового датчика температуры LM35.
  • Рассмотреть вопрос работы аналого-цифрового преобразователя микроконтроллера ATmega 3547 и аналогов с использованием различных источников опорного напряжения.
  • Изучить программную реализацию вывода данных с помощью Монитора порта.

ТЕОРИЯ

При считывании данных командой analogRead() с портов А0…А5 мы получаем значение, сформированное внутренним аналогово-цифровым преобразователем (АЦП). Работа АЦП тема отдельного, большого урока и сейчас мы рассмотрим только одну его сторону. Какое же значение мы получаем?

Для начала разберемся с опорным напряжением АЦП (далее Uоп). Это эталонное напряжение, с которым АЦП будет сравнивать напряжение, полученное измерительным прибором (в нашем случае датчиком температуры LM35).

По умолчанию АЦП Ардуино использует в качестве Uоп напряжение питания +5В или +3,5В. НО! У микросхемы ATmega есть и схема внутреннего опорного напряжения +1,1В.

Для его использования необходимо в блоке void.setup написать команду  analogReference(INTERNAL);

АЦП Ардуино имеет разрядность 10. Это значит, что опорное напряжение разбивается на 210 = 1024 значений (от 0 до 1023).

Для Uоп = +5В шаг квантования 5/1024 = 0,00488 [В] или 4,9 мВ.

Для Uоп = +1,1В шаг квантования 1,1/1024 = 0,0010742 [В] или 1,0742 мВ.

Т.е. в первом случае наша схема будет определять изменения сигнала с точностью 4,9мВ, а во втором случае приблизительно – 1,1 мВ.

В спецификации к датчику температуры LM35 указано, что при изменении температуры на 1 ОС напряжение меняется на 10 мВ. Значит:

— при Uоп = +5В точность определения температуры — 0,5 ОС;

— при Uоп = +1,1В точность определения температуры 0,1 ОС.

ИТАК… предположим, что при выполнении analogRead(A1) мы получили значение 216. Т.е. напряжение на датчике относится к 1,1В так же как 216 к 1024. Ранее мы получили, что шаг квантования для Uоп = +1,1В составляет 1,0742 мВ.

Значит, при значении 216 на порту напряжение составит 216 * 1,0742 = 232,0272 мВ.

МЫ ПОМНИМ, ЧТО ДЛЯ LM35 10мВ = 1 ОС, значит 232,0272 / 10 = 23,20272 ОС.

Но есть и минус при использовании внутреннего опорного напряжения. Как видно, максимальная температура, которую можно будет определить 1023 * 1,0742 / 10 = 109,89 ОС, а наш датчик рассчитан на предел в 150 ОС.

Так что, если нам нужен весь диапазон температур, то придется использовать внешнее опорное напряжение +5В, при котором максимальная возможная температура 1023 * 4,9 / 10 = 501 ОС )))))

Как мы видим, этого хватит с огромным запасом. При 150 ОС значение на аналоговом порту будет  150 * 10 / 4,9 = 306.

ПЕРЕЧЕНЬ КОМПОНЕНТОВ

  • ARDUINO UNO R3 (оригинальная плата)
  • Монтажная плата
  • Датчик температуры LM35
  • Соединительные провода

МАКЕТ СХЕМЫ

КОД ПРОГРАММЫ

Как обычно, сначала аккуратная, ученическая программа:

Смотрим, как эта программа выглядит без комментариев…

А теперь, как обычно, код программы в стиле «может и не всем понятно, но все только по делу». Данный стиль можно принимать или нет, но он достоин быть представлен на наших уроках ))))