Съдържание:
- Стъпка 1: Какво е ADC?
- Стъпка 2: Как работи ADC в AVR- Микроконтролер
- Стъпка 3: Формула за преобразуване на ADC
- Стъпка 4: Как да конфигурирате ADC в ATmega8?
- Стъпка 5: Избор на ADLAR
- Стъпка 6: Избор на ADCSRA
- Стъпка 7: Ако искате да вземете ADC стойност, трябва да имате нужда от работа, която е посочена по -долу
- Стъпка 8: Задайте ADC стойност
- Стъпка 9: Конфигурирайте изходния LED извод
- Стъпка 10: Конфигурирайте хардуера на ADC
- Стъпка 11: Активирайте ADC
- Стъпка 12: Стартирайте аналогово -цифрови преобразувания
- Стъпка 13: ДОКАТО завинаги
- Стъпка 14: В края Пълният код е
Видео: Въведение в ADC в AVR микроконтролер - за начинаещи: 14 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
В този урок ще научите всичко ADC в микроконтролер avr
Стъпка 1: Какво е ADC?
ADC или аналогово -цифров преобразувател позволява да се преобразува аналогово напрежение в цифрова стойност, която може да се използва от микроконтролер. Има много източници на аналогови сигнали, които човек би искал да измери. Налични са аналогови сензори, които измерват температура, интензитет на светлината, разстояние, позиция и сила, само за да назовем само няколко.
Стъпка 2: Как работи ADC в AVR- Микроконтролер
AVR ADC позволява на микроконтролера AVR да преобразува аналоговите напрежения в цифрови стойности с малко или никакви външни части. ATmega8 разполага с 10-битов последователен приблизителен ADC. ATmega8 има 7-канален ADC при PortC. ADC има отделен аналогов извод за захранващо напрежение, AVCC. AVCC не трябва да се различава повече от ± 0,3 V от VCC.. Референтното напрежение може да бъде външно отделено на AREF щифта. AVCC се използва като еталон за напрежение. ADC може също да бъде настроен да работи непрекъснато (режимът на свободна работа) или да прави само едно преобразуване.
Стъпка 3: Формула за преобразуване на ADC
Където Vin е напрежението на избрания входен щифт и Vref избраната справка за напрежение
Стъпка 4: Как да конфигурирате ADC в ATmega8?
Следните регистри се използват за внедряване на ADC в ATmega8
Избор на мултиплексор на ADC
Стъпка 5: Избор на ADLAR
Резултат от лявата настройка на ADC Битът ADLAR влияе върху представянето на резултата от преобразуването на ADC в регистъра на данните на ADC. Напишете един на ADLAR, за да коригирате резултата вляво. В противен случай резултатът се коригира правилно
Когато преобразуването на ADC приключи, резултатът се намира в ADCH и ADCL. Когато се чете ADCL, регистърът на данни ADC не се актуализира, докато ADCH не бъде прочетен. Следователно, ако резултатът е оставен коригиран и не се изисква повече от 8-битова прецизност, е достатъчно да се прочете ADCH. В противен случай първо трябва да се прочете ADCL, след това ADCH. Битове за избор на аналогов канал Стойността на тези битове избира кои аналогови входове са свързани към ADC.
Стъпка 6: Избор на ADCSRA
• Бит 7 - ADEN: ADC Enable Записването на този бит към един активира ADC. Записвайки го на нула, ADC се изключва
• Бит 6 - ADSC: ADC Стартиране на преобразуване В режим на единично преобразуване напишете този бит в един, за да стартирате всяко преобразуване. В режим на свободно движение, напишете този бит до един, за да започнете първото преобразуване.
• Бит 5 - ADFR: Избор на ADC Free Running Когато този бит е зададен (един), ADC работи в режим Free Running. В този режим ADC непрекъснато взема проби и актуализира регистрите на данните. Изчистването на този бит (нула) ще прекрати режима на свободно движение.
• Бит 4 - ADIF: Флаг на ADC прекъсване Този бит се задава, когато преобразуването на ADC приключи и регистрите на данните се актуализират. Прекъсването на пълното преобразуване на ADC се изпълнява, ако са зададени битът ADIE и I-битът в SREG. ADIF се изчиства от хардуер при изпълнение на съответния вектор за обработка на прекъсвания. Алтернативно, ADIF се изчиства, като се запише логически такъв към флага.
• Бит 3-ADIE: Разрешаване на ADC прекъсване Когато този бит е записан в единица и I-битът в SREG е зададен, се активира ADC Conversion Complete Interrupt.
• Битове 2: 0 - ADPS2: 0: Избор на битове за предсказване на ADC Според таблицата с данни този прескалар трябва да бъде настроен така, че входната честота на ADC да е между 50 KHz и 200 KHz. ADC часовникът се извлича от системния часовник с помощта на ADPS2: 0 Тези битове определят коефициента на разделение между честотата XTAL и входния часовник към ADC.
Стъпка 7: Ако искате да вземете ADC стойност, трябва да имате нужда от работа, която е посочена по -долу
- Задайте стойност на ADC
- Конфигурирайте изходния LED щифт
- Конфигурирайте хардуера на ADC
- Активирайте ADC
- Стартирайте аналогово -цифрови преобразувания
- ДОКАТО завинаги
АКО стойността на ADC е по -висока от зададената стойност, Включете светодиода ОЩЕ Изключете светодиода
Стъпка 8: Задайте ADC стойност
Код: uint8_t ADCValue = 128;
Стъпка 9: Конфигурирайте изходния LED извод
Код: DDRB | = (1 << PB1);
Стъпка 10: Конфигурирайте хардуера на ADC
Конфигурирайте хардуера на ADC
Това става чрез задаване на битове в контролните регистри за ADC. Първо, нека зададем прескалара за ADC. Според листа с данни този прескалар трябва да бъде настроен така, че входната честота на ADC да е между 50 KHz и 200 KHz. ADC часовникът се извлича от системния часовник. Със системна честота от 1MHz, предсказващото устройство от 8 ще доведе до честота на ADC от 125 Khz. Предварителното мащабиране се задава от битовете ADPS в регистъра ADCSRA. Според листа с данни, и трите бита ADPS2: 0 трябва да бъдат зададени на 011, за да се получи 8 предсказващо устройство.
Код: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
След това нека зададем референтното напрежение на ADC. Това се контролира от битовете REFS в регистъра ADMUX. Следното задава референтното напрежение на AVCC.
Код: ADMUX | = (1 << REFS0);
За да настроите канала, преминал през мултиплексора към ADC, битовете MUX в регистъра ADMUX трябва да бъдат съответно настроени. Тъй като тук използваме ADC5
Код: ADMUX & = 0xF0; ADMUX | = 5;
За да поставите ADC в режим на свободна работа, задайте подходящо наречения ADFR бит в регистъра на ADCSRA:
Код: ADCSRA | = (1 << ADFR);
Ще бъде направена последна промяна в настройките, за да се улесни четенето на стойността на ADC. Въпреки че ADC има резолюция от 10 бита, тази информация често не е необходима. Тази 10 -битова стойност е разделена на два 8 -битови регистри, ADCH и ADCL. По подразбиране най -ниските 8 бита от стойността на ADC се намират в ADCL, като горните два са най -ниските два бита на ADCH. Задавайки бита ADLAR в регистъра ADMUX, можем да подравним стойността на ADC наляво. Това поставя най -високите 8 бита от измерването в регистъра ADCH, а останалите в регистъра ADCL. Ако след това прочетем регистъра ADCH, получаваме 8 -битова стойност, която представлява нашето измерване от 0 до 5 волта като число от 0 до 255. По принцип превръщаме нашето 10 -битово ADC измерване в 8 -битово. Ето кода за задаване на бита ADLAR:
Код:
ADMUX | = (1 << ADLAR); Това завършва настройката на хардуера на ADC за този пример. Трябва да се зададат още два бита, преди ADC да започне да прави измервания.
Стъпка 11: Активирайте ADC
За да активирате ADC, задайте бита ADEN в ADCSRA:
Код: ADCSRA | = (1 << ADEN);
Стъпка 12: Стартирайте аналогово -цифрови преобразувания
За да стартирате измерванията на ADC, битът ADSC в ADCSRA трябва да бъде настроен:
Код: ADCSRA | = (1 << ADSC);
В този момент ADC ще започне непрекъснато вземане на проби от напрежението, представено на ADC5. Кодът до този момент ще изглежда така:
Стъпка 13: ДОКАТО завинаги
Единственото, което остава да направите, е да тествате стойността на ADC и да настроите светодиодите да показват индикация за висока / ниска стойност. Тъй като показанието на ADC в ADCH има максимална стойност 255, беше избрана тестова стойност th, за да се определи дали напрежението е високо или ниско. Едно просто IF/ELSE изявление в циклите FOR ще ни позволи да включим правилния светодиод:
Код
ако (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Включване на LED
}
иначе
{
PORTB & = ~ (1 << PB0); // Изключете LED
}
Стъпка 14: В края Пълният код е
Код:
#включва
int main (void)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Задайте LED1 като изход
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Настройте ADC prescalar на 8 - // 125KHz честота на дискретизация 1MHz
ADMUX | = (1 << REFS0); // Задайте препратка към ADC на AVCC
ADMUX | = (1 << ADLAR); // Наляво регулирайте резултата от ADC, за да позволите лесно 8 -битово четене
ADMUX & = 0xF0;
ADMUX | = 5; // MUX стойностите трябва да бъдат променени, за да се използва ADC0
ADCSRA | = (1 << ADFR); // Задайте ADC на Free-Running Mode
ADCSRA | = (1 << ADEN); // Активиране на ADC
ADCSRA | = (1 << ADSC); // Стартиране на A2D преобразуване, докато (1) // Цикъл завинаги
{
ако (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // Включване на LED1
}
иначе
{
PORTE & = ~ (1 << PB1); // Изключете LED1
}
}
връщане 0;
}
Първо Публикувайте този урок Щракнете тук
Препоръчано:
Въведение във Visuino - Visuino за начинаещи .: 6 стъпки
Въведение във Visuino | Visuino за начинаещи. В тази статия искам да говоря за Visuino, който е друг софтуер за графично програмиране за Arduino и подобни микроконтролери. Ако сте любител на електрониката, който иска да влезе в света на Arduino, но нямате познания за предварително програмиране
Как да използвате мултицет на тамилски - Ръководство за начинаещи - Мултицет за начинаещи: 8 стъпки
Как да използвате мултицет на тамилски | Ръководство за начинаещи | Мултицет за начинаещи: Здравейте приятели, В този урок съм обяснил как да използвам мултицет във всички видове електронни схеми в 7 различни стъпки, като например 1) тест за непрекъснатост при отстраняване на проблеми с хардуера 2) измерване на постоянен ток 3) тестване на диод и светодиод 4) измерване Реси
Въведение в напрежението, тока, съпротивлението и мощността, обяснено за начинаещи: 3 стъпки
Въведение в напрежението, тока, съпротивлението и мощността, обяснено за начинаещи: Този видеоклип е свързан с основните термини в електрониката и е лесен за разбиране, ще се опитам да обясня лесно с концепцията за аналогия на водата, така че помага да се разбере теорията на тестото, така че вижте това видео за изчистване на вашата концепция за ток, напрежение
Въведение в VB Script: Ръководство за начинаещи: 11 стъпки
Въведение в VB Script: Ръководство за начинаещи: *** ((((ALERT: Въпреки че има много стъпки. Това всъщност е доста лесно. Просто обяснявам всичко подробно за начинаещите. Ако просто искате кодът да премине към последната стъпка и ще намерите пълния код там.)))) *** Играя много на Xbox
Въведение в VB Script: Ръководство за начинаещи: Част 2: Работа с файлове: 13 стъпки
Въведение в VB Script: Ръководство за начинаещи: Част 2: Работа с файлове: Ами в последната ми инструкция за VBScript, разгледах как да направя скрипт, който да изключи вашия интернет, за да играе Xbox360. Днес имам друг проблем. Компютърът ми се изключва на случаен принцип и искам да влизам всеки път, когато компютърът