На главную страницу | Новости | FAQ | Ссылки | Для детей | Контакты

ARDUINO ROBOTS
Arduino для начинающих электронщиков. Модули и проекты на базе Arduino. Разработка роботов


АЦП (Аналого-цифровой преобразователь) на Arduino


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

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

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

Описание здесь 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.

void setup() {
    Serial.begin(9600);
}
void loop() {
    int val = analogRead(A0);	
    Serial.println(val);
    delay(1000);
}

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

int val = analogRead(A0)>>2;

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

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

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

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

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




Платы ARDUINO по низкой цене

Нажми на изображение, чтобы заказать в интернет-магазине:


arduino NANO купить дешево arduino UNO купить дешево arduino UNO R3 ORIG купить дешево arduino MEGA купить дешево arduino DUE купить дешево



Now 28.11.20 22:33:26, Your IP: 100.24.113.182; arduino.zl3p.com/basic/adc