Суббота, 28.06.2025, 04:30
Приветствую Вас Гость | RSS

AVR

Каталог статей

Главная » Статьи » Программирование МК

Ацп на atmega для чайников :)
  И так в моделях atmega8, 16, 32 и др присутсвует 10-битный АЦП. АЦП(аналого-цифровой преобразователь)-позволяет сравнивать нам узнавать напряжение, которое мы подаем на ножку МК. Это умеют не все ножки МК, в ДШ они подписаны в скобочках как(ADC x, где x-номер АЦП порта).  Внимательно все изучите, в конце статьи будет пример с использованием, что должно поставить все на свои места. 

И так для того что бы запрограммировать АЦП мы должны узнать 2 регистра. 1 из них называется  ADMUX . Разберем его подробнее.
 

*Биты записывают с конечного по начальный, то есть 7,6...0. Иначе говоря в порядке как я их описываю.

1)Биты 7,6 отвечают за выбор напряжения, с которым МК будет сравнивать то, что вы на него подали. Таких вариантов всего 3. 

а) 00  AREF. -Подаем питание с VCC  на него напрямую
б) 01  AVCC с внешним конденсатором на AREF
в) 11 Внутренний калибрированный источник на 2,56 Вольт, с конденсатором 22 пФ , связанным с AREF и GND

2)Бит 5 . Если просто-он определяет точность измерения. Если 1- менее точно, если 0- более

3) Как видно из таблицы 4 бит не используется. Просто 0

4)Биты 3-0. Определяют pin(ADC x) к которому вы подводите напряжение. 

0000      ADC0

0001      ADC1

0010      ADC2

0011      ADC3

0100      ADC4

0101      ADC5

0110      ADC6

0111      ADC7


Итого. Если вы хотите:

1)Сравнивать с внутренним источником на 2,56в - 11

2)Более точные измерения-0

3)0

4)Используете порт (ADC1(в atmega16  и 32 это порт A1) -0001

Получается  - 11000001 

Что бы вписать его в CVAVR сделайте так- ADMUX=0b11000001;


  Второй регистр называется ADCSRA. Он отвечает за контроль и состояние АЦП. Разберем и его. 



*Правила записи такие же как в прошлом регистре. 


1)Бит 7

а)  1  АЦП включен (думаю понятно что если он вам нужен, лучше бы включить) :)

б)  0  АЦП выключен


2)Бит 6. Запуск преобразования

а)  0  Преобразование завершено   v

б)  1  Начать преобразование 


3)Бит 5. Режим работы АЦП

а)  0  Режим однократного преобразования

б)  1  Режим непрерывного преобразования


4)Бит 4.

0, бит(1) устанавливается, когда преобразование совершено


5)Бит 3. Разрешить прерывания от АЦП

а)  0  Прерывания запрещены

б)  1  Прерывания разрешены


6)Биты 2-0. Частота АЦП

000         СК/2

001         СК/2

010         СК/4

011         СК/8

100         СК/16

101         СК/32

110         СК/64

111         СК/128

Например частота вашего МК 8мгц. Если вы хотите, что бы частота АЦП была меньше 200 кГц (чем ниже частота измерений, тем меньше ошибок будет, около 120-150 кГц) то 8 вы должны поделить на 64 (получается 125кГц), это вариант СК/64 (110). 

Итого. Если вы хотите:

1)Включить АЦП (1)

2)0

3)Иметь режим однократного преобразования (0)

4)0

5)Разрешить прерывания АЦП (1)

6)Выберете частоту АЦП, например (110)

Получается 10001110

Что бы вписать его в CVAVR сделайте так- ADCSRA=0b10001110;


Что бы перевести результат в вольты, мы должны вычислить его по формуле:

*adc_data - то, что мы считываем из АЦП

*Питание-сколько мы подали на опорное напряжение (см ADMUX пункт 1). Например если вы выбираете 2,56в (вариант в)-подставляете 2,56

*1023-код максимального или БОЛЬШЕГО чем макс напряжение (в АЦП это 5 вольт). 

V=adc_data * питание / 1023

По этой формуле вы можете узнать сколько вольт подали на АЦП. 


Ссылка на статью с примером АЦП, с использованием дальномера Sharp GP2D120 и узнаем как использовать обработчик прерывания. 


Спасибо!

Подготовленно с помощью этой статьи. 

Категория: Программирование МК | Добавил: vlad1995 (02.11.2012)
Просмотров: 14886 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:

Меню сайта

Категории раздела

Мини-чат

Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Поиск

Наша кнопка


avr123.ucoz.ru