Ардуино ацп частота дискретизации

Для обработки аналогового сигнала можно использовать, например, аналоговый вывод A0:

Ввод значения напряжения на этом выводе реализуется так:

Перевод считанного значения в уровень напряжения реализуется так:

В качестве делителя в некоторых источниках рекомендуется и 1023.
Но в даташите на ATMega328P указано именно число 1024:

В вышеуказанном выражении vref – опорное напряжение (voltage reference).
В режиме по умолчанию (DEFAULT) опорное напряжение равно напряжению питания (5 В для моей платы Arduino).
В режиме INTERNAL используется внутренний источник опорного напряжения (1,1 В для моей платы Arduino).
В режиме EXTERNAL на вывод AREF подается внешнее опорное напряжение (от 0 до 5 В), причем входное сопротивление составляет 32 кОм. В этом случае удобно использовать внешний источник опорного напряжения – например, LM4040, LM385Z, REF-4096.

Источник REF-4096 основан на чипе MCP1541 и имеет три вывода:

Он преобразует напряжение около 5 В (4,3 . 5,5 В) в стабильное напряжение 4,096 В (4,055 . 4,137 В) (макс. выходной ток 2 мА):

Схема включения диода LM4040 следующая:

Диоды LM4040 обеспечивает различные значения напряжения:
LM4040-N-2.0 – 2,0 В;
LM4040-N-2.5 – 2,5 В;
LM4040-N-3.0 – 3,0 В;
LM4040-N-4.1 – 4,1 В;
LM4040-N-5.0 – 5,0 В.
Диод LM4040 обеспечивает стабильное опорное напряжение при токах 60 мкА . 15 мА.

Также можно использовать опорный диод из серии LMx85, например, LM385Z-1.2 на напряжение 1,235 В с погрешностью 2 %, работающий при токах 10 мкА . 20 мА.
Схема включения такого диода аналогична схеме включения LM4040, при этом рекомендуемое значение сопротивления резистора R для входного напряжения 9 В – 510 кОм, 1,5 В – 3 кОм.
Символ "Z" в обозначении диода означает тип корпуса TO-92:

Внутренняя схема такого опорного источника весьма сложна:

Для переключения режима опорного напряжения используется команда:

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

Для успешного детектирования сигнала необходимо ускорить аналого-цифровое преобразование, изменив множитель (prescaler) путем управления битами ADPSx в регистре ADCSRA:

ADPS2 ADPS1 ADPS0 Множитель
2
1 2
1 4
1 1 8
1 16
1 1 32
1 1 64
1 1 1 128
Читайте также:  Соотношение сигнал шум микрофона

Этот множитель показывает, во сколько раз тактовая частота АЦП меньше системной тактовой частоты (16 МГц).

Установка множителя, равного 64 (частота дискретизации около 19 кГц) –

Установка множителя, равного 32 (частота дискретизации около 38 кГц) –

Установка множителя, равного 16 (частота дискретизации около 76 кГц) –

В этом случае тактовая частота АЦП равна 1 МГц. С учетом того, что преобразование занимает 13 тактов, оно будет длиться 13 мкс (частота 1000/13 = 76,92 мкс). Но это в идеальном случае! Тесты показали, что без изменения множителя (128 по умолчанию) одно аналого-цифровое преобразование (analogRead) в цикле занимает

Для обработки аналогового сигнала можно использовать, например, аналоговый вывод A0:

Ввод значения напряжения на этом выводе реализуется так:

Перевод считанного значения в уровень напряжения реализуется так:

В качестве делителя в некоторых источниках рекомендуется и 1023.
Но в даташите на ATMega328P указано именно число 1024:

В вышеуказанном выражении vref – опорное напряжение (voltage reference).
В режиме по умолчанию (DEFAULT) опорное напряжение равно напряжению питания (5 В для моей платы Arduino).
В режиме INTERNAL используется внутренний источник опорного напряжения (1,1 В для моей платы Arduino).
В режиме EXTERNAL на вывод AREF подается внешнее опорное напряжение (от 0 до 5 В), причем входное сопротивление составляет 32 кОм. В этом случае удобно использовать внешний источник опорного напряжения – например, LM4040, LM385Z, REF-4096.

Источник REF-4096 основан на чипе MCP1541 и имеет три вывода:

Он преобразует напряжение около 5 В (4,3 . 5,5 В) в стабильное напряжение 4,096 В (4,055 . 4,137 В) (макс. выходной ток 2 мА):

Схема включения диода LM4040 следующая:

Диоды LM4040 обеспечивает различные значения напряжения:
LM4040-N-2.0 – 2,0 В;
LM4040-N-2.5 – 2,5 В;
LM4040-N-3.0 – 3,0 В;
LM4040-N-4.1 – 4,1 В;
LM4040-N-5.0 – 5,0 В.
Диод LM4040 обеспечивает стабильное опорное напряжение при токах 60 мкА . 15 мА.

Читайте также:  Самый дальний город от москвы

Также можно использовать опорный диод из серии LMx85, например, LM385Z-1.2 на напряжение 1,235 В с погрешностью 2 %, работающий при токах 10 мкА . 20 мА.
Схема включения такого диода аналогична схеме включения LM4040, при этом рекомендуемое значение сопротивления резистора R для входного напряжения 9 В – 510 кОм, 1,5 В – 3 кОм.
Символ "Z" в обозначении диода означает тип корпуса TO-92:

Внутренняя схема такого опорного источника весьма сложна:

Для переключения режима опорного напряжения используется команда:

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

Для успешного детектирования сигнала необходимо ускорить аналого-цифровое преобразование, изменив множитель (prescaler) путем управления битами ADPSx в регистре ADCSRA:

ADPS2 ADPS1 ADPS0 Множитель
2
1 2
1 4
1 1 8
1 16
1 1 32
1 1 64
1 1 1 128

Этот множитель показывает, во сколько раз тактовая частота АЦП меньше системной тактовой частоты (16 МГц).

Установка множителя, равного 64 (частота дискретизации около 19 кГц) –

Установка множителя, равного 32 (частота дискретизации около 38 кГц) –

Установка множителя, равного 16 (частота дискретизации около 76 кГц) –

В этом случае тактовая частота АЦП равна 1 МГц. С учетом того, что преобразование занимает 13 тактов, оно будет длиться 13 мкс (частота 1000/13 = 76,92 мкс). Но это в идеальном случае! Тесты показали, что без изменения множителя (128 по умолчанию) одно аналого-цифровое преобразование (analogRead) в цикле занимает

Описан процесс измерения напряжения с помощью Arduino, а точнее с использованием аналого-цифровой преобразователя (АЦП), доступного на плате Arduino

АЦП Arduino UNO имеет разрешение 10 бит, т.е. позволяет выводить значения в десятичном виде от 0 до 1023.

В относительных единицах деление шклалы 5/1024 = 4.9 мВ;

Читайте также:  Ensr8 локальный не установлен

Описание здесь http://arduino.ru/Reference/Analogreference

analogRead(pin) — Функция считывает значение с указанного аналогового входа. Возвращает: int (0 to 1023).

Считывание значение с аналогового входа занимает примерно 100 микросекунд (0.0001 сек), т.е. максимальная частота считывания приблизительно 10,000 раз в секунду.

analogReference(type) — определяет опорное напряжение относительно которого происходят аналоговые измерения. Type принимает одно из следующих значений:

DEFAULT: стандартное опорное напряжение 5 В (на платформах с напряжением питания 5 В) или 3.3 В (на платформах с напряжением питания 3.3 В).

INTERNAL: встроенное опорное напряжение 1.1 В на микроконтроллерах ATmega168 и ATmega328, и 2.56 В на ATmega8.

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

Примеч.: Опорное напряжение можно установить, используя функцию analogReference или при помощи битов REFT[1:0] в регистре ADMUX.

Используйте внутреннее опорное напряжение 1.1 В для точных измерений внешних напряжений:

analogReference(INTERNAL1V1); // выбираем внутреннее опорное напряжение 1.1В

Опорное напряжение 1.1 В более стабильно и не зависит от изменения напряжения питания или температуры. Таким образом, можно производить измерения абсолютных значений. В Arduino Mega также возможен вариант опорного напряжения 2.56 В.

Режимы работы

1) Разовая выборка – это на самом деле то, что Arduino делает при вызове функции analogRead.

Из-за шумов 2 младших бита обычно отбрасывают:

int val = analogRead(A0)>>2;

— в итоге получаем значения от 0 до 255, т.е. точность 5/255=19.6мВ.

2) Непрерывная выборка:

Хорошей идеей при непрерывной выборке сигнала является использование прерываний.

Микроконтроллеры ATMega328 и ATMega2560 могут быть переведены в режим непрерывной выборки (free running mode). В этом режиме АЦП запускается автоматически после завершения предыдущей обработки.

Для включения режима непрерывной выборки необходимо установить три регистра: ADMUX, ADCSRA и ADCSRB.

Оцените статью
ПК Знаток
Добавить комментарий

Adblock
detector