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

Из чего состоит плата Arduino?

Выпускаются различные модели Arduino. Каждая из них «заточена» для различных задач. Некоторые платы принципиально отличаются от приведенной на рисунке ниже. Но большинство из них имеют следующие одинаковые узлы:

Разъем питания (USB / разъем для адаптера)

Каждая плата Arduino должна подключаться к источнику питания. Arduino Uno может запитываться от USB кабеля от вашего персонального компьютера Или от отдельного адаптера, который подключается к предусмотренному на плате разъему. На рисунке соединение через USB отмечено (1), а разъем для внешнего источника питания — (2).

USB также используется для загрузки вашей программы (скетча) на плату.

Примечание! Не используйте источник питания с напряжением на выходе более 20 вольт. Это может привести к тому, что ваша плата перегорит. Рекомендуемое напряжение питания для Arduino — от 6 до 12 вольт.

Разъемы (пины) (5V, 3.3V, GND, Analog, Digital, PWM, AREF)

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

  • GND (3): сокращение от ‘Ground’ — ‘Земля’. На платах несколько пинов GND, каждый из которых может использоваться для заземления вашей электрической цепи.
  • 5V (4) и 3.3V (5): как вы могли уже догадаться — питы, которые на выходе обеспечивают питание 5 вольт и 3.3 вольт соответственно. Большинство компонентов, которые подключаются к Arduino, благополучно питаются именно от 5 или 3.3 вольт.
  • Analog (6): на участке, который подписан ‘Analog In’ (от A0 до A5 на Arduino Uno) расположены аналоговые входы. Эти пины позволяют считывать сигналы от аналоговых датчиков (например, датчик температуры) и преобразовывать их в цифровые значения, которыми мы в дальнейшем оперируем.
  • Digital (7): напротив аналоговых пинов находятся цифровые пины (от 0 до 13 на Arduino Uno). Эти пины используются для цифровых входящих (input) сигналов (например, нажатие кнопки) и для генерации цифровых исходящих (output) сигналов (например, питание светодиода).
  • PWM (8): вы наверное заметили знак (~) рядом с некоторыми цифровыми пинами (3, 5, 6, 9, 10, и 11 на UNO). Эти пины работаю как в обычном цифровом режиме, так и в режиме ШИМ-модуляции (PWM). Если объяснить вкратце — эти пины могут имитировать аналоговый выходной сигнал (например, для постепенного затухания светодиода).
  • AREF (9): Этот пин используется достаточно редко. В некоторых случаях это подключают в схему для установки максимального значения напряжения на аналоговых входах (от 0 до 5 вольт).

Кнопка сброса (Reset Button)

Как и на оригинальных Nintendo, на Arduino есть кнопка сброса (reset) (10). При нажатии на нее контакт сброса замыкается с землей и код, загруженный на Arduino начинает отрабатывать заново. Полезная опция, если ваш код отрабатывает без повторов, но вы хотите протестить его работу.

Индикатор питания (Power LED)

Немного справа и ниже надписи “UNO” установлен светодиод, подписанный «on» (11). Этот светодиод должен загореться, когда вы подключили Arduino к источнику питания. Если светодиод не загорелся — плохой знак ;).

Светодиоды TX и RX

TX — сокращение от transmit (передача), RX — от receive (прием). Эти условные обозначения часто встречаются в электронике для обозначения контактов, которые отвечают за серийный обмен данным. На Arduino Uno эти контакты встречаются два раза на цифровых пинах 0 и 1 и в качестве светодиодов TX и RX (12). Эти светодиоды позволяют визуально отслеживать, передает или принимает данные Arduino (например, при загрузке программы на плату).

Главная интегральная микросхема (IC)

Черная деталь с металлическими коннекторами с двух сторон это интегральная микросхема, микропроцессор (IC или Integrated Circuit) (13). Можете смело считать, что это «мозги» нашей Arduino. Этот чип разный в разных моделях Arduino, но обычно он относится к линейке микропроцессоров ATmega от компании ATMEL

Это может оказаться важной информацией для загрузки скетча на плату. Модель интегральной микросхемы обычно указана на ее верхней корпусной части

Для дополнительной информации о вашей микросхеме стоит обратиться к ее даташиту.

Регулятор напряжения

Регулятор напряжения (14) is выполняет функцию, указанную в названии — контролирует напряжение, которое поступает на плату Arduino. Можете его себе представить как охранника, который не пропускает слишком большое напряжение на плату во избежание ее повреждений. Конечно же, у регулятора есть свой предел. Так что питать Arduino напряжением больше 20 вольт нельзя.

История появления термина

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

Вычислительная техника

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

Звукозапись и телефония

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

Электрические измерения

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

Пример

Возьмём для примера ОВЕН ПЛК160.

У него 16 дискретных входов, из них 4 быстродействующих, то есть, подходящих для подключения быстро меняющихся сигналов, например, счётчиков импульсов. Напряжение на входе должно быть от 15 до 30 вольт, чтобы контролер считал его единицей.

12 дискретных выходов с коммутацией до 250 вольт 3 ампера. То есть, это 690 ватт при напряжении 230В. Подойдёт для десятка ламп накаливания или светодиодных ламп. Для тёплого пола или розеток надо ставить дополнительное реле с бОльшим током коммутации.

8 аналоговых входов. Входы можно настроить на приём унифицированных сигналов 0-10В, 0-5мА, 0-20мА, 4-20мА.

4 аналоговых выхода. В зависимости от модификации контролера выходной сигнал будет либо по напряжению (0-10), либо по току (4-20), либо изменяемый.

Интерфейсов связи у него много: Ethernet, RS-485, RS-232, USB (для прошивки).

При стоимости в 32 тысячи это отличный контроллер, на котором можно много чего реализовать даже без дополнительных блоков. И это контроллер промышленного класса надёжности.

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

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

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

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

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

Описание пинов платы

Микроконтроллер имеет 14 цифровых пинов, они могут быть использованы, как вход или выход. Из них 6 могут выдавать ШИМ-сигнал. Они нужны для регулировки мощности в нагрузке и других функций.

Пин ардуино Адресация в скетче Специальное назначение ШИМ
Цифровой пин 0 RX
Цифровой пин 1 1 TX
Цифровой пин 2 2 Вход для прерываний
Цифровой пин 3 3 Вход для прерываний ШИМ
Цифровой пин 4 4
Цифровой пин 5 5 ШИМ
Цифровой пин 6 6 ШИМ
Цифровой пин 7 7
Цифровой пин 8 8
Цифровой пин 9 9 ШИМ
Цифровой пин 10 10 SPI (SS) ШИМ
Цифровой пин 11 11 SPI (MOSI) ШИМ
Цифровой пин 12 12 SPI (MISO)
Цифровой пин 13 13 SPI (SCK) К выходу дополнительно подсоединен встроенный светодиод

Вызов ШИМ-сигнала осуществляется через команду AnalogWrite (номер ножки, значение от 0 до 255). Для работы с аналоговыми датчиками присутствует 6 аналоговых входов/выходов.

Пин Адресация в скетче Специальное назначение
Аналоговый пин A0 A0 или 14
Аналоговый пин A1 A1 или 15
Аналоговый пин A2 A2 или 16
Аналоговый пин A3 A3 или 17
Аналоговый пин A4 A4 или 18 I2C (SCA)
Аналоговый пин A5 A5 или 19 I2C (SCL)

Их тоже можно использовать, как цифровые.

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

Принципиальная схема платы выглядит так (нажмите для увеличения):

Динамический диапазон


Динамический диапазон

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

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

Типы оптоволоконного кабеля

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

Оптоволоконные проводники делятся на два основных вида:

  • Мономодовый;
  • Мультимодовый.

В мультимодовых световые потоки могут иметь разброс в длинах волн и траекториях, что на больших длинах проводников может приводить к искажениям сигнала. Светоизлучателями в таких каналах передачи звука являются светодиоды, недорогие и долговечные полупроводниковые приборы. Длина соединителей не превышает 5 метров. Диаметр центрального светопроводящего волокна – 62,5 мкм. Внешняя оболочка световода имеет размер 125 мкм.

В мономодовом проводнике лучи света движутся прямолинейно, затухание и искажение сигнала минимально. Диаметр светового волокна равен 1,3 мкм, длина волны сигнала – тоже 1,3 мкм. Такой соединитель может иметь большую длину, чем мультимодовый. Источником света в этом случае является полупроводниковый лазер, излучающий сигналы с жестко регламентированной длиной волны. Однако лазер – устройство более дорогое и менее долговечное, чем светодиод. В результате система становится более дорогой, чем мультимодовая, хотя и имеет лучшие параметры, в частности, длина проводника может составлять десятки метров.

Видео разъемы

Разъем VGA

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

  • Компонентное видео, также известное как YPbPr (3 RCA или BNC ; или D-терминал )
  • Композитное видео (1 RCA , антенный разъем или BNC )
  • DB13W3 (компьютерный видеоразъем » 13W3 «)
  • DMS-59 , один разъем для подключения двух DVI и двух VGA
  • Musa , британский соединитель, используемый в радиовещании и телекоммуникациях.
  • Разъем PAL , распространенный в Европе как антенный разъем
  • S-Video (1 мини-DIN )
  • SDI — цифровой интерфейс вещательного уровня по кабелям BNC
  • Разъем VGA Тип стандартного разъема D-sub на большинстве видеокарт
  • Mini-VGA На некоторых портативных компьютерах
  • 5 разъемов BNC также могут использоваться для передачи сигнала VGA в виде R, G, B, HSync, VSync.
  • Цифровой визуальный интерфейс (DVI) Гибридный аналогово-цифровой разъем, обычно встречающийся на графических картах ПК и ЖК-мониторах.
  • Mini-DVI есть на некоторых ноутбуках Apple
  • Усовершенствованный графический адаптер (EGA)
  • Цифровая плоская панель VESA

Мини-DIN

4-контактный mini-DIN для S-Video

В Mini-DIN разъемы семейство мульти-контактных электрических разъемов , используемых в различных приложениях. Mini-DIN похож на более крупный старый разъем DIN . Оба являются стандартами Deutsches Institut für Normung, немецкого органа по стандартизации.

D-сверхминиатюрный

Разъемы DA, DB, DC, DD и DE

D-сверхминиатюрный или D-sub — это распространенный тип электрических разъемов, используемых, в частности, в компьютерах. Когда они были впервые представлены, называть их «субминиатюрными» было уместно, но сегодня они являются одними из самых больших распространенных разъемов, используемых в компьютерах. DB25 используется для многодорожечной записи и другого многоканального аудио, аналогового или цифрового ( интерфейс ADAT (DB25)), и был стандартным разъемом для подключения принтера IBM-совместимого ПК до того, как USB и другие подключения стали популярными. Он предлагал 8 одновременных каналов передачи данных на принтер.

Видео в видео выход

Видеокарта с выходами VIVO, DVI и VGA

Кабель-разветвитель VIVO с 6 коннекторами. Слева направо: S-Video In, Component P b out, Component P r out, Component Y out / Composite out, Composite in, S-Video Out

Video In Video Out , обычно обозначаемый аббревиатурой VIVO (обычно произносится как vee-voh), представляет собой порт видеокарты, который позволяет некоторым видеокартам иметь двунаправленную (входную и выходную) передачу видео через Mini-DIN , обычно 9- различные контакты и специальный кабель-разветвитель (который иногда также может передавать звук).

VIVO используется преимущественно на видеокартах ATI высокого класса , хотя некоторые видеокарты NVIDIA также имеют этот порт. VIVO на этих видеокартах обычно поддерживает композитный , S-Video и Component в качестве выходов, а также композитный и S-Video в качестве входов. Многие другие видеокарты поддерживают только компонентные и / или S-Video выходы в дополнение к Video Graphics Array или DVI , обычно с использованием компонентного кабеля для коммутации и кабеля S-Video.

Разъем DVI

Контакты штекерного разъема DVI (вид на штекер)

Контакты разъема Male M1-DA (вид на штекер)

Digital Visual Interface (DVI) является стандартным видео интерфейс , предназначенный для максимального визуального качества цифровых устройств отображения , таких как плоские панели ЖК — дисплее компьютера и цифровых проекторов. Он предназначен для вывода несжатых цифровых видеоданных на дисплей.

Есть четыре основных разъема:

  • DVI-D (только цифровой)
  • DVI-A (только аналоговый)
  • DVI-I (встроенный, цифровой и аналоговый)
  • M1-DA (встроенный, цифровой, аналоговый и USB )

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

Итак, нам нужно знать две вещи о соединителе:

  1. Является ли он аналоговым, цифровым или и тем, и другим; а также
  2. Для разъемов, которые передают цифровые каналы, если они одинарные или двухканальные, и если они имеют USB

Порты RS485 и RS232

Через эти порты мы можем подключать различные дополнительные устройства к контроллеру.

По RS232 подключается только GSM модем, он используется для отправки тревожных сообщений и приёма управляющих сообщений, и приёмопередатчик беспроводной системы управления светом и климатом Noolite.

По RS485 подключается огромное множество устройств: многие кондиционеры, вентмашины, генераторы, модули входов и выходов контроллера разного типа, диммеры, конвекторы Varmann и даже приводы электроштор.

У контроллера EasyHomePLC на борту два порта 232 и два порта 485. У контроллера Beckhoff по одному порту, но мы можем ставить дополнительные модули расширения и увеличивать количество портов.

Функция analogReference()

Для правильной работы АЦП требуется опорное напряжение (эталон). Для Arduino опорное напряжение может быть в диапазоне 0…5В (или 0… 3,3В для Arduino с напряжением питания 3,3В). В зависимости от типа используемого микроконтроллера у нас могут быть разные виды опорного напряжения.

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

  • DEFAULT: опорное напряжение составляет 5В или 3,3В (в зависимости от питания) — то есть, оно равно напряжению питания микроконтроллера;
  • INTERNAL: опорное напряжения составляет 1,1В для ATmega168, ATmega328 и 2,56В для ATmega8;
  • INTERNAL1V1: опорное напряжение составляет 1,1В — только для Arduino MEGA;
  • INTERNAL2V56: опорное напряжение составляет 2,56В — только для Arduino MEGA;
  • EXTERNAL: внешнее опорное напряжение, приложенное к выводу AREF — от 0 до 5В.

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

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

Наиболее точным вариантом является использование внешнего источника опорного напряжения. Существуют специальные источники опорного напряжения (ИОН). Плюсом является возможность получения необходимого точного опорного напряжения, например, 1,024В или 2,048В, что облегчает интерпретацию данных, считываемых АЦП. К недостаткам применения внешнего источника опорного напряжения можно отнести возможное увеличение стоимости проекта.

Профессиональный цифровой осциллограф
Количество каналов: 1, размер экрана: 2,4 дюйма, разрешен…

Подробнее

Синтаксис функции analogReference() показан в следующем примере:

analogReference(DEFAULT); //опорное напряжение = напряжение питания
analogReference(INTERNAL); //опорное напряжение = 1,1В или 2,56В
analogReference(EXTERNAL); //опорное напряжение = напряжение на AREF выводе

Функция analogRead()

Функция analogRead() обеспечивает считывание значения с одного из аналоговых входов. Считанное значение находится в диапазоне 0 — 1023 (10-битный АЦП). Необходимо указать номер аналогового входа, с которого будет происходить чтение данных.

Следующий пример иллюстрирует использование аналоговых входов:

#define analogPin 0 // потенциометр подключен к A0
int val = 0; // val — переменная, хранящая считанное значение
void setup()
{
Serial.begin(9600); // инициализация последовательного порта
}
void loop()
{
val = analogRead(analogPin); // чтение значения напряжения с порта A0
Serial.println(val); // отправка измеренной величины на терминал
}

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

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

ШИМ Arduino

Широтно-импульсная модуляция (ШИМ) — это процесс управления напряжением за счет скважности сигнала. То есть используя ШИМ мы можем плавно управлять нагрузкой

Например можно плавно изменять яркость светодиода, но это изменение яркости получается не за счет уменьшения напряжения, а за счет увеличения интервалов низкого сигнала. Принцип действия ШИМ показан на этой схеме:

ШИМ ардуино

Когда мы подаем ШИМ на светодиод, то он начинает быстро зажигаться и гаснуть. Человеческий глаз не способен увидеть это, так как частота слишком высока. Но при съемке на видео вы скорее всего увидите моменты когда светодиод не горит. Это случится при условии что частота кадров камеры не будет кратна частоте ШИМ.

В Arduino есть встроенный широтно-импульсный модулятор. Использовать ШИМ можно только на тех пинах, которые поддерживаются микроконтроллером. Например Arduino Uno и Nano имеют по 6 ШИМ выводов: это пины D3, D5, D6, D9, D10 и D11. В других платах пины могут отличаться. Вы можете найти описание интересующей вас платы в этом разделе.

Для использования ШИМ в Arduino есть функция analogWrite(). Она принимает в качестве аргументов номер пина и значение ШИМ от 0 до 255. 0 — это 0% заполнения высоким сигналом, а 255 это 100%. Давайте для примера напишем простой скетч. Сделаем так, что бы светодиод плавно загорался, ждал одну секунду и так же плавно угасал и так до бесконечности. Вот пример использования этой функции:

pinMode Arduino IDE описание

Arduino pinMode OUTPUT (пины настроены как выход)

OUTPUT (порт работает как выход) — пин становится управляемым источником питания с максимальным током 40 мА. В зависимости от команды digitalWrite() пин принимает значение единицы или нуля. Пример:

Функция digitalWrite() и analogWrite()

Цифровой пин Ардуино может генерировать цифровой сигнал с помощью команды digitalWrite(), т.е. выдавать напряжение 5 Вольт. Цифровой сигнал может иметь два значения — 0 или 1 (0 Вольт или 5 Вольт). Если в программе используется команда analogWrite() для ШИМ портов платы, то микроконтроллер может генерировать сигнал PWM Arduino на портах — создавать имитацию аналогового сигнала.

void setup() {
   pinMode(10, OUTPUT);
}

void loop() {
   digitalWrite(10, HIGH);
   delay(250);
   digitalWrite(10, LOW);
   delay(250);
}

К пинам ардуино нельзя подключать устройства, потребляющие ток более 40 мА, так как основное назначение микроконтроллера — это управления другими устройствами при помощи логических сигналов. Если к пину подключить устройство, потребляющее ток больше указанного значения, то пин может выгореть. Поэтому к выводам микроконтроллера Ардуино не следует подключать ничего мощнее светодиода.

Arduino pinMode INPUT (пины настроены как вход)

INPUT (порт работает как вход) — пин в этом режиме считывает данные с аналоговых и цифровых датчиков, состояния кнопок. Порт находится в высокоимпедансном состоянии, т.е. у пина высокое сопротивление. Пример:

Функция digitalRead() и analogRead()

Arduino может определить наличие напряжения на пине через функцию digitalRead(), которая возвращает 0 (LOW) или 1 (HIGH). Существует разница между цифровым датчиком (который обнаруживает включение/выключение) и аналоговым датчиком, значение которого постоянно изменяется. Используя функцию analogRead(), можно прочитать напряжение с аналогового датчика, функция возвращает число от 0 до 1023.

void setup() {
   pinMode(10, INPUT);
   Serial.begin(9600);
}

void loop() {
   int data = digitalRead(10);
   Serial.println(data);
   delay(250);
}

Нельзя подавать на вход микроконтроллера напряжение выше напряжения питания платы. Кроме того, для аналоговых выводов Ардуино можно использовать команды digitalRead() и digitalWrite(). В этом случае аналоговые порты будут считывать (digitalRead) или выдавать (digitalWrite) цифровой, а не аналоговый сигнал.

INPUT_PULLUP (порт работает как вход) но к пину подключается резистор в 20 кОм. В этом режиме при подключении кнопки к Ардуино можно не использовать внешние подтягивающие резисторы. Пример: