Контакт AREF на Arduino Uno R3
редактировать
Таким образом, AREF может выводить напряжение только при использовании АЦП, но не при использовании переменного тока.
Вот на что, как я чувствую, указывают все ваши ответы, но ни один из них не имеет черного на белом. Мои вопросы остаются неизменными, ниже:
Должен ли вывод AREF на Uno R3 подавать какое-либо напряжение, если для аналогового компаратора установлено напряжение по умолчанию/напряжение запрещенной зоны?
С этим кодом (аналоговый компаратор):
void initAC()
{
ADCSRA = ADCSRB = ACSR = DIDR1 = 0; // также включает компаратор
ADCSRB |= (1 << ACME); // AIN1 из мультиплексора АЦП
ADMUX |= (1 << MUX0); // Выбран входной контакт ADC1 (PIN_VSENSE)
ACSR |= (1 << ACBG); // AIN0 установлен на опорную запрещенную зону
// напряжение 1,1В
//ACSR |= (1 << ACIS0) | (1 << ACIS1); // включить прерывание по переднему фронту;
ACSR |= (1 << ACIE); // прерывания включены
DIDR1 |= (1 << AIN0D) | (1 << AIN1D); // отключить цифровые входные буферы
// для экономии энергии
PRR &= ~(1 << PRADC); // нет снижения мощности АЦП для того, чтобы
// AC, чтобы иметь возможность использовать вход MUX
EEPROM.put(0x155, 0x5501);
}
При подсоединении щупов цифрового мультиметра к AREF / GND во время перезагрузки Arduino я стабильно считываю около 10 мВ.
Прикоснувшись к щупам во время работы Arduino, я могу увидеть уменьшающееся напряжение, как через RC-цепочку.
Пытался с АКБГ и без него, результат тот же.
С этим другим кодом (аналого-цифровой преобразователь):
{
//power_adc_enable(); нет-нет!
//power_usart0_enable();
ADCSRA = ADCSRB = ADMUX = ACSR = DIDR0 = 0;
ADCSRA |= (1 << ADEN); // включение питания АЦП
ADCSRA |= (1 << ADIE); // включить прерывания
ADCSRA |= (1 << ADPS2) | (1 << ADPS0); // работа на частоте 250 кГц
ADMUX |= (1 << REFS0); // 3,3 В (AVCC) как опорное напряжение
ADMUX |= (1 << ADLAR); // отбрасываем 2 младших бита,
// только чтение ADCH
ADMUX |= (1 << MUX0); // Выбран входной контакт ADC1 (PIN_VSENSE)
DIDR0 |= (1 << ADC1D) | (1 << ADC3D) | (1 << ADC5D); // отключить цифровой вход
// буферы для экономии энергии, что не так
// действительно необходимо, учитывая, как используется АЦП
}
Мне удалось прочитать хорошие 4,8 В на выводе AREF. Поменял чип Atmega328P на моей плате Arduino на другой — поведение то же самое.
@kellogs, 👍1
Обсуждение3 ответа
Вы должны подать опорное напряжение на вывод aref. Вы подаете опорное напряжение 5 В на вывод aref, чтобы АЦП сравнивал свой вход с опорным напряжением aref.
На ATmega328P (микроконтроллер Arduino Uno) вывод AREF изначально плавающий. Если вы попытаетесь прочитать его напряжение, вы можете получить в принципе, все что угодно.
Как только вы выбираете аналоговую ссылку, отличную от EXTERNAL,
Вывод AREF внутренне подключается либо к выводу AVCC (если выбран
DEFAULT) или внутренний опорный источник 1,1 В (если выбран INTERNAL).
Обычно это происходит, когда вы вызываете analogRead() или, в вашем примере,
код, когда вы устанавливаете бит REFS0 ADMUX.
Правка 1: Как отметил JRobert в комментарии, раздел ADC Опорное напряжение в техническом описании ATmega328P стоит прочитать, если вы рассматриваете использование AREF pin. Особенно предупреждение в третьем абзац.
Правка 2: Отвечая на этот новый вопрос:
AREF может выводить напряжение только при использовании АЦП, но не при использовании АС.
Не имеет значения, используется ли он ADC и/или AC.
к поведению AREF-пина. Единственное, что имеет значение, это
значение бита REFS0 ADMUX. Вывод выдает напряжение, если и
только если этот бит установлен. Это можно ясно увидеть в этой части
Схема АЦП из технического описания:

Когда REFS0 равен 1, транзистор, обведенный красным, подключается к выводу AREF
либо к AVCC, либо к внутреннему опорному сигналу, в зависимости от выбора мультиплексора
управляется битом REFS1.
Обратите внимание, что вы можете изменить этот бит, даже не используя АЦП, хотя это, вероятно, было бы бесполезно.
Также см. раздел 24.5 спецификации ATmega328, "Изменение выбора канала или опорного напряжения" и особенно 24.5.2 "Опорное напряжение АЦП". В этом подразделе обсуждается использование вывода AREF, включая несколько предупреждений. Определенно стоит прочитать!, @JRobert
@JRobert: Действительно! Я добавил соответствующую ссылку в свой ответ., @Edgar Bonet
Как указано в техническом описании, раздел 1.1.8, вывод AREF является опорным напряжением для АЦП. Другими словами, это вход.
AREF — аналоговый опорный вывод для АЦП.
Из технического описания:
23.5.2 Опорное напряжение АЦП
Опорное напряжение для АЦП (VREF) указывает диапазон преобразования для АЦП. Несимметричные каналы, которые превышают VREF приведет к кодам, близким к 0x3FF. VREF можно выбрать как AVCC, внутренний опорный сигнал 1,1 В или внешний вывод AREF.
AVCC подключен к АЦП через пассивный переключатель. Внутренний опорный сигнал 1,1 В генерируется из внутренней запрещенной зоны опорный (VBG) через внутренний усилитель. В любом случае внешний вывод AREF напрямую подключен к АЦП, а Опорное напряжение можно сделать более устойчивым к шуму, подключив конденсатор между выводом AREF и землей. VREF также можно измерить на выводе AREF с помощью вольтметра с высоким импедансом. Обратите внимание, что VREF является источником с высоким импедансом, и В систему следует подключать только емкостную нагрузку.
Если у пользователя есть фиксированный источник напряжения, подключенный к выводу AREF, пользователь не может использовать другие варианты опорного напряжения. в приложении, так как они будут закорочены на внешнее напряжение. Если внешнее напряжение не подается на вывод AREF, пользователь может переключаться между AV CC и 1,1 В в качестве опорного выбора.
Как видно из приведенной выше цитаты из технического описания, после инициализации AREF становится доступным для измерения, и для сглаживания шума рекомендуется использовать конденсатор.
- Питание Arduino от батареи и считывание напряжения батареи
- Ускорение двигателя постоянного тока с помощью ШИМ
- Взаимодействие ADS8319 с Arduino UNO
- Как найти пиковое значение аналогового сигнала?
- Как преобразовать эту программу в сборку из c++
- Напряжение на выводе AREF
- AnalogReference (ВНУТРЕННЯЯ) конфигурация
- Чтение сигнала 4-20 мА на ардуино
Прочитав ответы, я все еще не понимаю, зачем вы пытаетесь считывать напряжение с входа., @Hacky