Урок 9. Работа с АЦП на примере ATtiny13 в BASCOM-AVR

Узнайте о работе с АЦП на примере ATtiny13 в BASCOM-AVR. Преимущества использования АЦП для создания вольтметров, осциллографов и других устройств.

В очередном уроке я расскажу про АЦП и работу с ним в микроконтроллерах AVR. Начнем, пожалуй, с теории: И так, что же такое АЦП? Это аналого-цифровой преобразователь, который преобразует входной аналоговый сигнал в цифровой. АЦП есть практически во всех современных AVR микроконтроллерах, исключения лишь составляют AVR микроконтроллер ATtiny2313 и ещё некоторые. На практике с помощью AVR микроконтроллера и АЦП можно реализовать много интересных вещей: вольтметры, осциллографы, звукозаписывающие устройства, термометры и это далеко не предел! В общем, применяется АЦП там, где аналоговый сигнал нужно перевести в цифровой.

Работа с АЦП в BASCOM-AVR

Для начала работы с АЦП в BASCOM-AVR нужно сконфигурировать сам АЦП, это делается вот так:
Config Adc= режим считывания, Prescaler = частота дискретизации, Reference = источник опорного напряжения
Режимы считывания: Single — единичное считывание, результаты заносятся в ADCL, ADCH; Free — постоянное считывание, результаты заносятся в ADCL, ADCH, но происходит всё автономно.
Частота дискретизации Prescaler может быть 2,4,8,16,32,64 или Auto, в случае Auto компилятор выбирает подходящую частоту работы АЦП.
Источник опорного напряжения Reference может быть: Aref — внешний источник, Avcc — напряжение питания схемы и Internal — внутренний.
Пример конфигурирования АЦП: Config Adc = Single, Prescaler = Auto, Reference = Internal
После конфигурирования АЦП необходимо его запустить командой Start Adc, теперь можно считать значение с любого канала АЦП командой Getadc(канал АЦП). В документации на микроконтроллер порты с АЦП маркируются так: ADC1, ADC2 и т.д.
Вот так:

Схема подключения ATtiny13 для работы с АЦП

Практика работы АЦП на примере ATtiny13

А теперь попробуем поработать с АЦП на практике и напишем программу в BASCOM-AVR. А что же будет делать программа? Спросите вы. А принцип работы такой: вращая движок переменного резистора светодиоды должны загораться в соответствии с напряжением на выходе переменного резистора. Чем больше напряжение, тем больше светится светодиодов. Для начала возьмём микроконтроллер ATtiny13, три светодиода, четыре резистора, переменный резистор и соберём простую схему что ниже:

Схема подключения ATtiny13 для работы с АЦП

И напишем несложную программку на BASCOM-AVR, применяя полученные знания:

$regfile = «attiny13.dat»
$crystal = 9600000

Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Portb.0 = Output
Config Portb.1 = Output
Config Portb.2 = Output

Start Adc

Do
If Getadc(2) >= 341 Then
Portb.0 = 1
Else
Portb.0 = 0
End If
If Getadc(2) >= 682 Then
Portb.1 = 1
Else
Portb.1 = 0
End If
If Getadc(2) >= 1000 Then
Portb.2 = 1
Else
Portb.2 = 0
End If
Loop
End

Компилируем, прошиваем микроконтроллер и наслаждаемся! Кстати фьюз биты микроконтроллера необходимо установить на работу внутреннего тактового генератора на 9.6МГц. Вот пример установки фьюз битов в программе PonyProg2000:

Схема подключения ATtiny13 для работы с АЦП

Моя сборка на макетной плате с механическими контактами:

Схема подключения ATtiny13 для работы с АЦП

В файлах к статье есть проект в симуляторе Proteus:

Схема подключения ATtiny13 для работы с АЦП

Скачать файлы для урока (проект в Proteus, исходник, прошивка) вы можете ниже

Скачать список элементов (PDF)

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *