AVR
Лого
время последнего обновления:
17.01.2019г.
ГЛАВНАЯ [ 243603 ]
AVR [ 48251 ]
АВТО [ 52114 ]
ЭЛЕКТРОНИКА [ 46548 ]
РАЗНОЕ [ 26079 ]
ПРИКОЛЫ [ 21890 ]
ССЫЛКИ [ 21082 ]
ГОСТЕВАЯ [ 36518 ]
E-MAIL [ 13345 ]
ФОТО (приват) [ 20510 ]


Поиск по сайту :
Ура... заработало. Yndex

Поиск в сети :


Ваш IP:
  54.172.221.7
Script name:
  /main.php
Browser:
  CCBot/2.0 (https://commoncrawl.org/faq/)
Host:
  sin-bad.ru
Request method:
   GET
12  НЕДОРОГОЙ АЦП  html [01.01.01] [26.9 Кб] [5720]


Особенности

      - Выполняется по прерыванию
      - Размер кода: 23 слова
      - Маленькое число внешних компонентов
      - Разрешение: 6 бит
      - Диапазон измерения: 0 – 2 В
      - Работает на всех AVR устройствах с 8-битным таймером/счетчиком и аналоговым компаратором

Введение
      Целью этого приложения являются устройства, нуждающиеся в недорогом и малогабаритном АЦП. Ниже описывается изготовление простого АЦП всего лишь с двумя внешними компонентами, резистором и конденсатором.

Теория преобразования
      Особенность почти всех AVR микроконтроллеров это аналоговый компаратор, который позволяет просто реализовать АЦП. Измеряемый сигнал подается на инвертирующий вход, а образцовый сигнал на не инвертирующий. Образцовый сигнал формируется при зарядке конденсатора через резистор. При зарядке конденсатора, напряжение на нем изменяется по экспоненциальному закону. Если измеряемый диапазон напряжений ограничить 2/5 Vcc, экспонента хорошо аппроксимируется прямой. Напряжение измеряемого сигнала UIN находим, измеряя время необходимое для того, чтобы напряжение на конденсатор превысило измеряемое. Используя один вывод порта В для контроля зарядки и разрядки конденсатора, всего используется только три вывода. Принципиальная схема представлена на рисунке 1.

Рисунок 1. Принципиальная схема

      Постоянная времени R/C цепи должна быть выбрана так, чтобы удовлетворять следующему равенству:

512/f = - R C ln(1 - 2/5) , то есть R C = 1002/f

      Номиналы элементов для некоторых типичных частот генератора приведены в таблице 1. Если постоянная времени отличается от этого, это приведет к ошибке в результате. Поэтому в RC цепи необходимо использовать компоненты с высокой точностью. График напряжения на конденсаторе вместе с прямой линией приведен на рисунке 2. Так как напряжение питания используется как опорное, то оно должно быть стабильным в течение преобразования.

Рисунок 2. Линейность АЦП


Таблица 1. Значения элементов R/C цепочки

XTAL ( мГц)

1

2

4

6

8

10

12

14

16

R (кОм)

100

33

30

30

27

100

56

47

160

C (нФ)

10

15

8.2

5.6

4.7

1

1.5

1.5

0.39

     Чтобы гарантировать правильную работу, конденсатор должен быть разряжен как минимум 200 мкс между преобразованиями. Если конденсатор не разрядить правильно, то нельзя будет измерять маленькие напряжения. Если входное напряжение больше чем 2/5 Vcc, преобразователь будет выдавать максимальное значение. Это происходит благодаря загрузке смещения в регистр таймера/счетчика 0 перед началом преобразования. Таймер будет формировать прерывание по переполнению после 512 циклов (64*8). Это время требуется, чтобы напряжение на конденсаторе достигло 2/5 Vcc. Если напряжение находится в пределах рабочего диапазона, будет формироваться прерывание Аналогового компаратора. Смещение же вычитается и измеренного значения.

Реализация
      АЦП использует прерывания таймера/счетчика 0 и аналогового компаратора. Это освобождает ресурсы MCU в течение преобразования.

Подпрограмма “convert_init” – инициализация АЦП
      Эта подпрограмма вызывается для инициализации АЦП. Она должна быть выполнена перед использованием АЦП. Вызов этой подпрограммы разрешает прерывания компаратора и таймера и устанавливает управляющий вывод как выход. Затем должна быть выполнена инструкция 'SEI', которая разрешает глобальные прерывания, для включения АЦП. Выполнением инструкции 'CLI' , АЦП выключается.

Таблица 2. Параметры подпрограммы “convert_init”

ПАРАМЕТР

ЗНАЧЕНИЕ

Размер кода

6 слов

Выполняемые циклы

10 циклов, в том числе инструкция RET

Используемые регистры

  • Младшие регистры :нет
  • Старшие регистры :1
  • Указатели : нет

Таблица 3. Регистры используемые “convert_init”

РЕГИСТР

НА ВХОДЕ

ВНУТРИ

НА ВЫХОДЕ

R16

 

"result" – рабочий регистр

 

Рисунок 3. Блок схема “convert_init”

“AD_convert” – старт А/Ц преобразования
      Эта подпрограмма используется для запуска А/Ц преобразования. Она загружает в счетчик значение 256 – 64 и запускает счет с частотой XTAL/8. Флаг завершения преобразования ( Т – флаг в регистре статуса) очищается и начинается зарядка конденсатора.

Таблица 4. Параметры подпрограммы “AD_convert”

ПАРАМЕТР

ЗНАЧЕНИЕ

Размер кода

7 слов

Выполняемые циклы

10 циклов, в том числе инструкция RET

Используемые регистры

  • Младшие регистры :нет
  • Старшие регистры :1
  • Указатели : нет
  • Флаги статуса :1

Таблица 5. Регистры используемые “AD_convert”

РЕГИСТР

НА ВХОДЕ

ВНУТРИ

НА ВЫХОДЕ

R16

 

"result" – рабочий регистр

 

SREG

   

T – флаг. Этот флаг показывает, что идет преобразование

Рисунок 4. Блок схема А/Ц преобразования

“ANA_COMP” подпрограмма обработки прерывания
      Эта подпрограмма выполняется когда преобразование закончено. Она загружает значение Таймера/счетчика 0, останавливает таймер и устанавливает флаг завершения преобразования (Т – флаг в SREG). Затем смещение вычитается из значения таймера. Необходимо вычесть на единицу больше чем смещение, так как обработка прерывания требует минимум 7 циклов.

Таблица 6. Параметры подпрограммы “ANA_COMP”

ПАРАМЕТР

ЗНАЧЕНИЕ

Размер кода

7 слов

Выполняемые циклы

11 циклов, в том числе инструкция RET

Используемые регистры

  • Младшие регистры :нет
  • Старшие регистры :2
  • Указатели : нет
  • Флаги статуса :1

Используемые прерывания

Прерывания таймера/счетчика 0 и аналогового компаратора

Таблица 7. Регистры используемые “ANA_COMP”

РЕГИСТР

НА ВХОДЕ

ВНУТРИ

НА ВЫХОДЕ

R16

 

"result" – хранит значение таймера

"result" – содержит результат преобразования

R17

 

"temp"– рабочий регистр

 

SREG

   

T – флаг. Этот флаг показывает, что идет преобразование

Рисунок 5. Блок схема "ANA_COMP"

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

Таблица 8. Общая характеристика программы примера

ПАРАМЕТР

ЗНАЧЕНИЕ

Размер кода

23 слова – только процедура А/Ц преобразования

37 слов – полностью вся программа

Используемые регистры

  • Младшие регистры : нет
  • Старшие регистры :2
  • Указатели :нет
  • Флаги статуса :1
Используемые прерывания Прерывание переполнения таймера/счетчика 0
Прерывание аналогового компаратора
Используемая периферия Таймер/Счетчик 0
Аналоговый компаратор (порт B выводы 0 и 1)
Порт В вывод 2
Порт В (только в примере программы)


      Здесь находятся подпрограммы описанные в документе, а также программа примера, на ассемблере:
Avr400.asm [01.01.01][7.3 Кб][3827]
  (можно просматривать блокнотом)

 



Sinbad
sinbad1@mail.ru
01.01.01г.

 

 

 


GISMETEO.RU: ?????? ? ?. ??????

GISMETEO.RU: ?????? ? ?. ??????




???????@Mail.ru

Rambler's Top100