Понедельник, 21.09.2020, 18:28
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Помоги сайту
Поддержи наш сайт
Через WebMoney
U222865683087
R391933670808
Z877043628365
E649133782052

или пополни нашу SMS копилку
SMS.копилка

Ссылки

 Каталог статей
Главная » Статьи » Учимся работать с AVR

Работаем с АЦП
Привет, вот мы с вами пришли к освоению внутреннего АЦП. Итак, приступим. АЦП в микроконтроллере называется ADC, в ATMega8 4 встроеных АЦП (PORTC.0-PORTC-3). 

Я предлагаю для лучшего понимания зделать простой вольтметр от 0 до 5 вольт, в качестве индикации используем светодиоды, которые подключены к порту D. Каждый светодиод будет показывать разницу в 1 вольт.

Создаем новый проект и выбираем следующие параметры:

Выставляем ADC

и все ножки порта D выставляем как выходы.

теперь подкоректирем код которій сгенерирован автоматичиски, к єтому виду:

#include <mega8.h>
#include <delay.h>
#define FIRST_ADC_INPUT 0
#define LAST_ADC_INPUT 0
unsigned char adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];
#define ADC_VREF_TYPE 0x20
interrupt [ADC_INT] void adc_isr(void) //стандартное прерывание по ADC от CVAVR
{
static unsigned char input_index=0;
// Read the 8 most significant bits
// of the AD conversion result
adc_data[input_index]=ADCH;
// Select next ADC input
if (++input_index > (LAST_ADC_INPUT-FIRST_ADC_INPUT))
input_index=0;
ADMUX=(FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff))+input_index;
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
}
void main(void)
{
PORTD=0x00;
DDRD=0xFF;

ADMUX=FIRST_ADC_INPUT | (ADC_VREF_TYPE & 0xff);
ADCSRA=0xCC;
#asm("sei")
while (1)
{
if(adc_data[0]>10) PORTD.0=1; //если значение ADC>10 (~0.2V)
else PORTD.0=0;
if(adc_data[0]>70) PORTD.1=1; //ADC>70 (~1.4)
else PORTD.1=0;
if(adc_data[0]>130) PORTD.2=1; //~2.5
else PORTD.2=0;
if(adc_data[0]>190) PORTD.3=1; //~3.7
else PORTD.3=0;
if(adc_data[0]>250) PORTD.4=1; //~ 4.9
else PORTD.4=0;
};
}

и собираем следующую схему:

В Proteus выбираем частоту на 8 МГц и наш вольтметр готов :). Чтобы его зделать, прошиваем фюзы на 8МГц и подключаем питание к назначеным выводам, и еще обезательно нужно подключить питание к 20 и 21 ножке(+5вольт).

В разделе файлы находиться исходник, прошивка и проект протеуса. 

Огромное спасибо в написании статьи KDAlex'y

Категория: Учимся работать с AVR | Добавил: my-avr (08.12.2008)
Просмотров: 36821 | Комментарии: 21 | Рейтинг: 3.0/5 |
Всего комментариев: 211 2 »
0
20 Игумыч   [Материал]
Ни в коем случае нельзя подавать на вход АЦП 5 вольт!!! Предел 2,5 вольта!!! Можно спалить! evil

0
19 KA   [Материал]
В железе схема не работает !

0
21 Ipmax   [Материал]
Работает! Проверяйте правильность подключения

0
18 Игумыч   [Материал]
А как сделать на 14 вольт линейку из 5-ти свд

0
17 amv2000   [Материал]
angry

0
15 Cerig   [Материал]
Ребят а как сразу два ацп опрашивать у меня подключен ацп 0и1 пожалуйста код

0
16 HiSER   [Материал]
По очереди, выбирается в ADMUX

0
14 Arthur   [Материал]
Когда в кодвижне создаем проект, нужно указать что мы будем работать с ADC, там вкладка спец есть. Там же вкладка есть interrupt, last end. Весь код здесь тупо оттуда скопирован. Она сама генерит код. А дальше в этой переменной adc_data[0] хранится необходимое нам значение или от 0-1023 или от 0-255, если поставить галочку на 8 bit.

0
13 maloi   [Материал]
Спасибо статья отличная само то для начала !!!!на счёт коментов это да жалко не хватает ((

0
12 Емеля   [Материал]
Здесь подобный пример, но только на WINAVR http://radioparty.ru/index.php/prog-avr/program-c/285-lesson-adc-avr

0
11 }{0TT@БЬ)Ч   [Материал]
ДА!!!ребята давайте если возомнили себя умными то будте добры комментировать статьи не все же такие умные как вы!!!!!!
и вообше если создали сайт и тырить инфу с других то берите хоть на себя ответственость комментировать и тогда вам ничего вам ни кто не скажет!

0
10 Сергей   [Материал]
отцепил резистор припаял проводки на вход ацп и на плюс,не чего не подключая все светодиодики начинают гореть потом какието тухнут когда подключаю все норм,че такое может быть?

1-10 11-19
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright My-AVR © 2020
Наша кнопка
У нас появилась кнопка, код кнопки:

Лаборатория самоделок на микроконтроллерах AVR

Форма входа
Наш опрос
Как вам материалы на сайте
Всего ответов: 860
Статистика/Друзья
CY-PR.com



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

РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум Сайт по радиоэлектронике. У нас все просто и интересно… ARV Reserch: Электроника — просто, полезно, увлекательно. Электронные устройства и программные средства для радиолюбителей и профессионалов, только авторские разработки, плагиата нет! Разработки на заказ. AVR projects Создание электронных роботов своими руками Схемы и программы на AVR http://ur5yfv.ucoz.ua/BANNER.gif Блог начинающего эмбеддера. Дай волю паяльнику! Самоделки на all-make.ru Принципиальные схемы Модулі автозапуску бензогенератора та системи АВР, електромонтажні роботи
Хостинг от uCoz