Входы и выходы Arduino. Виды сигналов
Микроконтроллеры на базе Arduino способны управлять внешними устройствами и получать информацию с разнообразных датчиков. Для этого используются пины — входы и выходы, к которым можно подключать внешние устройства и датчики. На плате Arduno предусмотрено 14 цифровых пинов входа/выхода, которые могут получать и отдавать сигнал в цифровом виде и 6 аналоговых пинов, способных получать и обрабатывать аналоговый сигнал. Кроме этого, на плате имеются пины питания, и несколько системных пинов, необходимых для передачи специальных протоколов:
При подключении Arduino к компьютеру, плата берёт питание из USB-разъёма. Для автономной работы, микроконтроллеру необходимо внешнее питание, которое можно подключить через разъём питания. В качестве питания можно использовать источники напряжением от 5 до 12 В. В наших экспериментах мы будем использовать элемент питания типоразмера «Крона» с напряжением 9 В. При успешном подключении Arduino к подходящим элементам питания, на плате загорается индикатор питания «ON».
Arduino может работать с цифровыми и аналоговыми сигналами. В чём же их различие?
Следует начать с того, что большинство сигналов, которые нас окружают — аналоговые. Электромагнитные сигналы, посылаемые радио- и телестанциями, звуковые и световые волны — всё это аналоговые сигналы. Такие сигналы, могут плавно изменяться с течением времени. Рассмотрим, например, график зависимости давления звуковой волны (P) от времени (Δt):
Похожий сигнал можно получить, если подключить к Arduino датчик звука. Опрашивая данный датчик тысячи раз в секунду, Arduino будет получать значения текущего напряжения на данном датчике. Полученный сигнал будет лежать в диапазоне от 0 В до значения напряжения питания, поданного на данный датчик (чаще всего это 5 В). Тем не менее, Arduino не может опрашивать датчик непрерывно, ему требуется время на обработку и запись значения полученного сигнала. Поэтому, плавный график звуковой волны, глазами Arduino будет выглядеть как набор значений (пиков), соответствующих звуковому давлению, измеренному через очень маленькие промежутки времени:
Процесс преобразования сплошной аналоговой волны в прерывистую (дискретную) называется оцифровкой. Теперь, полученную звуковую волну можно описать с помощью цифрового значения напряжений каждого из пиков, полученных с датчика. При этом, звуковые данные, содержащиеся в аналоговой волне частично теряются и/или искажаются. Для того, чтобы искажения были минимальными, необходимо разделить волну на как можно большее количество таких пиков, а значения напряжения (высоту) самих пиков следует измерять с максимально возможной точностью, чтобы аналоговый сигнал преобразовывался в цифровой с минимальных количеством потерь.
Arduino может опрашивать датчики с частотой около 10000 раз в секунду, этого более чем достаточно, чтобы получить практически неискажённый аналоговый сигнал. Точность, с которой сигнал может быть получен, составляет 1/1024 диапазона напряжений, с которыми работает датчик. Например, если датчик звука работает при напряжении в 5 В, то данные с него, Arduino может получить с точностью 5 : 1024 = 0,00488 В. Если же датчик питается, например, от 3,3 В, то данные с него могут быть получены с точностью 0,00322 В. Отсюда вывод: для увеличения точности полученных данных, следует, при возможности, уменьшить напряжение на датчике. Для получения аналоговых сигналов используются пины Arduino A0 — A5.
Цифровой сигнал, в отличие от аналогового, может дать информацию лишь о том, есть ли напряжение на выходе датчика. Если напряжение есть, то Arduino получает так называемый высокий сигнал (HIGH), если напряжения нет, то будет получен низкий сигнал (LOW). Эти сигналы можно обозначить как 1 и 0. Ярким примером цифрового датчика является кнопка — в момент замыкания, через кнопку начинает протекать ток и он начинает передавать высокий сигнал, если контакты кнопки разомкнуты, то сигнал на кнопки будет отсутствовать (низкий сигнал).
Передавать на устройства Arduino может лишь цифровой сигнал. Пины Arduino работают с напряжением в 5 В и могут быть либо включены и передавать высокий сигнал в 5 В(HIGH), либо выключены и передавать низкий сигнал в 0 В (LOW). Передавать аналоговый сигнал Arduino не умеет, зато она может этот сигнал «подделать». Некоторые пины Arduino, обозначенные значком «~» могут использовать ШИМ (широтно-импульсную модуляцию), которая поможет заставить управляемое устройство «думать», что на его вход пуступило напряжение, например в 2,7 В. Подробнее о ШИМ вы можете прочитать в памятке «Широтно-импульсная модуляция«.