Аналоговые входы ардуино нано сравнение

Аналоговые порты Arduino

Рассмотрим 4 популярные платформы Arduino, точнее их аналоговые порты

Arduino Nano8 Аналоговых входов(A0-A7)

Arduino Mega 256016 Аналоговых входов(A0-A15)

Arduino Uno 6 Аналоговых входов(A0-A5)

Arduino Pro Mini8 Аналоговых входов(A0-A7)

Для обработки сигнала с аналогового порта используется АЦП (Аналого-Цифровой Преобразователь).
Микроконтроллер Atmega 328 с тактовой частотой 16 МГц, используемые в Arduino Uno, Nano, Pro Mini, и микроконтроллер ATmega2560 используемый в Arduino MEGA 2560, содержат шестиканальный АЦП, разрядность которого составляет 10 бит.
Считывание значение с аналогового порта занимает 100 микросекунд (0.0001 сек), получается, что максимальная частота считывания приблизительно 10,000 раз в секунду.
Это позволяет на выходе получать значения от 0 до 1023.
Единица шкалы равна 4,9 мВ (5 Вольт/1024=4,9 мВ)

Таким образом подав на вход, например А0 напряжение 2,5 Вольт мы получим значение 512

Считывать значение с порта нужно функцией analogRead()

void setup() <
Serial.begin(9600);
>
void loop() <
int val = analogRead(A0);
Serial.println(val);
delay(1000);
>

Основным применением аналоговых входов на платформах Arduino, является чтение данных аналоговых датчиков.

Дополнительную информацию можно прочитать

Arduino Nano Pro Mini Uno Mega Сравнение Ардуино NANO — UNO — MEGA — Pro Mini
Arduino Nano описание Описание разных версий плат
Arduino Nano shield Для удобства работы. Беспаечная сборка.
Arduino Nano datasheet Набор документации

Источник

Arduino.ru

Аналоговые входы

Описание портов, работающих как аналоговые входы, платформы Arduino (Atmega8, Atmega168, Atmega328, или Atmega1280)

Аналого-цифровой преобразователь

Микроконтроллеры Atmega, используемые в Arduino, содержат шестиканальный аналого-цифровой преобразователь (АЦП). Разрешение преобразователя составляет 10 бит, что позволяет на выходе получать значения от 0 до 1023. Основным применением аналоговых входов большинства платформ Arduino является чтение аналоговых датчиком, но в тоже время они имеют функциональность вводов/выводов широкого применения (GPIO) (то же, что и цифровые порты ввода/вывода 0 — 13).

Таким образом, при необходимости применения дополнительных портов ввода/вывода имеется возможность сконфигурировать неиспользуемые аналоговые входы.

Цоколевка

Выводы Arduino, соответствующие аналоговым входам, имеют номера от 14 до 19. Это относится только к выводам Arduino, а не к физическим номерам выводов микроконтроллера Atmega. Аналоговые входы могут использоваться как цифровые выводы портов ввода/вывода. Например, код программы для установки вывода 0 аналогового входа на порт вывода со значением HIGH:

pinMode(14, OUTPUT);
digitalWrite(14, HIGH);

Подтягивающие резисторы

Выводы аналоговые входов имеют подтягивающие резисторы работающие как на цифровых выводах. Включение резисторов производится командой

digitalWrite(14, HIGH); // включить резистор на выводе аналогового входа 0

пока вывод работает как порт ввода.

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

Подробности и предостережения

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

Руководство на микроконтроллер Atmega не рекомендует производить быстрое переключение между аналоговыми входами для их чтения. Это может вызвать наложение сигналов и внести искажения в аналоговую систему. Однако после работы аналогового входа в цифровом режиме может потребоваться настроить паузу между чтением функцией analogRead() других входов.

Источник

Аналоговые входы в Arduino

Существует четыре вида микроконтроллеров Arduino, на которых используются аналоговые порты: Atmega 1280, Atmega 328 Atmega 8, Atmega 168. Их отличительной особенностью является наличие шестнадцатиканального аналогово-цифрового преобразователя с 10-битным разрешением, выдающим до 1024 значений для каждого входа.

Хотя их основное предназначение – получение сигналов от аналоговых датчиков, они могут использоваться для ввода/вывода данных широкого применения (GPIO). Таким образом, в случае необходимости можно организовать дополнительные вводы/выводы путем конфигурации неиспользуемых аналоговых портов.

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

Каждый аналоговый порт связан с подтягивающим резистором, имеющим тот же алгоритм действия, что и на цифровых вводах/выводах. Для его запуска используется команда digitalWrite(14, HIGH).

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

Правила использования аналоговых контактов

При составлении программ для Arduino существуют некоторые правила. Если ранее выводы использовались как цифровые порты, то использовать команду analogRead некорректно.

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

Несколько предостережений

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

Ещё одно правило: если вы используете аналоговый порт в качестве цифрового, в настройках необходимо задать функцию PinMode(), а порту присвоить номер соответствующего ему цифрового порта с 14 (для входа A0) по 19 (для входа A5).

Источник

Ардуино для начинающих. Урок 8. Аналоговые входы

Сегодня мы поговорим об аналоговых входах Arduino. На разных платах ардуино имеется разное количество аналоговых входов. Так например, у Arduino Uno их 6, а у Arduino Nano их 8. Узнать сколько аналоговых входов на конкретной плате Ардуино вы можете, посмотрев описание плат в разделе «Платы».

Как мы уже знаем, цифровые пины могут быть как входом так и выходом и принимать/отдавать только 2 значения: HIGH и LOW. Аналоговые пины могут только принимать сигнал. И в отличии от цифровых входов аналоговые измеряют напряжение поступающего сигнала. В большинстве плат ардуино стоит 10 битный аналогово-цифровой преобразователь. Это значит что 0 считывается как 0 а 5 В считываются как значение 1023. То есть аналоговые входы измеряют, подаваемое на них напряжение, с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (термо резисторы, фоторезисторы,).

В этом уроке используется:

Большая макетная плата на 1600 точек с 4 шинами питания: Купить
Arduino Uno: Купить
Arduino Nano: Купить
Фоторезисторы 20 штук: Купить
Инфракрасный дальномер: Купить
Высокоточный инфракрасный дальномер с I2C: Купить
Набор резисторов из 100 штук на все случаи: Купить
Соединительные провода 120 штук: Купить
Потенциометры с колпачками 5 штук: Купить

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

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

Как видите в скетче нет ничего сложного. Команда analogReferense() не обязательна. Я добавил ее просто для демонстрации.

Давайте сделаем что то более интересное. Например ночник с автоматическим включением, если яркость освещения падает ниже определенного уровня. Для этого нам необходимо добавить в нашу схему светодиод через резистор на 150 Ом. Его мы подключаем к контакту 9 на Ардуино. Теперь наша схема выглядит так:

схема ночника на ардуино

Так же немного доработаем наш скетч.

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

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

Обратите внимание на значения 750 и 900. Эти значения в вашем случае могут быть другими. Это зависит от номинала стягивающего резистора, от сопротивления вашего фоторезистора и уровня освещения в помещении. Загрузите первый скетч из этого урока и посмотрите какие крайние значения выводятся на экране.

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

1 комментарий

Диод не той стороной подключен в схеме ночника

Источник

Аналоговый функционал Arduino: как использовать его в своих проектах

Lee Goldberg, Electronic Products

Будь вы инженер-разработчик, или просто любитель, вы сможете понять и оценить простоту использования аналоговых входов/выходов открытой аппаратной платформы Arduino в приложениях, работающих с «реальным миром». Компактные аппаратные модули обеспечивают легкий доступ к аналоговым входам и выходам микроконтроллера, которые могут использоваться для измерения и мониторинга напряжения, чтения различных типов аналоговых датчиков и простых сигналов.

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

Если Вы еще не знакомы с Arduino, обратите внимание на ссылки в конце статьи.

В соответствии с принятой философией – сделать применение цифровых технологий в реальном мире максимально простым, – аппаратная платформа Arduino была разработана таким образом, чтобы обеспечить возможность полного использования аналоговых функций, встроенных в универсальный 8-разрядный микроконтроллер ATmega компании Atmel. Все варианты микроконтроллеров, используемых в платформе Arduino, оснащены внутренним многоканальным АЦП, который имеет 10-битное разрешение и способен производить до 15000 выборок в секунду, представляя результаты в форме целых чисел от 0 до 1023. Основной функцией аналоговых выводов микроконтроллера является чтение входных аналоговых значений, но любой из них может быть сконфигурирован как цифровая линия ввода/вывода общего назначения.

Хотя некоторые AVR микроконтроллеры оснащены цифро-аналоговыми преобразователями, в нынешнем поколении плат Arduino используются представители семейства, аналоговые сигналы на выходах которых получаются с помощью широтно-импульсной модуляции (ШИМ). Коэффициент заполнения импульсов, имеющих частоту приблизительно 490 Гц, программируется на каждом выходе ШИМ, что дает возможность получать эквивалентное действующее напряжение в диапазоне от 0 В до 5 В с 8-битным разрешением (Рисунок 1). Несмотря на некоторые ограничения в своих возможностях, выходы Arduino могут быть использованы для многих задач, таких как управление светодиодами и электродвигателями.

Рисунок 1. Широтно-импульсная модуляция позволяет превратить цифровые линии ввода/вывода общего назначения в аналоговые выходы Arduino.

Большинство плат Arduino, как «официальных», так и других изготовителей, предоставляют легкий доступ к аналоговым (и цифровым) сигналам микроконтроллера посредством разъемов по краям платы. Количество аналоговых каналов и их физическое соответствие варьируются в зависимости от конкретного используемого микроконтроллера и форм-фактора платы, но многие варианты придерживаются соглашений, принятых для официальных проектов Arduino – Arduino Uno (Рисунок 2), Mega и Nano.

Рисунок 2. Аналоговые входы (A0 – A5) на плате Arduino Uno (rev3) и выходы ШИМ (цифровые выходы 3, 5, 6, 9, 10, 11) физически доступны через стандартные однорядные разъемы по краям платы.

Разработка программного кода для функций аналогового ввода/вывода также несложна, т.к. среда разработки Arduino IDE содержит набор соответствующих собственных команд. Эти команды позволяют считывать аналоговые значения, генерировать выходной ШИМ сигнал и конфигурировать опорное напряжения для АЦП.

Аналого-цифровое преобразование и чтение данных

Задача использования аналоговых входов платформы Arduino в реальных приложениях довольно проста, но требует определенного внимания при выборе надлежащего источника опорного напряжения для АЦП. Чтобы определить верхний предел диапазона входного напряжения АЦП, здесь можно использовать источник опорного напряжения по умолчанию (Default), внутренний (Internal) или внешний (External).

В режиме Default микроконтроллер в качестве опорного источника использует выход установленного на плате Arduino стабилизатора напряжения. В зависимости от конкретного типа платы, это либо 5 В, либо 3.3 В.

В режиме Internal используется встроенный в микроконтроллер прецизионный источник опорного напряжения. Выходное напряжение этого источника различно в различных микроконтроллерах, и как правило составляет 1.1 В (для ATmega168 и ATmega328) или 2.56 В (для ATmega8 и других из серии mega). Режим External позволяет подключить внешний источник опорного напряжения к выводу микроконтроллера AREF через резистор номиналом 5 кОм. Вывод AREF имеет внутренний защитный резистор 32 кОм, который совместно с резистором 5 кОм образует делитель напряжения. Это означает, что при напряжении 2.5 В, приложенном через резистор, на выводе AREF будет 2.5 × 32 / (32 + 5) ≈ 2.2 В.

Чтение аналоговых напряжений с помощью языка программирования Arduino заключается в выборе источника опорного напряжения с использованием команды analogReference (type) и вызова функции analogRead(pin), где

pin указывает на номер вывода разъема платы.

После назначения источника опорного напряжения он остается активным до выбора другого источника. Несмотря на то, что микроконтроллеры AVR поддерживают скорость преобразования до 15000 выборок в секунду, аппаратно-программная платформа Arduino, как правило, ограничивает это значение до 10000 выборок.

Создание аналоговых выходов ШИМ

Для генерации аналогового напряжения на одном из выводов ШИМ платы Arduino требуется конфигурирование этого вывода с помощью команды pinMode(pin, mode) и последующего вызова функции analogWrite(pin, value), где

pin – указывает номер вывода ШИМ на разъеме платы Arduino,
value – значение, задающее выходное напряжение ШИМ (8-битное число в диапазоне 0-255).

На сконфигурированном однажды выходе будет постоянно присутствовать сигнал ШИМ частотой 490 Гц с заданными параметрами до следующего вызова функции analogWrite() (или digitalRead(), или digitalWrite()) для этого же вывода микроконтроллера.

Линии ввода/вывода микроконтроллера способны отдавать в нагрузку ток до 40 мА, поэтому они пригодны для непосредственного управления небольшими массивами светодиодов. Для управления более мощными источниками света или электродвигателями аналоговый выход микроконтроллера можно соединить с мощным транзистором или мостовой схемой. В приложениях более требовательных к качеству аналогового сигнала (усилители, источники тока) могут применяться простые RC фильтры.

Дополнительные аналоговые функции

Некоторые микроконтроллеры AVR (включая ATmega8 и ATmega168) имеют аналоговый компаратор, позволяющий сравнивать входное напряжение с другим внешним напряжением, которое может поступать с выхода ШИМ или от встроенного источника опорного напряжения микроконтроллера. Выход компаратора может опрашиваться микроконтроллером, или же может инициировать прерывание. Несмотря на дополнительный программный код, работа компаратора с выработкой прерывания позволяет процессору реализовать функции определения повышенного/пониженного напряжения без постоянного чтения аналоговых данных. Эта функция может использоваться в детекторах движения с регулируемым порогом и датчиках удара в биомедицинском мониторинге.

Для плат Arduino, микроконтроллеры которых не имеют встроенного аналогового компаратора, относительно легко можно добавить внешний компаратор LM741, LM339N или TLC3704, установив его в макетной области платы. Если свободного места на вашей плате нет, можно использовать специальную плату для прототипирования (Рисунок 3).

Рисунок 3. АналоПлата для прототипирования позволит подключать ваши собственные аналоговые (или цифровые) схемы ввода/вывода к стандартным платам Arduino.

Ссылки

  1. Радиолоцман», 2011, 11, стр. 13, «Как создавали и продвигали Arduino».
  2. Радиолоцман», 2011, 12, стр. 44, «Открытая платформа Arduino высвобождает творческий потенциал».
  3. Радиолоцман», 2012, 01, стр. 34, «Открытая платформа Arduino высвобождает творческий потенциал. Arduino Shields – расширение возможностей аппаратной платформы».

Перевод: Vadim по заказу РадиоЛоцман

Источник

Adblock
detector