У овом пројекту ћемо дизајнирати коло за мерење температуре. Овај круг је развијен помоћу „ ЛМ35 “, линеарног сензора напона. Температура се обично мери у „Целзијусовим“ или „Фарахеитовим“. Сензор „ЛМ35“ даје излаз на основу степени Целзијуса.
ЛМ35 је трополни транзисторски уређај. Има ВЦЦ, ГНД и ИЗЛАЗ. Овај сензор даје променљиви напон на излазу на основу температуре.
Као што је приказано на горњој слици, за свако +1 повишење температуре биће + 10мВ веће снаге. Дакле, ако је температура 0 ° Ц, излаз сензора ће бити 0В, ако је температура 10 ° Ц, излаз сензора ће бити + 100мВ, ако је температура 25 ° Ц, излаз сензора ће бити + 250мВ.
Тако да за сада са ЛМ35 добијамо температуру у облику променљивог напона. Овај напон зависан од температуре даје се као улаз у АДЦ (аналогни у дигитални претварач) АТМЕГА32А. Дигитална вредност након добијене конверзије приказана је на ЛЦД екрану 16к2 као температура.
Компоненте потребне
Хардвер: Микроконтролер АТМЕГА32, напајање (5в), АВР-ИСП ПРОГРАММЕР, ЈХД_162АЛЦД (16к2ЛЦД), кондензатор 100уФ (два комада), кондензатор 100нФ, ЛМ35 температурни сензор.
Софтвер: Атмел студио 6.1, прогисп или фласх магиц.
Шема и објашњење
У кругу је ПОРТБ АТМЕГА32 повезан са портом података за ЛЦД. Овде треба имати на уму да онемогућите ЈТАГ комуникацију у ПОРТЦ-у од АТМЕГА променом бајтова осигурача, ако желите да користите ПОРТЦ као нормалан комуникациони порт. На ЛЦД екрану од 16к2 има 16 пинова ако постоји позадинско светло, а ако нема позадинског светла, биће 14 пинова. Може се напајати или оставити игле задњег светла. Сада у 14 пинова постоји 8 пинова за податке (7-14 или Д0-Д7), 2 пина за напајање (1 и 2 или ВСС & ВДД или гнд & + 5в), трећи пин за контролу контраста (ВЕЕ - контролише колико дебели знакови треба да буду приказано), 3 контролна пина (РС & РВ & Е).
У кругу можете приметити да сам узео само два контролна клина, јер ово даје флексибилност бољег разумевања. Контрастни бит и РЕАД / ВРИТЕ се не користе често, тако да могу бити кратко спојени на масу. Ово ЛЦД поставља у највећи контраст и режим читања. Само треба да контролишемо ЕНАБЛЕ и РС пинове да би у складу са тим слали знакове и податке.
Конекције које се раде за ЛЦД дате су у наставку:
ПИН1 или ВСС ------------------ уземљење
ПИН2 или ВДД или ВЦЦ ------------ + 5в снаге
ПИН3 или ВЕЕ --------------- уземљење (даје максималан контраст најбоље за почетнике)
ПИН4 или РС (Избор регистра) --------------- ПД6 од уЦ
ПИН5 или РВ (читање / писање) ----------------- (ставља ЛЦД у режим читања олакшава комуникацију за корисника)
ПИН6 или Е (Омогући) ------------------- ПД5 од уЦ
ПИН7 или Д0 ----------------------------- ПБ0 од уЦ
ПИН8 или Д1 ----------------------------- ПБ1 од уЦ
ПИН9 или Д2 ----------------------------- ПБ2 од уЦ
ПИН10 или Д3 ----------------------------- ПБ3 од уЦ
ПИН11 или Д4 ----------------------------- ПБ4 од уЦ
ПИН12 или Д5 ----------------------------- ПБ5 од уЦ
ПИН13 или Д6 ----------------------------- ПБ6 од уЦ
ПИН14 или Д7 ----------------------------- ПБ7 од уЦ
У кругу можете видети да смо користили 8-битну комуникацију (Д0-Д7), међутим то није обавезно, можемо користити 4-битну комуникацију (Д4-Д7), али са 4-битним комуникацијским програмом постаје помало сложен, па сам одабрао 8-битну комуникација.
Тако из пуког посматрања из горње табеле повезујемо 10 пинова ЛЦД-а на контролер у којем су 8 пинова пинови за податке и 2 пина за контролу. Излазни напон који даје сензор није потпуно линеаран; биће то бучно. Да би се филтрирао шум, кондензатор треба поставити на излаз сензора, као што је приказано на слици.
Пре него што кренемо напред, морамо разговарати о АДЦ АТМЕГА32А. У АТМЕГА32А можемо дати аналогни улаз на било који од осам канала ПОРТА, није важно који ћемо канал одабрати јер су сви исти. Изабраћемо канал 0 или ПИН0 за ПОРТА. У АТМЕГА32А, АДЦ има 10-битну резолуцију, тако да контролер може да детектује минималну промену Вреф / 2 ^ 10, па ако је референтни напон 5В, добијамо прираст дигиталног излаза за сваких 5/2 ^ 10 = 5мВ. Дакле, за сваких 5мВ прираста на улазу имат ћемо прираштај од једног на дигиталном излазу.
Сада морамо поставити регистар АДЦ-а на основу следећих термина:
1. Пре свега морамо омогућити функцију АДЦ у АДЦ-у.
2. Будући да меримо собну температуру, заправо нам нису потребне вредности преко сто степени (1000мВ излаз ЛМ35). Тако можемо поставити максималну вредност или референцу АДЦ на 2,5В.
3. Контролер има функцију конверзије окидача, што значи да се АДЦ конверзија одвија само након спољног окидача, јер не желимо да морамо да подесимо регистре да АДЦ ради у непрекидном режиму слободног рада.
4. За било који АДЦ, учесталост конверзије (аналогна вредност у дигиталну вредност) и тачност дигиталног излаза су обрнуто пропорционалне. Дакле, за бољу тачност дигиталног излаза морамо одабрати мању фреквенцију. За мањи АДЦ сат подешавамо претпродају АДЦ-а на максималну вредност (128). Будући да користимо интерни такт од 1 МХз, сат АДЦ ће бити (1000000/128).
Ово су једине четири ствари које морамо знати да бисмо започели са АДЦ-ом. Све горе наведене четири карактеристике постављају два регистра.
ЦРВЕНА (АДЕН): Овај бит мора бити подешен да омогући АДЦ функцију АТМЕГА-е.
ПЛАВА (РЕФС1, РЕФС0): Ова два бита се користе за подешавање референтног напона (или максималног улазног напона који ћемо дати). Будући да желимо да имамо референтни напон 2,56 В, РЕФС0 и РЕФС1 би требало да буду постављени табелом.
СВЕТЛО ЗЕЛЕНО (АДАТЕ): Овај бит мора бити подешен да би се АДЦ непрекидно изводио (режим слободног рада).
ПИНК (МУКС0-МУКС4): Ових пет битова служи за казивање улазног канала. Будући да ћемо користити АДЦ0 или ПИН0, не морамо постављати ниједан бит, као у табели.
СМЕЂА (АДПС0-АДПС2): ова три бита служе за подешавање предскалара за АДЦ. Пошто користимо прескалар 128, морамо подесити сва три бита.
ТАМНО ЗЕЛЕНО (АДСЦ): овај бит је постављен да АДЦ започне конверзију. Овај бит се може онемогућити у програму када треба да зауставимо конверзију.
Да бисте направили овај пројекат са Ардуином, погледајте овај водич: Дигитални термометар који користи Ардуино
Објашњење програмирања
Рад ТЕМПАРАТУРНОГ МЕРЕЊА најбоље је објашњен у кораку по кораку Ц кода датог у наставку:
#инцлуде // заглавље да би се омогућила контрола протока података над пиновима
#дефине Ф_ЦПУ 1000000 // припојена кристална фреквенција контролера
#инцлуде
#дефине Е 5 // давање имена „енабле“ петом пину ПОРТД-а, јер је повезан на пин за омогућавање ЛЦД-а
#дефине РС-6 // даје име "регистерселецтион" до 6 тх пин на ПОРТД, јер је повезан са пин ЛЦД РС
воид сенд_а_цомманд (непотписана наредба цхар);
воид сенд_а_цхарацтер (непотписани знак карактера);
воид сенд_а_стринг (цхар * стринг_оф_цхарацтерс);
инт маин (воид)
{
ДДРБ = 0кФФ; // стављање портБ и портД као излазне пинове
ДДРД = 0кФФ;
_делаи_мс (50); // давање кашњења од 50мс
ДДРА = 0; // Узимање портА као улаза.
АДМУКС - = (1 <
АДЦСРА - = (1 <0)
{
сенд_а_цхарацтер (* стринг_оф_цхарацтерс ++);
}
}