Arduino aref: измеряем напряжение с больше точностью

Содержание

Функция analogReference() | Аппаратная платформа Arduino

Описание

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

  • DEFAULT: стандартное опорное напряжение 5 В (на платформах с напряжением питания 5 В) или 3.3 В (на платформах с напряжением питания 3.3 В)
  • INTERNAL: встроенное опорное напряжение 1.1 В на микроконтроллерах ATmega168 и ATmega328, и 2.56 В на ATmega8.
  • INTERNAL1V1: встроенное опорное напряжение 1.1 В (Arduino Mega)
  • INTERNAL2V56: встроенное опорное напряжение 2.56 (Arduino Mega)
  • EXTERNAL: внешний источник опорного напряжения, подключенный к выводу AREF
Синтаксис
Параметры

type: определяет используемое опорное напряжение (DEFAULT, INTERNAL или EXTERNAL).

Возвращаемое значение
Внимание

Внешнее напряжение рекомендуется подключать к выводу AREF через резистор 5 кОм.

Таким образом уменьшается риск повреждения микросхемы Atmega если настройки analogReference не совпадают с возможностями платформы. Однако при этом произойдет небольшая просадка напряжения, вследствие того, что имеется встроенный резистор 32 кОм, подключенный к выводу AREF. В этом случае оба резистора работают как делитель напряжения. Подсоединение внешнего резистора позволяет быстро переключаться на напряжение 3.3 В вывода AREF с напряжения 5 В DEFAULT без конфигурации аппаратной части и АЦП.

Использование вывода AREF

Напряжение, подключенное к выводу AREF, конвертируется АЦП и, затем, определяется значение напряжения, при котором АЦП выдает самое высокое цифровое значение, т.е 1023. Другие значения напряжения, поступающие в АЦП, конвертируются пропорционально. Таким образом, при настройке DEFAULT 5 В значение напряжения 2.5 В в АЦП будет конвертироваться в 512.

В стандартной конфигурации платформ Arduino вывод AREF (вывод 21 Atmega) не задействован. В этом случае при настройке DEFAULT к выводу подключается внутреннее напряжение AVCC. Соединение является низко-импедансным и любое напряжение подведенное к выводу в этот момент может повредить микросхему ATMEGA.

Настройкой INTERNAL к выводу AREF подключается внутреннее напряжение 1.1 В (или 2.56 микросхемы ATmega8). При этом напряжение соответствующее или превышающее 1.1 В будет конвертироваться АЦП в 1023. Другие значения напряжения конвертируются пропорционально.

Внутреннее подключение источника 1.1 В к выводу является высоко-импедансным, что означает, что для измерение напряжения на выводе может быть произведено только мультиметром с высоким сопротивлением. Ошибочное подключение напряжения к выводу AREF при этой настройке функции analogReference не повредит микросхему, но превысит значение 1.1 В. В этом случае АЦП будет конвертировать напряжение внешнего источника. Во избежание вышеописанных проблем настоятельно рекомендуется подключать внешнее напряжение через резистор 5 кОм.

Рекомендуемой настройкой для вывода AREF является EXTERNAL. При этом происходит отключение обоих внутренних источников, и внешнее напряжение будет являться опорным для АЦП.

Смотрите также

Arduino analogReference(type)

Описание

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

  • DEFAULT: опорное напряжение по умолчанию, равное 5 В (на 5В-платах Ардуино) или 3.3 В (на 3.3В-платах Ардуино)
  • INTERNAL: внутренне опорное напряжение, равное 1.1 В в микроконтроллерах ATmega168 и ATmega328, или 2.56 В в микроконтроллере ATmega8 (не доступно в Arduino Mega)
  • INTERNAL1V1: внутреннее опорное напряжение 1.1 В (только для Arduino Mega)
  • INTERNAL2V56: внутреннее опорное напряжение 2.56 В (только для Arduino Mega)
  • EXTERNAL: в качестве опорного напряжения будет использоваться напряжение, приложенное к выводу AREF (от 0 до 5В)

Параметры

type: тип источника опорного напряжения (DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56 или EXTERNAL).

Возвращаемые значения

Примечание

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

Предупреждение

При использовании внешнего источника опорного напряжения, напряжение на выводе AREF должно быть строго в пределах от 0 до 5 В! При этом перед вызовом функции analogRead() нужно обязательно установить тип источника как EXTERNAL. В противном случае, возможно короткое замыкание внутреннего источника опорного напряжения с выводом AREF, что может привести к повреждению микроконтроллера на вашей плате Ардуино.

Подобную ситуацию также можно предотвратить, если внешний источник опорного напряжения соединять с выводом AREF через резистор номиналом 5 кОм. Такое соединение даст возможность переключаться между внутренним и внешним опорным напряжением. Однако, при этом следует иметь ввиду, что резистор изменит величину опорного напряжения, поскольку вывод AREF соединяется с внутренним резистором номиналом 32 КОм. Два резистора образуют делитель напряжения, таким образом, например, 2.5В, приложенные через резистор, в итоге дадут 2.5 * 32 / (32 + 5) =

2,2 В на выводе AREF.

Смотрите также

Что такое Arduino? | Электронные конструкторы и наборы | Блог

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

Возможности

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

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

Модули Arduino

Модули базовых контроллеров Arduino получили широкое распространение благодаря своей универсальности. Популярные платы Arduino Uno и Leonardo имеют достаточный набор периферии, а платы Mega и Due — расширенный. Даже компактные модули типа Pro, Micro и Nano подойдут для собственного проекта. В последнее время появились модули Mega сразу с установленным SoC ESP8266 и беспроводной связью Wi-Fi на борту.

Модули Arduino представляют собой платы со встроенным процессором, памятью и периферией, которая позволяет реализовать базовый функционал посредством одной всего платы. Для расширения возможностей служат дополнительные модули-шилды, которые работают с двигателями и сенсорами различных типов, а также способны читать и писать на карты памяти и накопители, поддерживают USB Host, умеют работать с Ethernet, Bluetooth и Wi-Fi. Модули расширения уровня Industrial имеют гальваническую развязку, а модули для умного дома подойдут с целью прототипирования устройств IoT ( «интернета вещей»). Вы даже можете сделать свой собственный web-сервер на основе Arduino.

На сегодняшний день существует множество оригинальных разновидностей и популярных клонов, а также огромное количество совместимых модулей-шилдов. Обратите внимание на приведенную Arduino Nano — это компактный модуль с 8-битным контроллером, на борту которого размещается приличный набор периферии (аналого-цифровые преобразователи, ШИМ-генераторы и таймеры, последовательные интерфейсы и так далее).

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

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

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

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

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

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

Урок 2. Что такое Arduino Uno

Начинаем наш второй урок. В этом уроке мы рассмотрим все части Arduino. Arduino, по сути, — это крошечный компьютер, который может подключаться к электрическим цепям и к которому можно подключать огромное количество датчиков и сенсоров. Большинство проектов начинающих (и не только) электронщиков основаны на плате Arduino Uno.

Arduino Uno работает на чипе Atmega 328P и это самый большой чип на плате (см. изображение ниже). Этот чип способен выполнять программы, хранящиеся в его (очень ограниченной) памяти.

  1. Кнопка сброса
  2. USB соединение
  3. Питание платы
  4. Чип Atmel
  5. Земля
  6. Цифровые пины (входы/выходы)
  7. Подключение питания
  8. Аналоговые пины

Мы можем загружать программы на чип через USB (2) с помощью Arduino IDE. Порт USB также обеспечивает питание платы Arduino. В качестве альтернативы, мы могли бы запитать запрограммированную плату с помощью разъема питания, в этом случае нам не нужно USB-соединение.

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

Выводы, помеченные символом

, могут имитировать аналоговый выход

Arduino имеет 14 цифровых выводов, обозначенных

Рядом с разъемами питания находятся контакты аналогового входа с маркировкой A0-A5. Эти контакты используются для аналоговых измерений датчиков или других компонентов. Аналоговые входы особенно хороши для измерений с диапазоном возможных значений.

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

Давайте ниже пройдемся по всем компонентам, которые составляют плату Arduino, и какова каждая из их функций:

  1. Кнопка сброса (Reset Button) — это перезапустит любой код, который загружен на плату Arduino
  2. AREF или Analog Reference — используется для установки внешнего опорного напряжения
  3. Штырь заземления (GND, земля) — на Arduino есть несколько штырей заземления, и все они работают одинаково
  4. Цифровые входы/выходы — контакты 0-13 могут использоваться для цифрового ввода или вывода
  5. ШИМ (PWM) — выводы, помеченные символом (

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

Питание Arduino

Arduino Uno нуждается в источнике питания для работы и может питаться различными способами.

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

Что нельзя делать с Arduino: 10 способов убить контроллер

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

Напиши свою первую игру на C++

О платах

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

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

Что нельзя делать с Arduino: 10 способов убить контроллер

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

Ошибка 1: Высокое напряжение

Не подавайте напряжение на Arduino выше 5V через пины вывода (или выше 3.3V для контроллеров с этим рабочим напряжением)!

Почему-то люди иногда путают пины 5V и vin и подают напряжение именно на вывод с надписью 5V. Он является выводом, поэтому можно не удивляться, если ваша Arduino после такого эксперимента больше не включается.

Ошибка 2: Два источника питания

Не питайте Arduino от двух разных источников одновременно! Это приводит к перекосу напряжения, и как следствие, через некоторое время контроллер может просто выйти из строя.

Ошибка 3: Программное сопротивление

Никогда не включайте в контроллерах Arduino сопротивление программно! При задействованном выводе оно должно быть обязательно подключено через подтягивающий резистор в 10кОм на землю. Это делается для исключения наводок от внешних источников питания.

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

Ошибка 4: Замыкание

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

На платах типа Arduino Mega уже предусмотрена так называемая «защита от дурака» и от невнимательных юзеров. Но на платах типа Nano предохранитель отсутствует из-за физических ограничений. Хорошо, если сгорит всего лишь обвязка на плате. Поменять диод или резистор не проблема, но спалить контроллер из-за неосторожного движения – большая досада.

Ошибка 5: Замыкание без нагрузки

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

Ошибка 6: Перегруз

Не перегружайте выводы Arduino по напряжению и току. Выводы контроллера рассчитаны на суммарный ток до 200мА. При превышении этого порога контроллер начнет перегреваться и выйдет из строя.

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

Ошибка 7: Переполюсовка контроллера

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

Ошибка 8: Статическое электричество

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

Ошибка 9: Включенный контроллер

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

Страшно, когда половина выводов перестанут подавать признаки жизни. Такой контроллер больше никогда не будет работать адекватно (если он вообще будет работать).

Ошибка 10: Двенадцать вольт

Не подавайте на плату напряжение выше 12V. Модули, подсоединяемые к плате, могут работать при напряжении выше номинального, отличного от предусмотренного напряжения на плате.

Инженеры, проектирующие Arduino, учли этот нюанс, и микросхема способна выдержать большое напряжение, но при этом она будет сильно греться. При превышении порога по напряжению в 12 вольт контроллер просто сгорит!

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

Arduino Due (дополнено) | Аппаратная платформа Arduino

Общие сведения

Arduino Due — плата микроконтроллера на базе процессора Atmel SAM3X8E ARM Cortex-M3 (описание). Это первая плата Arduino на основе 32-битного микроконтроллера с ARM ядром. На ней имеется 54 цифровых вход/выхода (из них 12 можно задействовать под выходы ШИМ), 12 аналоговых входов, 4 UARTа (аппаратных последовательных порта), a генератор тактовой частоты 84 МГц, связь по USB с поддержкой OTG, 2 ЦАП (цифро-аналоговых преобразователя), 2 TWI, разъем питания, разъем SPI, разъем JTAG, кнопка сброса и кнопка стирания.

Внимание! В отличие от других плат Arduino, Arduino Due работает от 3,3 В. Максимальное напряжение, которое выдерживают вход/выходы составляет 3,3 В. Подав более высокое напряжение, например, 5 В, на выводы Arduino Due, можно повредить плату.

Плата содержит все, что необходимо для поддержки микроконтроллера. Чтобы начать работу с ней, достаточно просто подключить её к компьютеру кабелем микро-USB, либо подать питание с AC/DC преобразователя или батарейки. Due совместим со всеми платами расширения Arduino, работающими от 3,3 В, и с цоколевкой Arduino 1.0.

Расположение выводов Due повторяет цоколевку Arduino 1.0:

  • TWI: Выводы SDA и SCL расположены рядом с выводом AREF.
  • Вывод IOREF, который позволяет с помощью правильной конфигурации адаптировать присоединенную плату расширения к напряжению, выдаваемому Arduino. Благодаря этому платы расширения могут быть совместимы и с 3,3-вольтовыми платами типа Due и с платами на базе AVR, работающими от 5 В.
  • Неподключенные выводы, зарезервированные для использования в будущем.

Преимущества ядра ARM

На Due установлено 32-битное ARM ядро, превосходящее по производительности обычные 8-битные микроконтроллеры. Наиболее значимые отличия:

32-битное ядро, позволяющее выполнять операции с данными шириной 4 байта за 1 такт (более подробную информацию смотри на странице int type).


Источник: soto-lux.ru