- Шта је АДЦ (аналогна у дигиталну конверзију)
- АДЦ у АВР микроконтролеру Атмега16
- Компоненте потребне
- Кружни дијаграм
- Постављање АДЦ контролних регистара у Атмега16
- Програмирање Атмега16 за АДЦ
Једна уобичајена карактеристика која се користи у скоро свакој уграђеној апликацији је АДЦ модул (аналогни у дигитални претварач). Ови аналогно-дигитални претварачи могу очитавати напон са аналогних сензора попут температурног сензора, сензора нагиба, тренутног сензора, Флек сензора итд. У овом упутству научићемо шта је АДЦ и како се користи АДЦ у Атмега16. Овај водич укључује повезивање малог потенциометра са АДЦ пином Атмега16, а 8 ЛЕД се користе за приказ променљивог напона излазне вредности АДЦ у односу на промену улазне вредности АДЦ.
Претходно смо објаснили АДЦ у другим микроконтролерима:
- Како се користи АДЦ у АРМ7 ЛПЦ2148 - Мерење аналогног напона
- Како се користи АДЦ у СТМ32Ф103Ц8 - Мерење аналогног напона
- Како се користи АДЦ у МСП430Г2 - Мерење аналогног напона
- Како се користи АДЦ у Ардуино Уно?
- Коришћење АДЦ модула ПИЦ микроконтролера са МПЛАБ и КСЦ8
Шта је АДЦ (аналогна у дигиталну конверзију)
АДЦ је скраћеница од Аналог то Дигитал Цонвертер. У електроници, АДЦ је уређај који претвара аналогни сигнал попут струје и напона у дигитални код (бинарни облик). У стварном свету већина сигнала је аналогна и било који микроконтролер или микропроцесор разуме бинарни или дигитални језик (0 или 1). Дакле, да би микроконтролери разумели аналогне сигнале, морамо их претворити у дигитални облик. АДЦ то тачно ради за нас. Постоји много врста АДЦ-а доступних за различите примене. Неколико популарних АДЦ-а су флеш, узастопна апроксимација и сигма-делта.
Најјефтинији тип АДЦ је Сукцесивна апроксимација и у овом упутству ће се користити Сукцесивна апроксимација АДЦ. У сукцесивно приближном типу АДЦ-а, низ дигиталних кодова, сваки одговара фиксном аналогном нивоу, генерише се сукцесивно. Интерни бројач се користи за упоређивање са аналогним сигналом у конверзији. Генерација се зауставља када аналогни ниво постане само већи од аналогног сигнала. Дигитални код одговара аналогном нивоу је жељени дигитални приказ аналогног сигнала. Овим је завршено наше мало објашњење о узастопној апроксимацији.
Ако желите да истражите АДЦ дубоко онда можете упутити наш претходни водич о АДЦ-у. АДЦ су доступни у облику ИЦ-а, а такође микроконтролери данас имају уграђени АДЦ. У овом упутству користићемо уграђени АДЦ од Атмега16. Хајде да разговарамо о уграђеном АДЦ-у Атмега16.
АДЦ у АВР микроконтролеру Атмега16
Атмега16 има уграђени 10-битни и 8-канални АДЦ. 10 бит одговара ономе ако је улазни напон 0-5В, тада ће бити подељен на 10 битну вредност, тј. 1024 нивоа дискретних аналогних вредности (2 10 = 1024). Сада 8-канални одговара наменским 8 АДЦ пинова на Атмега16, где сваки пин може читати аналогни напон. Комплетни портА (ГПИО33-ГПИО40) посвећен је раду АДЦ-а. По дефаулту, ПОРТА пинови су општи ИО пинови, то значи да су пинови порта мултиплексирани. Да бисмо користили ове пинове као АДЦ пинове, мораћемо да конфигуришемо одређене регистре посвећене АДЦ контроли. Због тога су регистри познати као АДЦ контролни регистри. Разговарајмо о томе како да подесимо ове регистре да почну функционисати уграђени АДЦ.
АДЦ игле у Атмега16
Компоненте потребне
- Атмега16 микроконтролер ИЦ
- Кристални осцилатор од 16 МХз
- Два кондензатора од 100 нФ
- Два кондензатора од 22 пФ
- Тастер
- Јумпер Вирес
- Бреадбоард
- УСБАСП в2.0
- Лед (било која боја)
Кружни дијаграм
Постављање АДЦ контролних регистара у Атмега16
1. АДМУКС регистар (АДЦ Мултиплекер Селецтион Регистер) :
АДМУКС регистар служи за одабир АДЦ канала и одабир референтног напона. Слика испод приказује преглед АДМУКС регистра. Опис је објашњен у наставку.
- Бит 0-4: битови за избор канала.
МУКС4 |
МУКС3 |
МУКС2 |
МУКС1 |
МУКС0 |
Одабран је АДЦ канал |
0 |
0 |
0 |
0 |
0 |
АДЦ0 |
0 |
0 |
0 |
0 |
1 |
АДЦ1 |
0 |
0 |
0 |
1 |
0 |
АДЦ2 |
0 |
0 |
0 |
1 |
1 |
АДЦ3 |
0 |
0 |
1 |
0 |
0 |
АДЦ4 |
0 |
0 |
1 |
0 |
1 |
АДЦ5 |
0 |
0 |
1 |
1 |
0 |
АДЦ6 |
0 |
0 |
1 |
1 |
1 |
АДЦ7 |
- Бит-5: Користи се за подешавање резултата удесно или улево.
АДЛАР |
Опис |
0 |
Десно прилагодите резултат |
1 |
Лево подесите резултат |
- Бит 6-7: Користе се за одабир референтног напона за АДЦ.
РЕФС1 |
РЕФС0 |
Избор напона напона |
0 |
0 |
АРЕФ, Интерни Вреф је искључен |
0 |
1 |
АВцц са спољним кондензатором на АРЕФ пину |
1 |
0 |
Резервисано |
1 |
1 |
Интерни референтни напон од 2,56 са спољним кондензатором на АРЕФ пину |
Почните сада да конфигуришете ове битове регистра у програму тако да добијемо интерни АДЦ очитање и излаз на све пинове ПОРТЦ-а.
Програмирање Атмега16 за АДЦ
Комплетан програм је дат у наставку. Нарежите програм у Атмега16 помоћу ЈТАГ и Атмел студија и окрећите потенциометар да бисте променили вредност АДЦ. Овде се шифра објашњава ред по ред.
Почните са израдом једне функције за читање АДЦ претворене вредности. Затим проследите вредност канала као 'цхнл' у функцији АДЦ_реад .
унсигнед инт АДЦ_реад (унсигнед цхар цхнл)
Вредности канала морају бити између 0 и 7, јер имамо само 8 АДЦ канала.
цхнл = цхнл & 0б00000111;
Писањем '40', тј. '01000000' у АДМУКС регистар, изабрали смо ПОРТА0 као АДЦ0 где ће аналогни улаз бити повезан за дигиталну конверзију.
АДМУКС = 0к40;
Сада овај корак укључује процес АДЦ конверзије, где уписом ЈЕДНОГ у АДСЦ Бит у АДЦСРА регистар започињемо конверзију. Након тога, сачекајте да АДИФ бит врати вредност када је конверзија завршена. Заустављамо конверзију писањем '1' у АДИФ Бит у АДЦСРА регистар. Када се конверзија доврши, вратите АДЦ вредност.
АДЦСРА - = (1 <
Овде се интерни референтни напон АДЦ бира подешавањем бита РЕФС0. Након тога омогућите АДЦ и одаберите пресцалер као 128.
АДМУКС = (1 <
Сада сачувајте АДЦ вредност и пошаљите је у ПОРТЦ. У ПОРТЦ је повезано 8 ЛЕД-а који ће приказати дигитални излаз у 8-битном формату. Пример који смо приказали варира напон између 0В и 5В користећи један лонац од 1К.
и = АДЦ_реад (0); ПОРТЦ = и;
Дигитални мултиметар се користи за приказ аналогног улазног напона у АДЦ пин-у, а 8 ЛЕД-а се користе за приказ одговарајуће 8-битне вредности АДЦ излаза. Само окрените потенциометар и видите одговарајући резултат на мултиметру као и на ужареним ЛЕД лампицама.
Комплетни код и радни видео су дати у наставку.