- Компоненте потребне
- МЦП4725 ДАЦ модул (дигитално-аналогни претварач)
- И2Ц комуникација у МЦП4725
- Шема и објашњење
- Програмирање СТМ32Ф103Ц8 за дигиталну у аналогну конверзију
- Тестирање ДАЦ-а помоћу СТМ32
Сви знамо да микроконтролери раде само са дигиталним вредностима, али у стварном свету морамо да се бавимо аналогним сигналима. Због тога постоји АДЦ (аналогни у дигитални претварач) који претвара аналогне вредности из стварног света у дигитални облик како би микроконтролери могли да обрађују сигнале. Али шта ако су нам потребни аналогни сигнали из дигиталних вредности, па ево ДАЦ-а (Дигитал то Аналог Цонвертер).
Једноставан пример за претварач дигиталног у аналогни је снимање песме у студију где уметнички певач користи микрофон и пева песму. Ови аналогни звучни таласи се претварају у дигитални облик, а затим чувају у датотеци дигиталног формата, а када се песма репродукује помоћу сачуване дигиталне датотеке, те дигиталне вредности се претварају у аналогне сигнале за излаз звучника. Дакле, у овом систему се користи ДАЦ.
ДАЦ се може користити у многим апликацијама као што су управљање мотором, контрола осветљености ЛЕД светла, аудио појачало, видео енкодери, системи за прикупљање података итд.
Већ смо повезали МЦП4725 ДАЦ модул са Ардуином. Данас ћемо користити исту МЦП4725 ДАЦ ИЦ за дизајн дигитално-аналогног претварача помоћу микроконтролера СТМ32Ф103Ц8.
Компоненте потребне
- СТМ32Ф103Ц8
- МЦП4725 ДАЦ ИЦ
- 10к потенциометар
- ЛЦД екран од 16к2
- Бреадбоард
- Повезивање жица
МЦП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. Пратите везу да бисте сазнали више о И2Ц комуникацији у СТМ32Ф103Ц8.
И2Ц пинови у СТМ32Ф103Ц8:
СДА: ПБ7 или ПБ9, ПБ11.
СЦЛ: ПБ6 или ПБ8, ПБ10.
Шема и објашњење
Везе између СТМ32Ф103Ц8 и 16к2 ЛЦД-а
ЛЦД Пин Но. |
Име ЛЦД екрана |
Име ПИН-а СТМ32 |
1 |
Приземље (Гнд) |
Приземље (Г) |
2 |
ВЦЦ |
5В |
3 |
ВЕЕ |
Прибадача из центра потенциометра за контраст |
4 |
Изаберите регистар (РС) |
ПБ11 |
5 |
Читање / писање (РВ) |
Приземље (Г) |
6 |
Омогући (ЕН) |
ПБ10 |
7 |
Бит података 0 (ДБ0) |
Нема везе (НЦ) |
8 |
Бит података 1 (ДБ1) |
Нема везе (НЦ) |
9 |
Бит података 2 (ДБ2) |
Нема везе (НЦ) |
10 |
Бит података 3 (ДБ3) |
Нема везе (НЦ) |
11 |
Бит података 4 (ДБ4) |
ПБ0 |
12 |
Бит података 5 (ДБ5) |
ПБ1 |
13 |
Бит података 6 (ДБ6) |
ПЦ13 |
14 |
Бит података 7 (ДБ7) |
ПЦ14 |
15 |
ЛЕД позитиван |
5В |
16 |
ЛЕД негативан |
Приземље (Г) |
Веза између МЦП4725 ДАЦ ИЦ и СТМ32Ф103Ц8
МЦП4725 |
СТМ32Ф103Ц8 |
Мултиметар |
СДА |
ПБ7 |
НЦ |
СЦЛ |
ПБ6 |
НЦ |
ОУТ |
ПА1 |
Позитивна сонда |
ГНД |
ГНД |
Негативна сонда |
ВЦЦ |
3.3В |
НЦ |
Такође је повезан потенциометар, са централним пином повезаним на аналогни улаз ПА1 (АДЦ) СТМ32Ф10Ц8, левим пином повезаним на ГНД и најдеснијим пином повезаним на 3.3В СТМ32Ф103Ц8.
У овом упутству ћемо повезати МЦП4725 ДАЦ ИЦ са СТМ32 и помоћу 10к потенциометра пружити аналогну улазну вредност СТМ32 АДЦ пину ПА0. А затим помоћу АДЦ претворите аналогну вредност у дигитални облик. Након тога пошаљите те дигиталне вредности на МЦП4725 преко И2Ц магистрале. Затим претворите те дигиталне вредности у аналогне помоћу ДАЦ МЦП4725 ИЦ, а затим помоћу другог АДЦ пина ПА1 од СТМ32 проверите аналогни излаз МЦП4725 са пин ОУТ-а. На крају прикажите обе вредности АДЦ и ДАЦ са напонима на ЛЦД дисплеју 16к2.
Програмирање СТМ32Ф103Ц8 за дигиталну у аналогну конверзију
За постављање кода на СТМ32Ф103Ц8 сада није потребан ФТДИ програмер. Једноставно га повежите са рачунаром преко УСБ порта СТМ32 и започните програмирање са АРДУИНО ИДЕ. Посетите овај линк да бисте сазнали више о програмирању вашег СТМ32 у Ардуино ИДЕ. Комплетан програм за овај СТМ32 водич за ДАЦ дат је на крају.
Прво укључите библиотеку за И2Ц и ЛЦД помоћу библиотеке вире.х, СофтВире.х и ликуидцристал.х. Овде сазнајте више о И2Ц у микроконтролеру СТМ32.
#инцлуде
Следеће дефинишите и иницијализујте пинове ЛЦД-а према ЛЦД пиновима повезаним са СТМ32Ф103Ц8
цонст инт рс = ПБ11, ен = ПБ10, д4 = ПБ0, д5 = ПБ1, д6 = ПЦ13, д7 = ПЦ14; ЛЦД ЛикуидЦристал (рс, ен, д4, д5, д6, д7);
Затим дефинишите И2Ц адресу МЦП4725 ДАЦ ИЦ. Подразумевана И2Ц адреса МЦП4725 ДАЦ је 0к60
#дефине МЦП4725 0к60
У воид сетуп ()
Прво започните И2Ц комуникацију на пиновима ПБ7 (СДА) и ПБ6 (СЦЛ) СТМ32Ф103Ц8.
Вире.бегин (); // Почиње И2Ц комуникација
Затим подесите ЛЦД екран у режим 16к2 и прикажите поруку добродошлице.
лцд.бегин (16,2); лцд.принт ("ДИГЕСТ ЦИРЦУИТ"); кашњење (1000); лцд.цлеар (); лцд.сетЦурсор (0,0); лцд.принт ("СТМ32Ф103Ц8"); лцд.сетЦурсор (0,1); лцд.принт ("ДАЦ са МЦП4725"); кашњење (2000); лцд.цлеар ();
У петљи воид ()
1. Прво у бафер ставите вредност контролног бајта (0б01000000).
(010-Поставља МЦП4725 у режиму писања) буффер = 0б01000000;
2. Следећа изјава чита аналогну вредност са пина ПА0 и претвара је у дигиталну вредност у опсегу од 0 до 4096 јер је АДЦ 12-битне резолуције и чува се у променљивој адц .
адц = аналогРеад (ПА0);
3. Следећа изјава је формула која се користи за израчунавање напона од улазне вредности АДЦ (0 до 4096) са референтним напоном од 3.3В.
флоат ипволт = (3,3 / 4096,0) * адц;
4. Ставите најзначајније битне вредности у бафер померањем 4 бита удесно у променљивој АДЦ, а најмање битне вредности битова у бафер померањем 4 бита улево у променљивој адц .
бафер = адц >> 4; буффер = адц << 4;
5. Следећа изјава чита аналогну вредност са АДЦ пина ПА1 СТМ32 који је ДАЦ излаз (МЦП4725 ДАЦ ИЦ'с ОУТПУТ пин). Овај пин се такође може повезати са мултиметром ради провере излазног напона.
унсигнед инт аналогреад = аналогРеад (ПА1);
6. Даље се вредност напона из променљиве аналогнечитавања израчунава помоћу формуле са следећом изјавом.
плутајући опволт = (3.3 / 4096.0) * аналогнипрочитано;
7. У истој воид петљи () постоји неколико других изјава које су објашњене у наставку
Почиње пренос са МЦП4725:
Вире.бегинТрансмиссион (МЦП4725);
Шаље контролни бајт у И2Ц
Вире.врите (бафер);
Шаље МСБ на И2Ц
Вире.врите (бафер);
Шаље ЛСБ на И2Ц
Вире.врите (бафер);
Завршава пренос
Вире.ендТрансмиссион ();
Сада прикажите те резултате на ЛЦД екрану 16к2 помоћу лцд.принт ()
лцд.сетЦурсор (0,0); лцд.принт ("ИП:"); лцд.принт (адц); лцд.сетЦурсор (10,0); лцд.принт ("В:"); лцд.принт (ипволт); лцд.сетЦурсор (0,1); лцд.принт ("Д ОП:"); лцд.принт (аналогнеад); лцд.сетЦурсор (10,1); лцд.принт ("В:"); лцд.принт (опволт); кашњење (500); лцд.цлеар ();
Тестирање ДАЦ-а помоћу СТМ32
Када променимо улазну вредност АДЦ и напон окретањем потенциометра, излазна вредност ДАЦ и напон се такође мењају. Овде су улазне вредности приказане у првом реду, а излазне вредности у другом реду ЛЦД екрана. Мултиметар је такође повезан на излазни пин МЦП4725 да би се потврдио аналогни напон.
Комплетна шифра са демонстрацијским видеом дата је у наставку.