Урок по Arduino №2: для чего нужны аналоговые входы на Arduino и как их использовать?

Содержание

Пины (выводы) микроконтроллеров можно настроить так, чтобы они либо выдавали сигнал, либо его считывали, то есть работать либо как вход, либо как выход. Но сигналы бывают цифровыми и аналоговыми. Цифровой сигнал принимает два значения — единицу или ноль, ну или высокое (HIGH) и низкое (LOW). Но вот аналоговый сигнал плавно изменяется и может принимать любое значение.

Рассмотрим небольшую аналогию со светом. В простейшем вы говорите «светло» или «темно». Если перевести это в цифровой сигнал, то достаточно 1 бита, чтобы передать такой объём информации, например:

Если передать больше информации, то потребуется больше бит, например:

  • 00 — кромешная тьма;
  • 01 — сумерки;
  • 10 — достаточно светло;
  • 11 — слишком яркий свет.

Но если рассказать об этом подробнее, то ответ уже не будет столь однозначным. Появляются такие данные, как насколько конкретно светло или темно, какая цветовая температура у света (тёплый или холодный), направленный свет или рассеянный, с какой стороны он светит и так далее. Получается, что чем более полное описание чего-нибудь вы даёте, тем больше данных нужно передать. Ну а в мире микроконтроллеров и цифровых устройств потребуется больше бит, чтобы записать и передать эту информацию.

Закончим с аналогиями и вернемся к электронике, как уже отмечалось ранее, цифровой сигнал может принимать два значения — логической ноль или единицу, аналоговый же сигнал принимает бесконечное множество значений.

сигналы

Отличие аналогового и цифрового сигнала

Чтобы преобразовать сигнал из аналогового в цифровой используют АЦП (аналогово-цифровые преобразователи). Они различаются по количеству бит, или простыми словами, по количеству единиц и нулей, в которых представляется тот или иной сигнал. Например, в ардуино АЦП 10-битный, то есть, что он может принимать 2 в 10-й степени значений, а именно 1024.

аналоговый сигнал

Запись аналогового сигнала в цифровом виде

При этом аналоговый вход ардуины может принимать сигнал значение от 0 до 5 вольт, то есть вы можете считывать (измерять) напряжение от 0 до 5 вольт с точностью: 5/1024=0,005 вольта.

Для чего используется

Чтение аналоговых сигналов, как ни странно, применяется для чтения сигнала с аналоговых датчиков. Датчики, в свою очередь, также бывают с аналоговым и цифровым выходом. То есть либо выдаётся какая-то плавно изменяющаяся величина, либо набор из единиц и нулей, которые потом расшифровываются и обрабатываются программой микроконтроллера.

Например, аналоговые входы можно использовать:

  • Для измерения температуры с помощью термопары или терморезистора;
  • Для измерения освещенности фоторезисторами, фотодиодами и пр.;
  • Плавно задавать какие-то величины с помощью потенциометров, поворотных и вращающихся джойстиков, что удобно использовать для управления различными механизмами, радиоуправляемыми моделями, регулировки оборотов двигателей или интенсивности свечения источников света.
  • Измерения веса или давления с помощью тензодатчиков и так далее.

Некоторые из применений мы рассмотрим ниже.

Как работать с аналоговым входом?

С теорией разобрались, перейдем к практике. В любой программе ардуино есть две основных функции:

  1. void setup() – в ней настраивается режим работы микроконтроллера или его определенных узлов, а также назначаются его пины для работы в качестве входа или выхода.
  2. void loop() — это непосредственно программа, которая выполняется циклично строчка за строчкой.

Перед void setup() указываются библиотеки, которые будут использованы в программе, задаются какие-то переменные и прочее.

Для начала выберем аналоговый пин и настроим его для работы в качестве входа для этого пишем

Здесь A0 – номер аналогового входа, input – режим работы в качестве входа.

Если вы не знаете какие пины и для чего могут использоваться – вам поможет карта пинов ардуино, вы можете найти её для каждой версии платы по запросу «adruino uno pinout», если плата Arduino UNO, если у вас другая модификация, например, nano, пишем соответственно «arduino nano pinout» и так далее для каждого случая.

Урок по Arduino №2: для чего нужны аналоговые входы на Arduino и как их использовать?

Распиновка Ардуино Уно

Здесь мы видим, что аналоговые выходы, они выделены зеленым цветом, кстати, цифровые номера пинов сохраняются и вы можете использовать вместо A0, например, просто цифру 14 — pinMode(14, input) — это аналогичное выражение в коде. В Arduino UNO аналоговых входов 6, в nano их уже 8 (несмотря на то что она построена на таком же микроконтроллере), а в Mega их аж 16.

Добавим к коду возможность чтения данных с последовательного порта. Это нужно для того, чтобы микроконтроллер передавал компьютеру какую-то информацию, и мы могли её прочитать. Для этого нужно использовать команду со следующим синтаксисом Serial.begin(9600) (размеры букв важны, нужно писать именно так), тогда код примет вид:

На этом настройка микроконтроллера завершена.

Пока что оставим программирование. Мы рассмотрим, как изменяются данные с аналогового входа на примере потенциометра. Для этого подключим его крайние выводы к источнику питания, а средний вывод ко входу А0.

Урок по Arduino №2: для чего нужны аналоговые входы на Arduino и как их использовать?

По этой схеме я подключил потенциометр

Потенциометр подойдет на 1….10 кОм. Собираем элементарную схему и открываем Arduino IDE. Дальше будем использовать такой код:

Подключим по указанной схеме потенциометр, у меня оказался чуть меньше чем на 9.2 кОм.

Урок по Arduino №2: для чего нужны аналоговые входы на Arduino и как их использовать?

И соберем схему, обратите внимание, если датчик питается от одного, а ардуино от другого источника питания, как у меня, то нужно соединить их минусы (gnd), иначе работать не будет.

Ардуино в подключении

Схема подключения потенциометра к аналоговому входу

Дальше включаем монитор порта в Arduino IDE и можем наблюдать какое значение у нас на аналоговом входе.

Урок по Arduino №2: для чего нужны аналоговые входы на Arduino и как их использовать?

Где искать монитор порта

Я прокрутил ручку потенциометра от края до края и на экране значения изменились с 0 до 1023, соответственно напряжение на входе изменилось с 0 до 5 вольт. А дальше я плавно вращал ручку потенциометра и значения также изменялись, что вы можете видеть на иллюстрации ниже.

Изменение сигнала

Изменение сигнала на аналоговом входе при разных положениях рукояти потенциометра (смотрим через монитор порта)

Дальше я взял фоторезистор и подключил его по схеме делителя напряжения последовательно с резистором на 1 кОм, плюс питания подключил к фоторезистору, а минус к резистору, точку соединения резистора и фоторезистора подключил к аналоговому входу.

фоторезистор

Подключение фоторезистора к ардуино

Освещение на первых снимках слабое, ранее пасмурное утро, света с окна почти нет, свет в большинстве своем падает от монитора, я закрыл пальцем, чтобы увидеть, какой сигнал будет в максимально тёмном состоянии, а затем убрал его.

Фоторезистор закрыт

Фоторезистор закрыт пальцем и освещен тусклым светом от монитора

Дальше я включил настольную лампу, зафиксировал изменение сигнала, после чего поставил лампу прямо над фоторезистором максимально близко.

Сигнал с фоторезистора

Сигнал с фоторезистора освещенного лампой

Таким образом, определив значения сигналов при разной степени освещенности, вы можете использовать их для управления чем-либо, простейший пример — сделать фотореле, в котором можете тонко настроить пороги срабатывания в программе.

Ну и напоследок, мне попался датчик воды, который оказался скорее не датчиком уровня, а датчиком наличия воды, поскольку в сухом состоянии сигнал с него был 0, при частичном погружении порядка 250-260, и при полном погружении эта цифра не изменилась, ну стала больше на 10, но значение прыгало вверх-вниз. Подключается он просто — на плате датчика обозначены «+», «-» и «S» (сигнал), подал на плату питание, а S подключил к аналоговому входу, код никак не изменял, ниже вы видите, что из этого вышло.

Сухой датчикСухой датчик и как изменяются показания если просто прижать палец к токопроводящим дорожкам. датчик в водеЧастично погрузил датчик в воду и полностью

Заключение

В этой статье мы разобрались, как пользоваться аналоговым входом ардуино и выводить информацию от микроконтроллера через последовательный порт, кстати, так вы можете выводить любые значения и использовать это для взаимодействия с компьютером, например, если напишете программу, которая будет отображать какие-то параметры, полученные от датчика. Любители иногда используют это при построении домашних метеостанций, и просматривают данные о температурах и влажности на компьютере.

В следующей статье мы будем использовать полученные знания для регулировки электрических величин с помощью ШИМ. С потенциометра мы будем считывать значение (положение его рукояти), как было показано в этой статье, использовать их для установки скважности ШИМ. Также я расскажу, что такое ШИМ и как его можно использовать в управлении светодиодами и коллекторным двигателем (моторчиком от игрушек).


Источник: lampaexpert.ru