- МЦП4725 ДАЦ модул (дигитално-аналогни претварач)
- И2Ц комуникација у МЦП4725 ДАЦ
- Компоненте потребне
- Кружни дијаграм
- ДАЦ Ардуино програмирање
- Дигитална у аналогна конверзија помоћу МЦП4725 и Ардуино
Сви знамо да микроконтролери раде само са дигиталним вредностима, али у стварном свету морамо да се бавимо аналогним сигналима. Због тога постоји АДЦ (аналогни у дигитални претварач) који претвара аналогне вредности из стварног света у дигитални облик како би микроконтролери могли да обрађују сигнале. Али шта ако су нам потребни аналогни сигнали из дигиталних вредности, па ево ДАЦ-а (Дигитал то Аналог Цонвертер).
Једноставан пример за претварач дигиталног у аналогни је снимање песме у студију где уметнички певач користи микрофон и пева песму. Ови аналогни звучни таласи се претварају у дигитални облик, а затим чувају у датотеци дигиталног формата, а када се песма репродукује помоћу сачуване дигиталне датотеке, те дигиталне вредности се претварају у аналогне сигнале за излаз звучника. Дакле, у овом систему се користи ДАЦ.
ДАЦ се може користити у многим апликацијама као што су управљање мотором, контрола осветљености ЛЕД светла, аудио појачало, видео енкодери, системи за прикупљање података итд.
У многим микроконтролерима постоји интерни ДАЦ који се може користити за производњу аналогног излаза. Али Ардуино процесори попут АТмега328 / АТмега168 немају уграђени ДАЦ. Ардуино има АДЦ функцију (аналогно у дигитални претварач), али нема ДАЦ (дигитално у аналогни претварач). Има 10-битни ДАЦ у унутрашњем АДЦ-у, али овај ДАЦ не може да се користи као самостални. Дакле, овде у овом упутству за Ардуино ДАЦ, користимо додатну плочу названу МЦП4725 ДАЦ модул са Ардуином.
МЦП4725 ДАЦ модул (дигитално-аналогни претварач)
МЦП4725 ИЦ је 12-битни модул дигитално-аналогног претварача који се користи за генерисање излазних аналогних напона од (0 до 5В) и њиме се управља помоћу И2Ц комуникације. Такође долази са уграђеном трајном меморијом ЕЕПРОМ.
Ова ИЦ има 12-битну резолуцију. То значи да користимо (0 до 4096) као улаз за обезбеђивање излазног напона у односу на референтни напон. Максимални референтни напон је 5В.
Формула за израчунавање излазног напона
О / П напон = (референтни напон / резолуција) к дигитална вредност
На пример, ако користимо 5В као референтни напон и претпоставимо да је дигитална вредност 2048. Дакле, за израчунавање ДАЦ излаза.
Напон О / П = (5/4096) к 2048 = 2,5В
Пиноут за МЦП4725
Испод је слика МЦП4725 са јасно назначеним именима пинова.
Клинови МЦП4725 |
Користите |
ОУТ |
Излази аналогни напон |
ГНД |
ГНД за излаз |
СЦЛ |
И2Ц линија серијског сата |
СДА |
Линија серијских података И2Ц |
ВЦЦ |
Улазни референтни напон 5В или 3.3В |
ГНД |
ГНД за унос |
И2Ц комуникација у МЦП4725 ДАЦ
Овај ДАЦ ИЦ може бити повезан са било којим микроконтролером користећи И2Ц комуникацију. И2Ц комуникација захтева само две жице СЦЛ и СДА. Подразумевано је И2Ц адреса за МЦП4725 0к60 или 0к61 или 0к62. За мене је 0к61. Коришћењем И2Ц магистрале можемо повезати више МЦП4725 ДАЦ ИЦ. Једино што треба да променимо И2Ц адресу ИЦ. И2Ц комуникација у Ардуину је већ детаљно објашњена у претходном водичу.
У овом упутству ћемо повезати МЦП4725 ДАЦ ИЦ са Ардуино Уно и пружити аналогну улазну вредност Ардуино пину А0 помоћу потенциометра. Тада ће се АДЦ користити за претварање аналогне вредности у дигитални облик. Након тога те дигиталне вредности се шаљу на МЦП4725 преко И2Ц магистрале да би се претвориле у аналогне сигнале помоћу ДАЦ МЦП4725 ИЦ. Ардуино пин А1 користи се за проверу аналогног излаза МЦП4725 са пин ОУТ-а и на крају приказ вредности АДЦ и ДАЦ и напона на ЛЦД дисплеју од 16к2.
Компоненте потребне
- Ардуино Нано / Ардуино Уно
- Модул ЛЦД екрана од 16к2
- МЦП4725 ДАЦ ИЦ
- 10к потенциометар
- Бреадбоард
- Јумпер Вирес
Кружни дијаграм
Испод табеле приказана је веза између МЦП4725 ДАЦ ИЦ, Ардуино Нано и Мулти-метер
МЦП4725 |
Ардуино Нано |
Мултиметар |
СДА |
А4 |
НЦ |
СЦЛ |
А5 |
НЦ |
А0 или ОУТ |
А1 |
+ ве терминал |
ГНД |
ГНД |
-ве терминал |
ВЦЦ |
5В |
НЦ |
Веза између ЛЦД-а 16к2 и Ардуино Нано-а
ЛЦД 16к2 |
Ардуино Нано |
ВСС |
ГНД |
ВДД |
+ 5В |
В0 |
Од средишњег пин-а потенциометра за подешавање контраста ЛЦД-а |
РС |
Д2 |
РВ |
ГНД |
Е. |
Д3 |
Д4 |
Д4 |
Д5 |
Д5 |
Д6 |
Д6 |
Д7 |
Д7 |
А. |
+ 5В |
К. |
ГНД |
Потенциометар се користи са централном пин повезан са А0 аналогни улаз Ардуино Нано, Лево пин повезан на ГНД и крајње десно пин спојен на 5В на Ардуино.
ДАЦ Ардуино програмирање
Комплетни Ардуино код за ДАЦ лекције дат је на крају са демонстрацијским видео записом. Овде смо објаснили код ред по ред.
Прво, укључите библиотеку за И2Ц и ЛЦД помоћу библиотеке вире.х и ликуидцристал.х.
#инцлуде
Затим дефинишите и иницијализујте пинове ЛЦД-а према пиновима које смо повезали са Ардуино Нано-ом
ЛикуидЦристал ЛЦД (2,3,4,5,6,7); // Дефинишите пинове ЛЦД екрана РС, Е, Д4, Д5, Д6, Д7
Следеће дефинишите И2Ц адресу МЦП4725 ДАЦ ИЦ
#дефине МЦП4725 0к61
У воид сетуп ()
Прво започните И2Ц комуникацију на пиновима А4 (СДА) и А5 (СЦЛ) Ардуино Нано-а
Вире.бегин (); // Почиње И2Ц комуникација
Затим подесите ЛЦД екран у режим 16к2 и прикажите поруку добродошлице.
лцд.бегин (16,2); // Поставља ЛЦД у режиму 16Кс2 лцд.принт („ЦИРЦУИТ ДИГЕСТ“); кашњење (1000); лцд.цлеар (); лцд.сетЦурсор (0,0); лцд.принт ("Ардуино"); лцд.сетЦурсор (0,1); лцд.принт ("ДАЦ са МЦП4725"); кашњење (2000); лцд.цлеар ();
У петљи воид ()
1. Прво у бафер ставите вредност контролног бајта (0б01000000)
(010-поставља МЦП4725 у режиму писања)
бафер = 0б01000000;
2. Следећа изјава чита аналогну вредност са пина А0 и претвара је у дигиталне вредности (0-1023). Ардуино АДЦ има 10-битну резолуцију, па је помножите са 4 даје: 0-4096, јер је ДАЦ 12-битна резолуција.
адц = аналогРеад (А0) * 4;
3. Ова изјава треба да нађе напон из улазне вредности АДЦ (0 до 4096) и референтни напон као 5В
флоат ипволт = (5.0 / 4096.0) * адц;
4. Испод првог реда стављају се најзначајније битне вредности у међуспремник померањем 4 бита удесно у променљивој АДЦ, а други ред ставља најмање значајне вредности бита у међуспремник померањем 4 бита улево у променљивој АДЦ.
бафер = адц >> 4; буффер = адц << 4;
5. Следећа изјава чита аналогни напон са А1 који је ДАЦ излаз (излазни пин МЦП4725 ДАЦ ИЦ). Овај пин се такође може повезати са мултиметром ради провере излазног напона. Овде научите како се користи мултиметар.
унсигнед инт аналогреад = аналогРеад (А1) * 4;
6. Даље се вредност напона из променљиве аналогнечитавања израчунава помоћу следеће формуле
плутајући опволт = (5.0 / 4096.0) * аналогночитавање;
7. Следећа изјава се користи за започињање преноса са МЦП4725
Вире.бегинТрансмиссион (МЦП4725);
Шаље контролни бајт у И2Ц
Вире.врите (бафер);
Шаље МСБ на И2Ц
Вире.врите (бафер);
Шаље ЛСБ на И2Ц
Вире.врите (бафер);
Завршава пренос
Вире.ендТрансмиссион ();
Сада коначно прикажите те резултате на ЛЦД екрану 16к2 помоћу лцд.принт ()
лцд.сетЦурсор (0,0); лцд.принт ("ИП:"); лцд.принт (адц); лцд.сетЦурсор (10,0); лцд.принт ("В:"); лцд.принт (ипволт); лцд.сетЦурсор (0,1); лцд.принт ("Д ОП:"); лцд.принт (аналогнеад); лцд.сетЦурсор (10,1); лцд.принт ("В:"); лцд.принт (опволт); кашњење (500); лцд.цлеар ();
Дигитална у аналогна конверзија помоћу МЦП4725 и Ардуино
Након завршетка свих веза кола и отпремања кода у Ардуино, промените потенциометар и гледајте излаз на ЛЦД-у . Прва линија ЛЦД-а приказује улазну вредност АДЦ-а и напон, а друга линија излазну вредност ДАЦ-а и напон.
Такође можете проверити излазни напон повезивањем мултиметра на ОУТ и ГНД пин МЦП4725.
На овај начин дигиталне вредности можемо претворити у аналогне повезивањем ДАЦ модула МЦП4725 са Ардуином.