среда, 13 марта 2013 г.

Модуль АЦП

АЦП прежде всего предназначен для преобразования аналогового сигнала в цифровой. В микроконтроллере ATmega328p в корпусе PDIP-28 есть возможность выбрать один из 6 входов, для преобразования, а также ИОН или датчик температуры микроконтроллера (только для ATmega328P). В качестве опорного напряжения также можно выбирать внутренний ИОН и внешний ИОН.

Характеристики модуля АЦП:
  • 10-бит разрешение преобразования
  • Абсолютная погрешность - 2 
  • Интегральная нелинейность - 0.5 
  • Скорость преобразования 13 - 260 микросекунд
  • 6 мультиплексированный каналов преобразования
  • Встроенный датчик температуры
  • Входное напряжение - от 0 до Vпитания
  • Возможность подключить внутренний ИОН 1.1 В
  • Независимость от ЦП
  • Генерация прерывания по завершению преобразования
  • Режим подавления шумов
Регистры АЦП:
  • ADMUX - регистр выбора входа мультиплексора
  • ADCSRA - регистр управления АЦП A
  • ADCSRB - регистр управления АЦП B
  • ADCL и ADCH - регистры с результатом преобразования АЦП
  • DIDR0 - регистр управления входами мультиплексора
Регистр ADMUX управляет выбором опорного напряжения, а также входа мультиплексора.

Регистр ADMUX:
7
6
5
4
3
2
1
0
REFS1
REFS0
ADLAR
-
MUX3
MUX2
MUX1
MUX0

Биты REFS1 (7) и REFS0 (6) устанавливают какой источник опорного напряжения будет выбран:
  • 00 - опорное напряжение на входе AREF (21 ножка)
  • 01 - Vпитания (вход AREF должен быть отключен. или к нему можно подключить фильтрующий конденсатор)
  • 10 - резерв
  • 11 - внутренний ИОН 1.1 В (к входу AREF можно подключить фильтрующий конденсатор)
Бит ADLAR (5) регистра ADMUX позволяет выравнивать результат преобразования по левому краю при записи в него 1.
Биты MUX3 - MUX0 (3 - 0) - управляют мультиплексором:
  • 0000 - вход ADC0 (23 ножка)
  • 0001 - вход ADC1 (24 ножка)
  • 0010 - вход ADC2 (25 ножка)
  • 0011 - вход ADC3 (26 ножка)
  • 0100 - вход ADC4 (27 ножка)
  • 0101 - вход ADC5 (28 ножка)
  • 0111 - резерв
  • 1000 - датчик температуры
  • 1001 - 1101 - резерв
  • 1110 - 1.1 В
  • 1111 - 0 В (земля)
Регистр ADCSRA:
7
6
5
4
3
2
1
0
ADEN
ADSC
ADATE
ADIF
ADIE
ADPS2
ADPS1
ADPS0

Бит ADEN (7) регистра ADCSRA включает или выключает АЦП (1-включен).
Бит ADSC (6) регистра ADCSRA запускает преобразование если в него записать 1 (для многоразового режима запуск первого преобразования).
Бит ADATE (5) регистра ADCSRA позволяет запускать преобразование по прерыванию от переферийных устройств микроконтроллера если установить в 1.
Бит ADIF (4) регистра ADCSRA - флаг прерывания от АЦП.
Бит ADIE (3) регистра ADCSRA - разрешает прерывания от АЦП если установлен в 1.
Биты ADPS2 - ADPS0 (2 - 0) регистра ADCSRA выбирают режим работы предделителя тактовой частоты:
  • 000 - CLK/2
  • 001 - CLK/2
  • 010 - CLK/4
  • 011 - CLK/8
  • 100 - CLK/16
  • 101 - CLK/32
  • 110 - CLK/64
  • 111 - CLK/128
Регистр ADCSRB:
7
6
5
4
3
2
1
0
-
ACME
-
-
-
ADTS2
ADTS1
ADTS0

Бит ACME (6) регистра ADCSRB позволяет использовать мультиплексор АЦП в качестве входов аналогового компаратора при установке 1 ( при этом АЦП должен быть выключен).
Биты ADTS2 - ADTS0 (2 - 0) регистра ADCSRB выбирают источник сигнала по которому будет начинаться преобразование АЦП:
  • 000 - непрерывное преобразование
  • 001 - прерывание от аналогового компаратора
  • 010 - внешнее прерывание INT0
  • 011 - прерывание по совпадению таймера/счетчика T0 с A
  • 100 - прерывание по переполнению таймера/счетчика T0
  • 101 - прерывание по совпадению таймера/счетчика T1 с B
  • 110 - прерывание по переполнению таймера/счетчика T1
  • 111 - прерывание по захвату таймера/счетчика T1
Регистр DIDR0:
7
6
5
4
3
2
1
0
-
-
ADC5D
ADC4D
ADC3D
ADC2D
ADC1D
ADC0D

Биты ADC5D - ADC0D (5 - 0) регистра DIDR0 запрещают использование входов ADC5 - ADC0 (28 - 23 ножки) если в них установить 1.

3 комментария:

  1. Если подать опорное напряжение менее пол вольта, ухудшится ли точность измерений? А если 0,1 В?

    ОтветитьУдалить
    Ответы
    1. Если посмотреть по даташиту, минимальное опорное напряжение для ATmega328p 1В.

      Удалить
  2. При чтении ADCL регистр данных ADC не обновляется до тех пор, пока не будет прочитан ADCH

    ОтветитьУдалить