Оглавление:
- Шаг 1: Доработка
- Шаг 2. Почему AnalogRead () возвращает значение от 0 до 1023?
- Шаг 3: Итак, что такое AREF?
- Шаг 4: Внешний AREF
- Шаг 5: внутренний AREF
Видео: Вывод Arduino AREF: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В этом руководстве мы рассмотрим, как вы можете измерять меньшие напряжения с большей точностью, используя выводы аналогового входа на вашей Arduino или совместимой плате в сочетании с выводом AREF. Однако сначала мы внесем некоторые изменения, чтобы вы быстрее освоились. Пожалуйста, прочтите этот пост полностью, прежде чем работать с AREF в первый раз.
Шаг 1: Доработка
Вы можете вспомнить, что вы можете использовать функцию Arduino analogRead () для измерения напряжения электрического тока от датчиков и т.д., используя один из аналоговых входных контактов. Значение, возвращаемое функцией analogRead (), будет находиться в диапазоне от нуля до 1023, где ноль представляет ноль вольт, а 1023 представляет рабочее напряжение используемой платы Arduino.
А когда мы говорим рабочее напряжение - это напряжение, доступное Arduino после схемы питания. Например, если у вас есть типичная плата Arduino Uno и вы запускаете ее от USB-разъема - конечно, на плате есть 5 В от USB-разъема на вашем компьютере или концентраторе, - но напряжение немного снижается по мере того, как ток наматывается вокруг цепь к микроконтроллеру - или USB-источник просто не в порядке.
Это можно легко продемонстрировать, подключив Arduino Uno к USB и установив мультиметр для измерения напряжения на контактах 5V и GND. Некоторые платы возвращают всего 4,8 В, некоторые - выше, но все еще ниже 5 В. Так что, если вы стремитесь к точности, запитывайте плату от внешнего источника питания через разъем постоянного тока или вывод Vin, например, 9 В постоянного тока. Затем, пройдя через схему регулятора мощности, вы получите хорошие 5 В, например, изображение.
Это важно, поскольку на точность любых значений analogRead () будет влиять отсутствие истинных 5 В. Если у вас нет какой-либо опции, вы можете использовать некоторые математические вычисления в своем эскизе, чтобы компенсировать падение напряжения. Например, если ваше напряжение составляет 4,8 В, диапазон analogRead () 0 ~ 1023 будет относиться к 0 ~ 4,8 В, а не к 0 ~ 5 В. Это может показаться тривиальным, однако, если вы используете датчик, который возвращает значение в виде напряжения (например, датчик температуры TMP36), вычисленное значение будет неверным. Поэтому в интересах точности используйте внешний источник питания.
Шаг 2. Почему AnalogRead () возвращает значение от 0 до 1023?
Это связано с разрешающей способностью АЦП. Разрешение (для этой статьи) - это степень, в которой что-либо может быть представлено численно. Чем выше разрешение, тем с большей точностью можно что-то изобразить. Мы измеряем разрешение в количестве бит разрешения.
Например, 1-битное разрешение допускает только два (два в степени единицы) значения - ноль и один. 2-битное разрешение допускает четыре (два в степени двойки) значения - ноль, один, два и три. Если бы мы попытались измерить диапазон в пять вольт с двухбитным разрешением, и измеренное напряжение составило четыре вольта, наш АЦП вернул бы числовое значение 3 - поскольку четыре вольта находятся между 3,75 и 5В. Легче представить это с помощью изображения.
Таким образом, в нашем примере АЦП с 2-битным разрешением он может представлять напряжение только с четырьмя возможными результирующими значениями. Если входное напряжение падает между 0 и 1,25, АЦП возвращает числовой 0; если напряжение падает между 1,25 и 2,5, АЦП возвращает числовое значение 1. И так далее. С диапазоном АЦП нашего Arduino от 0 до 1023 - у нас есть 1024 возможных значения - или 2 в степени 10. Итак, наши Arduino имеют АЦП с 10-битным разрешением.
Шаг 3: Итак, что такое AREF?
Короче говоря, когда ваш Arduino снимает аналоговые показания, он сравнивает напряжение, измеренное на используемом аналоговом выводе, с так называемым опорным напряжением. При обычном использовании AnalogRead опорное напряжение - это рабочее напряжение платы.
Для наиболее популярных плат Arduino, таких как платы Uno, Mega, Duemilanove и Leonardo / Yún, рабочее напряжение составляет 5 В. Если у вас есть плата Arduino Due, рабочее напряжение составляет 3,3 В. Если у вас есть что-то еще - проверьте страницу продукта Arduino или спросите своего поставщика платы.
Итак, если у вас опорное напряжение 5 В, каждая единица, возвращаемая функцией analogRead (), оценивается в 0,00488 В. (Это вычисляется путем деления 1024 на 5 В). Что, если мы хотим измерить напряжения от 0 до 2 или от 0 до 4,6? Как АЦП узнает, что составляет 100% нашего диапазона напряжений?
И в этом причина появления пина AREF. AREF означает аналоговую ссылку. Это позволяет нам подавать на Arduino опорное напряжение от внешнего источника питания. Например, если мы хотим измерить напряжения с максимальным диапазоном 3,3 В, мы должны подать приятное плавное 3,3 В на вывод AREF - возможно, от микросхемы регулятора напряжения.
Тогда каждый шаг АЦП будет составлять около 3,22 милливольта (разделите 1024 на 3,3). Обратите внимание, что самое низкое опорное напряжение, которое вы можете получить, составляет 1,1 В. Есть две формы AREF - внутренняя и внешняя, поэтому давайте рассмотрим их.
Шаг 4: Внешний AREF
Внешний AREF - это источник внешнего опорного напряжения на плату Arduino. Он может поступать от регулируемого источника питания или, если вам нужно 3,3 В, вы можете получить его от вывода 3,3 В. Arduino. Если вы используете внешний источник питания, обязательно подключите GND к контакту GND Arduino. Или, если вы используете источник 3,3 В Arduno - просто установите перемычку между контактом 3,3 В и контактом AREF.
Чтобы активировать внешний AREF, используйте в void setup () следующее:
analogReference (ВНЕШНИЙ); // использовать AREF для опорного напряжения
Это устанавливает опорное напряжение на то, что вы подключили к выводу AREF - которое, конечно, будет иметь напряжение между 1,1 В и рабочим напряжением платы. Очень важное замечание - при использовании внешнего опорного напряжения вы должны установить аналоговое опорное значение на ВНЕШНИЙ. перед использованием analogRead (). Это предотвратит короткое замыкание активного внутреннего опорного напряжения и вывода AREF, что может повредить микроконтроллер на плате. Если это необходимо для вашего приложения, вы можете вернуться к рабочему напряжению платы для AREF (то есть - к нормальному) с помощью следующих
analogReference (ПО УМОЛЧАНИЮ);
Теперь продемонстрируем работу внешнего AREF. При использовании AREF 3,3 В на следующем рисунке измеряется напряжение от A0 и отображается процент от общего AREF и рассчитанное напряжение:
#include "LiquidCrystal.h"
ЖК-дисплей LiquidCrystal (8, 9, 4, 5, 6, 7);
int analoginput = 0; // наш аналоговый вывод
int analogamount = 0; // сохраняет входящее значение float процент = 0; // используется для хранения нашего процентного значения float Voltage = 0; // используется для хранения значения напряжения
установка void ()
{lcd.begin (16, 2); analogReference (ВНЕШНИЙ); // использовать AREF для опорного напряжения}
пустой цикл ()
{lcd.clear (); analogamount = analogRead (аналоговый ввод); процент = (аналоговая сумма / 1024.00) * 100; напряжение = аналоговое количество * 3,222; // в милливольтах lcd.setCursor (0, 0); lcd.print ("% от AREF:"); lcd.print (в процентах, 2); lcd.setCursor (0, 1); lcd.print ("A0 (мВ):"); lcd.println (напряжение, 2); задержка (250); }
Результаты скетча выше показаны на видео.
Шаг 5: внутренний AREF
Микроконтроллеры на наших платах Arduino также могут генерировать внутреннее опорное напряжение 1,1 В, и мы можем использовать его для работы AREF. Просто используйте строку:
analogReference (ВНУТРЕННИЙ);
Для плат Arduino Mega используйте:
analogReference (ВНУТРЕННИЙ1V1);
в void setup (), и вы выключены. Если у вас есть Arduino Mega, также доступно опорное напряжение 2,56 В, которое активируется с помощью:
analogReference (INTERNAL2V56);
Наконец, прежде чем останавливаться на результатах вашего вывода AREF, всегда калибруйте показания с помощью заведомо исправного мультиметра.
Заключение
Функция AREF дает вам большую гибкость при измерении аналоговых сигналов.
Этот пост предоставлен pmdway.com - все для производителей и любителей электроники с бесплатной доставкой по всему миру.
Рекомендуемые:
Дизайн игры в Flick за 5 шагов: 5 шагов
Дизайн игры в Flick за 5 шагов: Flick - это действительно простой способ создания игры, особенно чего-то вроде головоломки, визуального романа или приключенческой игры
Счетчик шагов - Micro: Bit: 12 шагов (с изображениями)
Счетчик шагов - Микро: Бит: Этот проект будет счетчиком шагов. Мы будем использовать датчик акселерометра, встроенный в Micro: Bit, для измерения наших шагов. Каждый раз, когда Micro: Bit трясется, мы добавляем 2 к счетчику и отображаем его на экране
Кормушка для рыбы Arduino Uno за 6 простых и простых шагов !: 6 шагов
Arduino Uno Fish Feeder за 6 простых и дешевых шагов !: Итак, для этого проекта может потребоваться немного предыстории. Людям с домашними рыбками, вероятно, приходилось сталкиваться с той же проблемой, что и мне: отпуск и забывчивость. Я постоянно забывала покормить рыбу и всегда старалась это сделать, пока она не упала
Акустическая левитация с Arduino Uno, шаг за шагом (8 шагов): 8 шагов
Акустическая левитация с Arduino Uno Пошаговая инструкция (8 шагов): ультразвуковые преобразователи звука L298N Женский адаптер питания постоянного тока с штыревым контактом постоянного тока Arduino UNOBreadboard Как это работает: сначала вы загружаете код в Arduino Uno (это микроконтроллер, оснащенный цифровым и аналоговые порты для преобразования кода (C ++)
RIG CELL LITE INTRO: цифровой ввод / вывод: 3 шага
RIG CELL LITE INTRO: Цифровые входы / выходы: цифровые входы и выходы (цифровые входы / выходы) на RIG CELL LITE позволят вам подключать его к датчикам, исполнительным механизмам и другим ИС. Изучение их использования позволит вам использовать RIG CELL LITE для некоторых действительно полезных вещей, таких как чтение программ