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

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

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

  1.  — светло;
  2. — темно.

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

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

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

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

сигналы
Отличие аналогового и цифрового сигнала
Мнение эксперта
Алексей Бартош
Специалист по ремонту, обслуживанию электрооборудования и промышленной электроники.
Задать вопрос эксперту
Если на выходе микроконтроллера или цифровой логической микросхемы напряжение близко к 0 вольт, то говорят, что на выходе логический ноль. Если оно приближено к напряжению питания (не всегда, но в ряде случаев), а именно к 3.3, 5 вольтам, то говорят, что на выходе логическая единица. Напряжение логической единицы может быть не только 3.3 или 5 вольт, оно бывает разнообразным и зависит от типа логики и конкретного схемотехнического решения — 1.2, 1.5, 1.8, 2.5, 3.3, 5, 10, 15 вольт… Просто 3.3 и 5-вольтовая логика, пожалуй, наиболее распространена.

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

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

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

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

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

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

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

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

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

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

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

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

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

void setup() {

pinMode(A0, input)

}

Здесь 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) (размеры букв важны, нужно писать именно так), тогда код примет вид:

void setup() {

Serial.begin(9600);

pinMode(A0, INPUT);

}

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

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

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

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

int val=0;

void setup() {

Serial.begin(9600);

pinMode(A0, INPUT);

}

void loop() {

val = analogRead(A0);

Serial.println(val);

delay(1000);

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

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

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

Предыдущая
ArduinoМастер-класс «Люстра-паук» своими руками
Следующая
ArduinoКак управлять шаговым двигателем через Arduino
Понравилась статья? Поделиться с друзьями:
Очень плохоПлохоНормальноХорошоОчень хорошо! (1 оценок, среднее: 5,00 из 5)
Загрузка...
Лампа Эксперт
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: