Подключение внешних устройств

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

Этап I. Поиск информации.

В первую очередь, требуется определить по какому протоколу общается устройство с Arduino. Это могут быть, как и собственные протоколы устройств, так и стандартные, например, SPI, I2C, UART. Для этого требуется найти datasheetустройства (к примеру, тут http://www.alldatasheet.com/), либо описание, собственно, устройства, так как часто на модули, разработанные сторонними компаниями, даташитов нет или они не полные. Так же поможет запрос в гугл «Arduinoподключение <название устройства>, после которого можно найти не только схему подключения, но и библиотеку для работы с Arduino.

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

Отдельным пунктом надо отметить исполнительные устройства: моторчики, шаговые двигатели, релейные модули и т.п. Их надо ВСЕГДА подключать через вспомогательное устройство и ни в коем случае не напрямую к порту Arduino, поскольку никаких ограничений по току в них нет, и любой сбой в нормальном режиме работы устройства (к примеру, застревание двигателя) может вызывать ток, достаточный для того, чтобы сжечь не только порт, но и сам микроконтроллер.

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

 Этап II. Подключение (цифровые устройства)

При подключении цифровых устройств могут возникнуть следующие проблемы:

  1. Разность уровня сигнала
  2. Высоковольтные шумы
  3. Затухание сигнала на больших расстояниях

Для решения первой проблемы можно использовать стандартные устройства, типа двухсторонних преобразователей уровней (в случае если устройства работают на двух распространённых напряжениях 5 и 3.3В). Примеры таких устройств тут

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

Базовая схема подключения оптопары представлена на рисунке ниже.

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

Для борьбы с затуханием сигнала подойдут усилители, например и 12В (опять же, смотрим на предельную частоту работы), или использование дополнительных контроллеров на разных сторонах и передача сигнала по протоколам, которые хорошо противостоят затуханию, а именно RS232 (не UART!), RS485, Ethernet и, с появлением недорогих модулей ESP8266, можно даже использовать интернет и отказаться от проводов.

 Этап II. Подключение (аналоговые устройства)

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

В данном случае могут возникнуть следующие проблемы:

  1. Согласование уровней сигналов
  2. Наводки

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

Этап II. Подключение (исполнительные устройства)

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

Важно не допускать прямого соединения микроконтроллера и исполнительного устройства, так как в результате работы последнего могут возникнуть токи, которые микроконтроллер просто не выдержит. К примеру, это может случиться, если напрямую подключить моторчик на 5 вольт и зажать ему вал, чтобы он не мог вращаться. Тогда достаточно быстро ток сожжёт выход Arduino, к которому подключен (и хорошо, если сам вход).

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

В общем случае положительный канал от источника питания подключается напрямую к источнику напряжения, а отрицательный - к устройству коммутации. В частности, для управления RGBлентой используется следующая схема:

Аналогично подключаются шаговые двигатели и прочие исполнительные механизмы.

Резюме

К Arduinoможно подключить практически всё, что как-либо управляется или просто питается от электричества. Главное - выбрать правильную схему подключения и использовать соответствующие команды для управления.