Aref arduino что такое
Перейти к содержимому

Aref arduino что такое

  • автор:

Aref arduino что такое

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

  • 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.

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

  • Описание аналоговых входов
  • analogRead()

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 Mega и RFID

Стартовый набор с Arduino Mega и RFID Это расширенный стартовый набор. В комплект входит Arduino Mega R3, макетные платы, множество датчиков, управляемые механизмы и необходимые радиоэлектронные компоненты. Полный список.

Плата Arduino Uno R3

Плата Arduino Uno R3 Arduino Uno — плата на базе микроконтроллера ATmega328P с частотой 16 МГц. На плате есть все необходимое для удобной и быстрой работы.

Зачем нужен пин aref и ioref на ардуино?

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

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

2 Ответы

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

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

Популярные теги

Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.

  1. Алексей Байкал 2 балл(ов)

Arduino.ru

Кто подробно объяснит, про «analogReference(EXTERNAL);»?

В сети, так «понятно и подробно» описана эта функция, что слов нет.

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

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

Это как понимать?

Везде написано, что AREF это «ВЫХОД» и на него подается внешнее опорное напряжение.

Вообще то, » AREF тогда, по логике, должен быть «ВХОДОМ«.

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

Прежде чем объявить функцию «analogReference(EXTERNAL);», нужно объявить функцию «analogReference(EXTERNAL);»? А это не масло масленное?

Если можно на примере, объяснить.

К примеру:

Если на «выход или все-таки вход» «AREF» подать опорное напряжение с микросхемы «REF03» 2,5 вольта.

И как как в скетче указать, что было подано на » AREF «, именно 2,5 вольта?

Что произойдет с датчиками, подключенными к аналоговым входам?

Нужен ли резистор в 5 кОм?

Ведь по сути, из более-менее точного напряжения, с этим резистором, мы теряем эту точность, даже в описании в сети говорится, что из-за получившегося делителя (с внутренним резистором в 32 КОм), получится примерно 2,2 вольта, то есть» + — «километр.

Тогда какой смысл во всем этом?

float Read_Voltage_Vcc() // Функция расчета и определения напряжения на Vcc Arduino < // Read 1.1V reference against AVcc // set the reference to Vcc and the measurement to the internal 1.1V reference #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) ADMUX = _BV(MUX5) | _BV(MUX0); #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) ADMUX = _BV(MUX3) | _BV(MUX2); #else ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); #endif delay(75); // Wait for Vref to settle ADCSRA |= _BV(ADSC); // Start conversion while (bit_is_set(ADCSRA, ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both long result = (high 

Вроде бы работает не плохо.

Но ситуация такая.

Если измерять напряжение на любом из аналоговых пинов от 0 до 5 вольт, то проблем нет.

Это выглядит примерно так:

#define Pin_ Akkum A0 // Pin подключенный к +АКБ float Voltage_Vcc = 0; // Переменная напряжение напряжения на Vcc, входе питания Ардуино float Voltage_Value_Pin = 0; // Переменная данных с аналогового Pin float Voltage_Pin = 0; // Переменная напряжение на аналоговом Pin (до 5 вольт без делителя) void setup() < analogReference(DEFAULT); // Настройка источника опорного напряжения по умолчанию >void loop() < Voltage_ Vcc = Read_Voltage_Vcc() / 1000; /* Присваиваем переменной, значение получаемое из функции в вольтах*/ Voltage_Value_Pin = float (analogRead(Pin_ Akkum)); // Присуаиваем переменной значение получаемое с аналогового Pin Voltage_Pin = Voltage_Value_Pin * Voltage_Vcc / 1024; /* Присваиваем переменной значение в вольтах (в вычисление подставляем значение Voltage_Vcc, полученные с помощью функции " float Read_Voltage_Vcc ()" */ >

А вот как быть, если нужен делитель напряжения?

Если без этой функции " float Read_Voltage_Vcc ()" то :

Voltage_Akkum = float(analogRead(Pin _Akkum)) / 34,13333333333333; // Считываем значение на пине вольтметра, расчет произведен на предел значений 0-30В. 1024/30 = 34,13333333333333 (резисторы делителя, рассчитаны и подобраны с точностью до десяток).

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

Кто что посоветует?

Как лучше сделать?

  • Войдите на сайт для отправки комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *