- Шта је АДЦ?
- АДЦ у АРМ7-ЛПЦ2148
- АДЦ пинови у АРМ7-ЛПЦ2148
- АДЦ регистри у АРМ7-ЛПЦ2148
- АДкЦР регистар у ЛПЦ2148
- АДкГДР: АДЦ глобални регистар података
- Компоненте потребне
- Кружни дијаграм
- Програмирање АРМ7-ЛПЦ2148 за АДЦ
У свету електронике на тржишту постоји много врста аналогних сензора који се користе за мерење температуре, брзине, померања, притиска итд. Аналогни сензори се користе за производњу излазних података који се непрекидно мењају током времена. Ти сигнали аналогних сензора имају тенденцију да буду врло мале вредности од неколико микроволта (уВ) до неколико миливолти (мВ), па је потребан неки облик појачања. За употребу ових аналогних сигнала у микроконтролеру морамо да претворимо аналогни сигнал у дигитални сигнал, јер микроконтролер разуме и обрађује само дигиталне сигнале. Дакле, већина микроконтролера има уграђену важну функцију названу АДЦ (аналогни у дигитални претварач). Наш микроконтролер АРМ7-ЛПЦ2148 такође има функцију АДЦ.
У овом упутству ћемо видети како се АДЦ користи у АРМ7-ЛПЦ2148 испоручивањем различитог напона на аналогни пин и приказивање на ЛЦД екрану од 16к2 након аналогне у дигиталну конверзију. Почнимо са кратким уводом о АДЦ-у.
Шта је АДЦ?
Као што је раније речено, АДЦ је кратица за аналогну у дигиталну конверзију и користи се за претварање аналогних вредности из стварног света у дигиталне вредности као што су 1 и 0. Па које су то аналогне вредности? То су они које видимо у свакодневном животу попут температуре, брзине, осветљености итд. Ови параметри се мере као аналогни напони помоћу одговарајућих сензора, а затим се ове аналогне вредности претварају у дигиталне вредности за микроконтролере.
Претпоставимо да је наш опсег АДЦ од 0 В до 3,3 В и имамо 10-битни АДЦ, што значи да ће наш улазни напон 0-3,3 волта бити подељен на 1024 нивоа дискретних аналогних вредности (2 10 = 1024). Значење 1024 је резолуција за 10-битни АДЦ, слично за 8-битну АДЦ резолуцију ће бити 512 (28), а за 16-битну АДЦ резолуцију ће бити 65,536 (216). ЛПЦ2148 има 10-битну АДЦ резолуцију.
Ако је стварни улазни напон 0В, МЦУ ће га очитати као 0, а ако је 3.3В, МЦУ ће очитати 1024, а ако је негде између 1,65в, МЦУ ће очитати 512. формуле за израчунавање дигиталне вредности коју ће МЦУ очитати на основу резолуције АДЦ и радног напона.
(АДЦ резолуција / радни напон) = (АДЦ дигитална вредност / стварна вредност напона)
Као на пример ако је референтни напон 3в:
АДЦ смо детаљно објаснили у претходном чланку.
АДЦ у АРМ7-ЛПЦ2148
- ЛПЦ2148 садржи два аналогно-дигитална претварача.
- Ови претварачи су појединачни 10-битни узастопни приближни аналогни дигитални претварачи.
- Док АДЦ0 има шест канала, АДЦ1 има осам канала.
- Стога је укупан број доступних АДЦ улаза за ЛПЦ2148 14.
- Претвара улазни напон само у опсегу (0 до 3,3 В). Не сме прећи 3,3 В референтног напона. Како ће оштетити ИЦ, а такође ће пружити неизвесне вредности.
Неке важне карактеристике АДЦ-а у ЛПЦ2148
- Сваки претварач способан је да изведе више од 400000 10-битних узорака у секунди.
- Сваки аналогни улаз има наменски регистар резултата како би смањио трошкове прекида.
- Режим бурст конверзије за један или више улаза.
- Необвезна конверзија на прелазу на улазном пину или сигналу подударања тајмера.
- Наредба Глобал Старт за оба претварача.
Такође проверите како се користи АДЦ у другим микроконтролерима:
- Како се користи АДЦ у Ардуино Уно?
- Повезивање АДЦ0808 са 8051 микроконтролером
- Коришћење АДЦ модула ПИЦ микроконтролера
- Водич за АДЦ за Распберри Пи
- Како се користи АДЦ у МСП430Г2 - Мерење аналогног напона
- Како се користи АДЦ у СТМ32Ф103Ц8
АДЦ пинови у АРМ7-ЛПЦ2148
Као што је раније речено, у АРМ7-ЛПЦ2148 постоје два канала АДЦ0 са 6 аналогних улазних пинова и АДЦ1 са 8 аналогних улазних пинова. Дакле, у потпуности постоји 14 пинова за аналогне улазе. Доњи дијаграм приказује пинове који су доступни за аналогни улаз.
Пошто су улазни пинови АДЦ мултиплексирани са другим ГПИО пиновима. Морамо их омогућити конфигурисањем регистра ПИНСЕЛ за одабир функције АДЦ.
Табела у наставку приказује пинове АДЦ-а и поштовани АДЦ канал бр у ЛПЦ2148. АД0 је канал 0, а АД1 је канал 1
ЛПЦ2148 Пин |
АДЦ канал бр |
П0.28 |
АД0.1 |
П0.29 |
АД0.2 |
П0.30 |
АД0.3 |
П0.25 |
АД0.4 |
П0.4 |
АД0.6 |
П0.5 |
АД0.7 |
П0.6 |
АД1.0 |
П0.8 |
АД1.1 |
П0.10 |
АД1.2 |
П0.12 |
АД1.3 |
П0.13 |
АД1.4 |
П0.15 |
АД1.5 |
П0.21 |
АД1.6 |
П0.22 |
АД1.7 |
АДЦ регистри у АРМ7-ЛПЦ2148
Регистри се користе у програмирању за коришћење функције А / Д конверзије у ЛПЦ2148.
Испод је листа регистара коришћених у ЛПЦ2148 за А / Д конверзију
1. АДЦР: аналогно-дигитални регистар управљања
Употреба: Овај регистар се користи за конфигурисање А / Д претварача у ЛПЦ2148
2. АДГДР: Аналогни дигиталном глобалном регистру података
Употреба: Овај регистар има ГОТОВО бит за А / Д претварач и РЕЗУЛТАТ претворбе се овде чува.
3. АДИНТЕРН: Регистар за омогућавање аналогних и дигиталних прекида
Употреба: Ово је регистар за омогућавање прекида.
4. АДДР0 - АДДР7: Аналогни регистар података дигиталних канала
Употреба: Овај регистар садржи вредност А / Д за одговарајуће канале.
5. АДСТАТ: Аналогни дигитални регистар статуса.
Употреба: Овај регистар садржи ознаку ГОТОВО за одговарајући АДЦ канал и такође ОВЕРРУН заставицу за одговарајући АДЦ канал.
У овом упутству користићемо само регистре АДЦР и АДГДР. Да видимо о њима детаљно
АДкЦР регистар у ЛПЦ2148
АД0ЦР и АД1ЦР за канал 0 и канал 1 респективно. То је 32-битни регистар. Испод табеле назначена су битна поља за АДЦР регистар.
31:28 |
27 |
26:24 |
23:22 |
21 |
20 |
19:17 |
16 |
15: 8 |
7: 0 |
РЕЗЕРВИСАНО |
ИВИЦА |
ПОЧЕТАК |
РЕЗЕРВИСАНО |
ПДН |
РЕЗЕРВИСАНО |
ЦЛКС |
ПОПУСТ |
ЦЛЦКДИВ |
СЕЛ |
Погледајмо како конфигурисати појединачне регистре
1. СЕЛ: Битови од (0 до 7) се користе за одабир канала за АДЦ конверзију. За сваки канал је додељен један бит. На пример, подешавање Бит-0 учиниће АДЦ узорком АД0.1 за конверзију. А постављањем бита -1 постаће АД0.1; слично подешавање бита-7 ће извршити конверзију за АД0.7. Важан корак је да имамо ПИНСЕЛ у складу са портом који користимо, на пример ПИНСЕЛ0 за ПОРТ0 у ПЛЦ2148.
2. ЦЛЦКДИВ: Битови од (8 до 15) су за делитељ сата. Овде је сат АПБ (сат АРМ периферне магистрале) подељен са овом вредношћу плус један да би се добио такт потребан за А / Д претварач, који би требало да буде мањи или једнак 4,5 МХз, јер користимо методу сукцесивне апроксимације у ЛПЦ2148.
3. БУРСТ: Бит 16 се користи за начин претворбе БУРСТ.
Поставка 1: АДЦ ће извршити конверзију за све канале који су изабрани у СЕЛ битовима.
Поставка 0: Онемогућиће начин претворбе БУРСТ.
4. ЦЛЦКС: Битови од (17 до 19) три бита користе се за одабир резолуције и броја сатова за А / Д конверзију у рафалном режиму, јер је то континуални А / Д режим конверзије.
Вредност за битове (17 до 19) |
Битови (тачност) |
Но оф Цлоцк |
000 |
10 |
11 |
001 |
9 |
10 |
010 |
8 |
9 |
011 |
7 |
8 |
100 |
6 |
7 |
101 |
5 |
6 |
110 |
4 |
5 |
111 |
3 |
4 |
5. ПДН: Бит 21 служи за одабир начина искључивања АДЦ-а у ЛПЦ2148.
- А / Д је у ПДН режиму.
- А / Д је у оперативном режиму
6. СТАРТ: Битови од (24 до 26) су за СТАРТ. Када је режим претворбе БУРСТ ИСКЉУЧЕН подешавањем 0, ови СТАРТ битови су корисни када треба започети А / Д конверзију. СТАРТ се користи и за конверзију контролисану ивицом. Тада постоји улаз у ЦАП или МАТ пин ЛПЦ2148, А / Д почиње да претвара. Проверимо доњу табелу
Вредност за битове (24 до 26) |
Пин'с оф ЛПЦ2148 |
Функција АДЦ |
000 |
Користи се за подешавање АДЦ у ПДН режиму Но Старт |
|
001 |
Започните А / Д конверзију |
|
010 |
ЦАП0.2 / МАТ0.2 |
Започните А / Д конверзију на ЕДГЕ одабраном на пину 27 (расте или пада) на ЦАП / МАТ пиновима ЛПЦ2148 |
011 |
ЦАП0.0 / МАТ0.0 |
|
100 |
МАТ0.1 |
|
101 |
МАТ0.3 |
|
110 |
МАТ1.0 |
|
111 |
МАТ1.1 |
7. ГПРС: од 27 -ог мало је за ЕДГЕ се користи само када се мало ПОЧЕТАК садржи 010-111. Конверзија започиње када постоји ЦАП или МАТ улаз који за то можете видети у горњој табели.
Подешавање : 0 - На падајућем рубу
1 - На растућем рубу
АДкГДР: АДЦ глобални регистар података
АД0ГДР и АД1ГДР за АДЦ канал 0, односно АДЦ канал 1.
То је 32-битни регистар који садржи РЕЗУЛТАТ А / Д конверзије, као и ГОТОВИ бит, што значи да је А / Д конверзија извршена. Испод табеле назначена су битна поља за АДГДР регистар.
31 |
30 |
29:27 |
26:24 |
23:16 |
15: 6 |
5: 0 |
ГОТОВО |
ПРЕКОРАЧИТИ |
РЕЗЕРВИСАНО |
ЦХН |
РЕЗЕРВИСАНО |
РЕЗУЛТАТ |
РЕЗЕРВИСАНО |
1. РЕЗУЛТАТ: Ови битови (6 до 15) садрже резултат А / Д конверзије за изабрани канал у АДЦР СЕЛ регистру. Вредност се чита тек након завршетка А / Д конверзије и то је означено ДОНЕ бит.
ПРИМЕР: За 10-битни АДЦ резултат ускладиштена вредност варира од (0 до 1023).
2. КАНАЛ: Ови битови 24 до 26 садрже број канала за који се врши А / Д конверзија. Претворена дигитална вредност присутна је у РЕСУЛТ биту.
ПРИМЕР: 000 је за АДЦ канал 0, а 001 је за АДЦ канал 1 итд
3. Оверрун: од 30 -ог битни за преплављен се користи у Бурст мод. Када се постави 1, претворена вредност АДЦ се преписује преко ново конвертоване вредности АДЦ. Када се чита регистар, брише се ОВЕРРУН бит.
4. ГОТОВО: 31. бит је за ГОТОВО.
1. сет: Када се заврши А / Д конверзија.
Сет 0: Када се чита регистар и уписује АДЦР.
Видели смо о важним регистрима који се користе у АДЦ у ЛПЦ2148. Сада почнимо да користимо АДЦ у АРМ7.
Компоненте потребне
Хардвер
- АРМ7-ЛПЦ2148 Микроконтролер
- 3.3В регулатор напона ИЦ
- 5В регулатор напона ИЦ
- 10К потенциометар - 2 бр
- ЛЕД (било која боја)
- ЛЦД дисплеј (16Кс2)
- 9В батерија
- Бреадбоард
- Повезивање жица
Софтвер
- Кеил уВисион5
- Магиц Фласх Тоол
Кружни дијаграм
Табела испод приказује везе круга између ЛЦД-а и АРМ7-ЛПЦ2148.
АРМ7-ЛПЦ2148 |
ЛЦД (16к2) |
П0.4 |
РС (Избор регистра) |
П0.6 |
Е (Омогући) |
П0.12 |
Д4 (подаци пин 4) |
П0.13 |
Д5 (подаци пин 5) |
П0.14 |
Д6 (подаци пин 6) |
П0.15 |
Д7 (подаци пин 7) |
Сазнајте више о коришћењу ЛЦД-а са АРМ 7 - ЛПЦ2148.
ВАЖНО: Овде користимо две ИЦ-вредности регулатора напона, једну за 5В ЛЦД екран и другу 3.3В за аналогни улаз, које се потенциометром могу мењати.
Веза између 5В регулатора напона са ЛЦД и АРМ7 Стицк
5В регулатор напона ИЦ |
Пин функција |
ЛЦД и АРМ-7 ЛПЦ2148 |
1.Лефт Пин |
+ Ве од батерије 9В улаза |
НЦ |
2.Центре Пин |
- Ве од батерије |
ВСС, Р / В, К ЛЦД ГНД АРМ7 |
3.десна игла |
Регулирани + 5В излаз |
ВДД, А ЛЦД + 5В АРМ7 |
Потенциометар са ЛЦД екраном
Потенциометар се користи за подешавање контраста ЛЦД екрана. Лонац има три пина, леви пин (1) повезан је на + 5В, а центар (2) на ВЕЕ или В0 ЛЦД модула, а десни пин (3) повезан је на ГНД. Контраст можемо подесити окретањем дугмета.
Веза између ЛПЦ2148 и потенциометра са регулатором напона од 3,3 В
3.3В регулатор напона ИЦ |
Пин функција |
АРМ-7 ЛПЦ2148 |
1.Лефт Пин |
- Ве од батерије |
ГНД пин |
2.Центре Пин |
Регулисани + 3.3В излаз |
На потенциометар Улаз и излаз потенциометра на П0.28 |
3.десна игла |
+ Ве од батерије 9В улаза |
НЦ |
Програмирање АРМ7-ЛПЦ2148 за АДЦ
За програмирање АРМ7-ЛПЦ2148 потребан нам је алат за уВисион и Фласх Магиц. Користимо УСБ кабл за програмирање АРМ7 Стицк преко микро УСБ порта. Код пишемо помоћу Кеила и креирамо хек датотеку, а затим се ХЕКС датотека флешира на АРМ7 стицк користећи Фласх Магиц. Да бисте сазнали више о инсталирању кеил уВисион и Фласх Магиц, и како их користити, следите везу Први кораци са АРМ7 ЛПЦ2148 микроконтролером и програмирајте га помоћу Кеил уВисион.
У овом упутству претварамо аналогни улазни напон (0 до 3,3 В) у дигиталну вредност помоћу АДЦ у ЛПЦ2148 и приказујемо аналогни напон на ЛЦД дисплеју (16к2). За варирање улазног аналогног напона користиће се потенциометар.
Да бисте сазнали више о повезивању ЛЦД екрана са АРМ7-ЛПЦ2148 4-битним режимом, следите ову везу.
Комплетан код за коришћење АДЦ са АРМ 7 дат је на крају овог туторијала, овде се објашњавају неколико делове.
Кораци укључени у програмирање ЛПЦ2148-АДЦ
1. ПИНСЕЛ регистар се користи за одабир пин-а порта ЛПЦ2148 и функције АДЦ као аналогног улаза.
ПИНСЕЛ1 = 0к01000000; // Изаберите П0.28 као АД0.1
2. Изаберите тачност сата и бита за конверзију уписивањем вредности у АДкЦР (АДЦ контролни регистар).
АД0ЦР = 0к00200402; // Поставља АДЦ рад као 10-бит / 11 ЦЛК за конверзију (000)
3. Започните конверзију уписивањем вредности у СТАРТ битове у АДкЦР.
Овде сам написао да 24 тх мало АД0ЦР регистра.
АД0ЦР = АД0ЦР - (1 << 24);
4. Сада да провери урађено мало (31тх) одговарајућих АДкДРи (АДЦ подаци регистар), као што се мења од 0 до 1. Дакле, ми користимо , а петље да стално проверите да ли конверзија врши се на 31. мало података регистровати.
док (! (АД0ДР1 & 0к80000000));
5. Након што је завршени бит постављен на 1, конверзија је успешна, затим читамо резултат из истог АДЦ регистра података АД0ДР1 и вредност чувамо у променљивој.
адцвалуе = АД0ДР1;
Даље користимо формулу за претварање дигиталне вредности у напон и чување у променљивој названој напон .
напон = ((адцвалуе / 1023.0) * 3.3);
5. Следећи редови се користе за приказ дигиталних вредности (0 до 1023) након аналогне у дигиталну конверзију.
адц = адцвалуе; спринтф (дисплаиадц, "адцвалуе =% ф", адц); ЛЦД_ДИСПЛАИ (дисплаиадц); // Приказивање вредности АДЦ (0 до 1023)
6. Следећи редови се користе за приказ улазног аналогног напона (0 до 3,3 В) након аналогне у дигиталну конверзију и након корака 5.
ЛЦД_СЕНД (0кЦ0); спринтф (волтвалуе, "Напон =%. 2ф В", напон); ЛЦД_ДИСПЛАИ (волтвалуе); // Приказ (улазни аналогни напон)
7. Сада на ЛЦД дисплеју морамо приказати улазни напон и дигиталне вредности. Пре тога морамо да иницијализујемо ЛЦД екран и користимо одговарајуће команде за слање поруке на екран.
Испод се користи за иницијализацију ЛЦД-а
воид ЛЦД_ИНИТИЛИЗЕ (воид) // Функција за спремање ЛЦД-а { ИО0ДИР = 0к0000ФФФ0; // поставља пин П0.12, П0.13, П0.14, П0.15, П0.4, П0.6 као ОУТПУТ делаи_мс (20); ЛЦД_СЕНД (0к02); // Иницијализација лцд-а у 4-битном режиму рада ЛЦД_СЕНД (0к28); // 2 реда ( 16Кс2 ) ЛЦД_СЕНД (0к0Ц); // Приказ на показивачу искључен ЛЦД_СЕНД (0к06); // Курсор за аутоматско повећање ЛЦД_СЕНД (0к01); // прикажи јасан ЛЦД_СЕНД (0к80); // Прва позиција у првом реду }
Испод се користи код за приказ вредности на ЛЦД-у
празнина ЛЦД_ДИСПЛАИ (Чар * МСГ) // функција за штампање знакове послао једног по једног { уинт8_т и = 0; вхиле (мсг! = 0) { ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((мсг & 0кФ0) << 8)); // шаље горњи грицкање ИО0СЕТ = 0к00000050; // РС ХИГХ & Омогући ХИГХ за штампање података ИО0ЦЛР = 0к00000020; // РВ ЛОВ режим писања делаи_мс (2); ИО0ЦЛР = 0к00000040; // ЕН = 0, РС и РВ непромењени (тј. РС = 1, РВ = 0) делаи_мс (5); ИО0ПИН = ((ИО0ПИН & 0кФФФФ00ФФ) - ((мсг & 0к0Ф) << 12)); // шаље доњи грицкање ИО0СЕТ = 0к00000050; // РС & ЕН ХИГХ ИО0ЦЛР = 0к00000020; делаи_мс (2); ИО0ЦЛР = 0к00000040; делаи_мс (5); и ++; } }
Испод се користи функција за стварање кашњења
воид делаи_мс (уинт16_т ј) // Функција за кашњење у милисекундама { уинт16_т к, и; за (и = 0; и
Комплетна шифра са демонстрацијским видеом дата је у наставку.