У овом чланку ћемо размотрити различите врсте температурних сензора и како се они могу користити од случаја до случаја. Температура је физички параметар који се мери у степенима. То је суштински део сваког поступка мерења. Подручја која захтевају тачна мерења температуре укључују медицину, биолошка истраживања, електронику, истраживање материјала и топлотне перформансе електричних производа. Уређај који се користи за мерење количине топлотне енергије који нам омогућава да детектујемо физичке промене температуре познат је као температурни сензор. Они су дигитални и аналогни.
Главне врсте сензора
Генерално постоје два начина за добијање података:
1. Контакт... Сензори контактне температуре су у физичком контакту са предметом или супстанцом. Могу се користити за мерење температуре чврстих тела, течности или гасова.
2. Бесконтактни... Неконтактни температурни сензори детектују температуру пресретањем неке инфрацрвене енергије коју емитује објекат или супстанца и откривањем њеног интензитета. Могу се користити само за мерење температуре у чврстим течностима и течностима. Нису у стању да измеру температуру гасова због своје безбојности (прозирности).
Правила избора сензора
Сензор температуре за подно грејање одабире се узимајући у обзир карактеристике као што су снага, врста горње облоге, начин уградње и опрема са додатном функционалношћу.
Снага
Вредност мора засигурно задовољити захтеве и оптерећење топлог пода. У супротном, сензор неће радити исправно. Када је снага грејног елемента већа од снаге самог регулатора, постаје неопходно између њих додатно уградити магнетни покретач - како би се спречило ломљење уређаја због повећаног оптерећења.
Сет карактеристика
Топли под контролише електрична јединица, која вам омогућава подешавање рада грејних елемената. Савремени контролери имају такву функционалност као што су покретање и деактивирање система, подешавање температурних услова, као и подешавање фреквенције повезивања и искључивања грејног елемента.
Лакоћа коришћења
Ако мислите да не разумете програмирање, не би требало да купујете сложен уређај. Чак и узимајући у обзир сву његову функционалност. На пример, старијим људима је прилично проблематично бавити се програмабилним уређајима. Боље да одаберу механичку опцију.
Једноставно повезивање
Пратећа документација за термостат увек означава начин повезивања сензора подног грејања. Терминали се налазе на ивици на једној страни контролне јединице. Након повезивања електричних жица према шеми, биће неопходно проверити перформансе система грејања. Да бисте то урадили, измерите отпор на стезаљкама температурног сензора и електричног кабла за грејање или повежите топли под и повећајте вредности температуре од нуле до индикатора који препоручује СНИП, односно до 30 ° Ц.
Изглед
Термички сензор не би требало да буде само функционално разумљив, већ и атрактиван у дизајну. Модерне дугмад су у разним бојама и облицима. Можете одабрати опцију која је у складу са унутрашњошћу собе.
Врсте температурних сензора
Постоји много различитих врста температурних сензора.Од једноставног укључивања / искључивања термостатског уређаја до сложених система управљања водоснабдевањем, са функцијом загревања, који се користе у процесима гајења биљака. Два главна типа сензора, контактни и бесконтактни, даље се деле на отпорни, напонски и електромеханички сензори. Три најчешће коришћена температурна сензора су:
- Термистори
- Отпорни термоелементи
- Термоелемент
Ови температурни сензори се међусобно разликују у погледу радних параметара.
Уређај
Ово је термоелемент (плоча или шипка) који се састоји од жица које су повезане на стезаљке сензорског елемента.
У зависности од информација о температури, отпор осетљивог дела се мења, односно мења се електрични сигнал који се испоручује на термостат. Тако се одређује апсолутна вредност температуре медија.
Спољни (спољни температурни сензор за подно грејање), по правилу, налази се испод завршне подне облоге и мери своје температурне индикаторе. Унутрашњи (уграђени), налази се унутар регулатора и одређује ниво загревања ваздуха.
Дизајн температурних сензора бира се у зависности од карактеристика система:
Термистор
Термистор је осетљиви отпорник који свој физички отпор мења са температуром. Обично су термистори израђени од керамичког полупроводничког материјала као што је кобалт, манган или никл оксид и пресвучени су стаклом. То су мали равни заптивни дискови који релативно брзо реагују на било коју промену температуре.
Због полупроводних својстава материјала, термистори имају негативни коефицијент температуре (НТЦ), тј. отпор опада са порастом температуре. Међутим, постоје и ПТЦ термистори чији се отпор повећава са порастом температуре.
Термисторски распоред
Предности термистора
- Велика брзина реаговања на промене температуре, тачност.
- Ниска цена.
- Већи отпор у опсегу од 2.000 до 10.000 ома.
- Много већа осетљивост (~ 200 охм / ° Ц) у ограниченом температурном опсегу до 300 ° Ц.
Зависности отпора од температуре
Зависност отпора од температуре изражава се следећом једначином:
Где А, Б, Ц. - то су константе (предвиђене условима израчунавања), Р. - отпор у Охмима, Т. - температура у Келвину. Промену температуре можете лако израчунати из промене отпора или обрнуто.
Како се користи термистор?
Термистори су оцењени као отпорни на собној температури (25 ° Ц). Термистор је пасивни отпорни уређај, па захтева производњу надзора тренутног излазног напона. По правилу су повезани у серију са одговарајућим стабилизаторима који чине мрежни делилац напона.
Пример: Узмите у обзир термистор са отпорношћу од 2,2 К на 25 ° Ц и 50 ома на 80 ° Ц. Термистор је серијски повезан са отпорником од 1 кΩ кроз напајање од 5 В.
Стога се његов излазни напон може израчунати на следећи начин:
На 25 ° Ц, РНТЦ = 2200 ома;
На 80 ° Ц, РНТЦ = 50 ома;
Међутим, важно је напоменути да су на собној температури стандардне вредности отпора различите за различите термисторе, јер су нелинеарне. Термистор има експоненцијалну температурну промену, а самим тим и бета константу, која се користи за израчунавање његовог отпора за дату температуру. Излазни напон и температура отпорника линеарно су повезани.
Карактеристике двожичног струјног интерфејса у температурним сензорима ЛМТ01
Шипак. 4. Организација тренутног интерфејса са ЛМТ01
Као што је горе поменуто, за пренос резултата мерења, ЛМТ01 генерише секвенцу битова у облику импулса за бројање струје. За то су сензору потребна само два кабла (слика 4). Да бисте претворили тренутне импулсе у облик познат дигиталним микровезама, у неким случајевима можете користити један отпорник (али не увек - о томе више у наставку).
Након укључивања, ЛМТ01 започиње циклус мерења који траје до 54 мс (слика 5). За то време се на излазу сензора формира струја ниског нивоа од 28 ... 39 μА. Након тога следи циклус преноса резултата мерења у облику струјних импулса са амплитудом 112 ... 143 μА. Пријемни микроконтролер мора да броји ове импулсе, на пример помоћу уграђеног бројача / тајмера. Пошто је фреквенција сигнала око 82 ... 94 кХз, тада са максималним бројем импулса (4095), трајање преноса може да достигне 50 мс.
Шипак. 5. Временски дијаграми ЛМТ01 сензора
Број избројаних импулса (ПЦ) може се користити за одређивање вредности температуре према формули 1:
, (1)
Тако ће на 0 ° Ц сензор генерисати око 800 импулса.
Нажалост, употреба једног спољног отпорника није увек могућа због ограничења минималног пада напона на сензору ЛМТ01. Током циклуса мерења, пад на сензору мора бити најмање 2,15 В. Током циклуса преноса података, пад напона може се смањити на 2 В. Није тешко направити неке грубе прорачуне.
Размотримо уређај са напоном напајања Вдд = 3,3 В. Ако узмемо минимални дозвољени пад на сензору једнак 2,15 В током мерног циклуса, тада ће се преко отпорника уочити сигнал од највише 1,15 В. За већину дигиталних контролора, логичка јединица је 0, 7 ∙ Вдд, што ће за наш случај бити 2,31 В. Као резултат, испада да је употреба једноставног отпорника немогућа, јер микроконтролер једноставно неће „видети“ сигнал логичка јединица. Излаз из ове ситуације може бити употреба микроконтролера са уграђеним компаратором или склоповима за конверзију нивоа.
Отпорни температурни сензори
Сензори отпорности на температуру (РТД) направљени су од ретких метала, попут платине, чији електрични отпор варира у зависности од температуре.
Отпорни детектори температуре имају позитиван температурни коефицијент и, за разлику од термистора, пружају високу тачност мерења температуре. Међутим, имају лошу осетљивост. Пт100 је најраспрострањенији сензор са стандардном вредношћу отпора од 100 ома на 0 ° Ц. Главни недостатак је висока цена.
Предности таквих сензора
- Широк опсег температура од -200 до 650 ° Ц
- Обезбедити излаз струје са великим падом
- Линеарнији у поређењу са термопаровима и РТД-има
Додатне компоненте и сензорски круг
Поред главних диодних уређаја, коло сензора температуре укључује и низ додатних елемената. Пре свега, то је кондензатор који штити уређај од страних утицаја. Чињеница је да је оперативно појачало веома осетљиво на ефекте наизменичних електромагнетних поља. Кондензатор уклања ову зависност убризгавањем негативне повратне спреге.
Уз учешће транзистора и ценер диоде формира се стабилизовани референтни напон. Овде се користе отпорници веће класе тачности са ниском вредношћу температурног коефицијента отпора. Тиме цела шема добија додатну стабилност. У случају могућих значајних промена температуре, прецизни отпорници се могу изоставити. Користе се само за контролу малог прегревања.
Термоелемент
Термопарни температурни сензори се најчешће користе јер су тачни, раде у широком температурном опсегу од -200 ° Ц до 2000 ° Ц и релативно су јефтини. Термоелемент са жицом и утикачем на фотографији испод:
Рад термопарова
Термоелемент је направљен од два различита метала заварена заједно да би се створила потенцијална разлика у температури. Из температурне разлике између два споја ствара се напон који се користи за мерење температуре. Разлика напона између два споја назива се Сеебецков ефекат.
Ако су оба једињења на истој температури, потенцијал разлике у различитим једињењима је нула, тј. В1 = В2. Међутим, ако су спојеви на различитим температурама, излазни напон у односу на температурну разлику између два споја биће једнак њиховој разлици В1 - В2.
Врсте температурних сензора
Електронско-механички
Најједноставнији и најјефтинији тип регулатора. Његов главни радни део је посебна метална плоча која реагује на повећање или смањење температуре. Систем се укључује и искључује променом закривљености плоче током загревања и хлађења. Подешавање тачне вредности температуре на таквом регулатору неће успети.
Електронски
Уређај има посебан елемент који генерише посебан сигнал. Снага директно зависи од вредности температуре околине. На таквим уређајима можете подесити тачна очитавања температуре грејања и до дела степена. Системом се управља помоћу дугмади и малог екрана.
Програмабилно
Најскупљи од термоелемената. На њему можете подесити одређене вредности, након постизања којих регулатор укључује или искључује читав систем. Захваљујући уређају, у соби се ствара микроклима која одговара одређеној особи. Термостат је могуће конфигурисати тако да се систем укључи у одређено време. Односно, подови се греју пре него што власник дође кући, а истовремено се не троши струја када власник није.
Многи модели имају светао и модеран дизајн и ЛЦД екране који приказују информације и олакшавају фино подешавање.
Рад са готовим библиотекама
Дакле, за рад са температурним сензорима ДС18Б20 на мрежи можете пронаћи огроман број библиотека, али по правилу се користе две најпопуларније. То је библиотека и библиотека. Штавише, друга библиотека је погоднији додатак у односу на прву и не може се користити без ње. Другим речима, пре повезивања библиотеке ДалласТемпературе.х, морате повезати и ОнеВире.х. Могуће је инсталирати одређене библиотеке у Ардуино ИДЕ.
Библиотека ОнеВире.х
Прво размотримо рад са библиотеком ОнеВире.х. Испод је листа његових функција са кратким описом.
- Сензор температуре ОнеВире (уинт8_т пинНумбер)
Ова функција је конструктор класе ОнеВире и креира објект температуреСенсор, тј. отвара комуникациони канал са сензором или групом сензора на пинНумбер пин. У нашим примерима (слике 3-5) ово је „Д2“ иглица Ардуино Нано-а. На њу смо повезали ДК ДС18Б20 магистралу података.
Пример:
Сензор температуре ОнеВире-а
(
Д2
);
// На пин Д2 повезан је сензор или група сензора
- уинт8_т претрага (аддрАрраи)
Функција тражи следећи уређај на 1-Вире магистрали и, када се пронађе, уноси вредност адресе у низ аддрАрраи, враћајући труе. С обзиром да је јединствена адреса сваког сензора 64-битна, аддрАрраи мора бити величине 8 бајтова. Ако претрага не успе, функција враћа фалсе. Треба имати на уму да ће се, када је на једну магистралу повезано неколико температурних сензора, сваки позив функције претраживања адресирати на следећи сензор, затим следећи итд., Све док се не попишу сви уређаји на магистрали. Посебност ове функције је памћење већ обрађених адреса. Да бисте ресетовали ред, морате позвати функцију ресет_сеарцх (), о чему ће бити речи у наставку.
Пример:
бите аддрАрраи
[
8
];
// Низ за чување 64-битне адресе // Ако је уређај уопште одсутан на магистрали или су сви уређаји набројани // приказати одговарајуће информације у монитору порта
ако(!
сензор температуре
.
Претрага
(
аддрАрраи
))
Серијски
.
принтлн
(
„Нема више адреса.“
);
// У супротном, ако је следећи уређај одговорио на захтев за присуство, // прикажемо његову 64-битну адресу на монитору порта
иначе{за(
и
=
0
;
и
<
8
;
и
++)
Серијски
.
штампати
(
аддрАрраи
[
и
],
ХЕКС
);
}
- празнинаресет_сеарцх ()
Као што је горе поменуто, ова функција ресетује ред за гласање уређаја на 1-Вире магистрали до самог почетка. Увек би га требало користити заједно са функцијом претраживања када ова последња врати фалсе. На пример, у нашем случају са 5 сензора на магистрали, позивањем функције претраживања 5 пута можемо добити 5 адреса. Шести пут ће нам функција претраживања вратити фалсе и радиће то са сваком следећом анкетом све док се ред не испразни. Треба обратити пажњу на ово како бисте избегли неразумљиве ситуације.
Пример:
бите аддрАрраи
[
8
];
// Низ за чување 64-битне адресе // Ако је уређај уопште одсутан на магистрали или су сви уређаји набројани // ресетовање реда за гласање како би се поновио циклус претраживања
ако(!
сензор температуре
.
Претрага
(
аддрАрраи
))
сензор температуре
.
ресет_сеарцх
();
- уинт8_тресетовање ()
Функција ресетовања 1 жице иницира процес комуникације. Позива се сваки пут када желимо да комуницирамо са температурним сензором. Враћене вредности могу бити тачне или нетачне. Добићемо праву вредност ако бар један сензор на магистрали одговори на ресетовање импулсом присутности. У супротном, постајемо лажни;
Пример:
ако(!
сензор температуре
.
ресетовање
())
Серијски
.
принтлн
(
„Без сензора у аутобусу“
);иначе
Серијски
.
принтлн
(
„Откривен је сензор“
);
- празнинаизаберите (аддрАрраи)
Функција вам омогућава да одаберете одређени уређај са којим тренутно желимо да радимо. Избор се врши експлицитним навођењем 64-битне адресе унете у низ аддрАрраи. Адреса се може експлицитно поставити писањем у низ или коришћењем оне коју је функција претраживања претходно прочитала. Треба напоменути да се функција ресетовања мора позвати пре позивања функције одабира. Следећим ресетовањем веза са одабраним сензором се прекида до следећег позива за одабир.
Пример:
бите аддрАрраи
[
8
];
// Низ за чување 64-битне адресе // Ако је уређај уопште одсутан на магистрали или су сви уређаји набројани // изнесите одговарајуће информације на монитор порта
ако(!
сензор температуре
.
Претрага
(
аддрАрраи
))
Серијски
.
принтлн
(
„Нема више адреса.“
);
// У супротном, ако је следећи уређај одговорио на захтев за присуство, // изаберите га за даљи рад
иначе{
сензор температуре
.
ресетовање ()
;
// Не заборавите да издате наредбу за ресетовање температуреСенсор
.
изаберите (аддрАрраи)
;
// Наведите низ са адресом читања
}
- празнинапрескочи ()
Функција је релевантна само када се ради са једним сензором на магистрали и једноставно прескаче избор уређаја. Другим речима, не можете да користите функцију претраживања и зато брзо приступате својим јединим сензором.
Пример:
сензор температуре.
ресетовање
();
// Ресетујте температурни сензор
.
прескочити
();
// Изаберите једини сензор за даљи рад са њим
- празнинанапиши (уинт8_тбајт, уинт8_т поверТипе = 0)
Функција шаље бајт података одабраном уређају на магистрали. Аргумент поверТипе специфицира врсту напајања сензора (0 - сензори се напајају директно из спољног извора; 1 - користи се паразитска веза). Други параметар се може изоставити ако се користи спољно напајање, јер је подразумевано 0.
Пример:
сензор температуре
.
ресетовање
();
// Ресетујте температурни сензор
.
прескочити
();
// Одаберите један сензор за наредни рад с њим // Пошаљите наредбу за претварање температуре, // користећи везу са паразитским напајањем из сабирнице података температуреСенсор
.
писати
(
0к44
,
1
);
- уинт8_тчитати ()
Ова функција чита један бајт података које помоћни уређај (сензор) шаље на 1-жичну магистралу.
Пример:
// Прочитајте 9 бајтова података са 1-Вире сабирнице и ставите резултат у низ бајтова низа
[
9
];за(
уинт8_т и
=
0
;
и
<
9
;
и
++){
низ
[
и
]=
сензор температуре
.
читати
();}
- статиц уинт8_т црц8 (цонст уинт8_т * аддр, уинт8_т лен);
Функција је дизајнирана за израчунавање контролне суме. Дизајниран за проверу исправне комуникације са сензором температуре. Овде је аддр показивач на низ података, а лен је број бајтова.
Пример:
бите аддрАрраи
[
8
];
// Низ за чување 64-битне адресе // Ако је уређај уопште одсутан на магистрали или су сви уређаји набројани // изнесите одговарајуће информације на монитор порта
ако(!
сензор температуре
.
Претрага
(
аддрАрраи
))
Серијски
.
принтлн
(
„Нема више адреса.“
);
// У супротном, ако је следећи уређај одговорио на захтев за присуство, // проверимо контролну суму његове адресе
иначе{
// Ако се контролна сума не подудара, прикажите поруку о грешци
ако(
ОнеВире
::
црц8
(
аддрАрраи
,
7
)!=
аддрАрраи
[
7
]){
Серијски
.
принтлн
(
„ЦРЦ није важећи!“
);}}
Испитали смо сваку функцију библиотеке ОнеВире.х одвојено и како бисмо поправили материјал, у наставку ћу дати скицу за очитавање температуре из групе температурних сензора ДС18Б20, који ће бити повезани на пин Д2 помоћу паразитског круга напајања. Скица ће садржати детаљне коментаре о свим потребним тачкама.
#инцлуде // Повезујемо библиотеку за рад са термичким сензорима ДС18Б20ОнеВире дс
(
2
);
// Сензор или група сензора повезана је са Д2 пином Ардуина // ПРЕСЕТ ФУНЦТИОН воид сетуп
(
празнина
){
Серијски
.
започети
(
9600
);
// Иницијализација рада са Сериал-порт} // ГЛАВНИ ЦИКЛУС воид лооп
(
празнина
){
бајт и
;
// Помоћна променљива за присутне петље бајтова
=
0
;
// Променљива за одређивање спремности сензора за комуникацију бајтова типе_с
;
// Варијабла за дефинисање типа сензора температуре на бајт сабирници података
[
12
];
// Низ за чување информација примљених са адд-а бајта сензора
[
8
];
// Низ за чување 64-битне адресе плутајућег Целзијусовог сензора
,
фахренхеит
;
// Варијабле за израчунавање температуре // Ако уређаји на магистрали нису пронађени или су сви уређаји на магистрали побројани // прикажите одговарајуће информације на монитору порта, ресетујте ред // и поново извршите претрагу након чекања од 250 мс
ако(!
дс
.
Претрага
(
аддр
)){
Серијски
.
принтлн
(
„Нема више адреса.“
);
Серијски
.
принтлн
();
дс
.
ресет_сеарцх
();
одлагање
(
250
);повратак;}
// Ако се пронађе следећи уређај на магистрали, прикажите његову јединствену адресу // у монитору порта у хексадецималном облику Серијски
.
штампати
(
"РОМ ="
);за(
и
=
0
;
и
<
8
;
и
++){
Серијски
.
писати
(
‘ ‘
);
Серијски
.
штампати
(
аддр
[
и
],
ХЕКС
);}
// Проверите контролну суму адресе пронађеног уређаја // и ако се не подудара, прикажите одговарајуће информације
ако(
ОнеВире
::
црц8
(
аддр
,
7
)!=
аддр
[
7
]){
Серијски
.
принтлн
(
„ЦРЦ није важећи!“
);повратак;}
Серијски
.
принтлн
();
// Провери нулти бајт адресе који садржи информације // о одређеном типу температурног сензора. У зависности од вредности нулти // бајта, серију чипова излазимо на монитор порта. Ако нулти бајт садржи непознату // вредност, прикажите поруку о непознатој породици сензора температуре.
прекидач(
аддр
[
0
]){случај
0к10
:
Серијски
.
принтлн
(
"Чип = ДС18С20"
);
врсте
=
1
;пауза;случај
0к28
:
Серијски
.
принтлн
(
"Чип = ДС18Б20"
);
врсте
=
0
;пауза;случај
0к22
:
Серијски
.
принтлн
(
"Чип = ДС1822"
);
врсте
=
0
;пауза;Уобичајено:
Серијски
.
принтлн
(
„Уређај није уређај породице ДС18к20.“
);повратак;}
дс
.
ресетовање
();
// Ресетуј магистралу за иницијализацију размене података дс
.
изаберите
(
аддр
);
// Изаберите сензор са тренутном адресом да бисте са њим радили // Пошаљите команду за претварање температуре (према документацији 0к44) // Не заборавите на други параметар „1“, јер податке преносимо преко / / линија са паразитском снагом. дс
.
писати
(
0к44
,
1
);
// Сензор започиње конверзију, што према документацији траје мак. 750мс // Да бисмо били на сигурној страни, организоваћемо паузу од е секунде одлагања
(
1000
);
// Ресетујте магистралу поново да бисте прочитали информације са сензора // сачувајте одговор функције ресет () на садашњу променљиву за даљи рад са присутном
=
дс
.
ресетовање
();
дс
.
изаберите
(
аддр
);
// Поновно одаберите сензор према његовој адреси, пошто је постојао импулс ресетовања // Наредба 0кБЕ, према техничкој документацији, омогућава очитавање интерне меморије // температурног сензора (Сцратцхпад), која се састоји од 9 бајтова. дс
.
писати
(
0кБЕ
);
// Читање и излаз на монитор порта 9 бајтова из интерне меморије серијског термичког сензора
.
штампати
(
"Подаци ="
);
Серијски
.
штампати
(
поклон
,
ХЕКС
);
Серијски
.
штампати
(
» «
);за(
и
=
0
;
и
<
9
;
и
++){
подаци
[
и
]=
дс
.
читати
();
Серијски
.
штампати
(
подаци
[
и
],
ХЕКС
);
Серијски
.
штампати
(
» «
);}
// Провера и излаз на порт надгледају контролну суму примљених података Сериал
.
штампати
(
"ЦРЦ ="
);
Серијски
.
штампати
(
ОнеВире
::
црц8
(
подаци
,
8
),
ХЕКС
);
Серијски
.
принтлн
();
// Покрените процес претварања примљених података у стварну температуру, // која се чува у 0 и 1 бајту меморије за читање. Да бисмо то урадили, комбинујемо ова два // бајта у један 16-битни број инт16_т рав
=(
подаци
[
1
]<<
8
)|
подаци
[
0
];
// Пре даље конверзије треба да дефинишете породицу којој // припада овај сензор (раније смо резултат сачували у променљивој типе_с). // У зависности од породице, температура ће се израчунавати другачије, // пошто ДС18Б20 и ДС1822 враћају 12-битну вредност, док ДС18С20 враћа 9-битну вредност
ако(
врсте
){
// Ако сензор припада породици сирових ДС18С20
=
сиров
<<
3
;
// подразумевана резолуција је 9 бита
ако(
подаци
[
7
]==
0к10
){
сиров
=(
сиров
&
0кФФФ0
)+
12
—
подаци
[
6
];}}иначе{
// Утврдимо на коју тачност мерења је конфигурисан бајт цфг
=(
подаци
[
4
]&
0к60
);
// При нижим резолуцијама можете да ставите на нулу најмање битне битове, // јер нису дефинисани рано
ако(
цфг
==
0к00
)
сиров
=
сиров
&~
7
;
// 9 бита (конверзија траје 93,75 мс)
иначеако(
цфг
==
0к20
)
сиров
=
сиров
&~
3
;
// 10 бита (конверзија траје 187,5 мс)
иначеако(
цфг
==
0к40
)
сиров
=
сиров
&~
1
;
// 11 бита (конверзија траје 375 мс) // Подразумевана прецизност је 12 бита (конверзија траје 750 мс)
}
// Израчунавање и излажење вредности температуре на монитору порта Целзијуса
=(
пловак
)
сиров
/
16.0
;
фахренхеит
=
Целзијус
*
1.8
+
32.0
;
Серијски
.
штампати
(
"Температура ="
);
Серијски
.
штампати
(
Целзијус
);
Серијски
.
штампати
(
"Целзијус,"
);
Серијски
.
штампати
(
фахренхеит
);
Серијски
.
принтлн
(
"Фахренхеит"
);}
Ако је све урађено исправно, у прозору монитора порта требали бисмо видети нешто попут следећег (слика 6):
Слика 6 - резултат рада са библиотеком ОнеВире.х
ДалласТемпературе.х библиотека
Ова библиотека се заснива на претходној и мало поједностављује процес програмирања због разумљивијих функција. Након инсталације, имаћете приступ 14 примера добро документованог кода за све прилике. У оквиру овог чланка размотриће се пример рада са једним сензором.
Резултат програма приказан је на слици 7
Слика №7 - резултат очитавања температуре помоћу библиотеке ДалласТемпературе.х
// Повезујемо потребне библиотеке # инцлуде #инцлуде // Повезујемо магистралу података на пин # 2 Ардуино # дефине ОНЕ_ВИРЕ_БУС 2 // Креирамо инстанцу класе за нашу магистралу и везу до ње ОнеВире онеВире
(
ОНЕ_ВИРЕ_БУС
);
ДалласТемпературни сензори
(&
онеВире
);
// ПРЕСЕТ ФУНКЦИЈА воид сетуп
(
празнина
){
Серијски
.
започети
(
9600
);
// Иницијализација сензора серијског порта
.
започети
();
// Иницијализација аутобуса
}
// ГЛАВНИ ЦИКЛУС
(
празнина
){
Серијски
.
штампати
(
„Очитавање температуре ...“
);
// Пошаљите команду за читање сензора
.
рекуестТемпературес
();
Серијски
.
принтлн
(
"Читати"
);
Серијски
.
штампати
(
„Температура сензора 1:“
);
// Приказивање вредности температуре Сериал
.
штампати
(
сензори
.
гетТемпЦБиИндек
(
0
));}
Сензор температуре КИ-001 са 1-жичним интерфејсом
Овај сензор се користи за тачно мерење температуре. Комуникација са сензором врши се преко 1-жичног интерфејса [1-2], који вам омогућава да повежете неколико сличних уређаја на Ардуино плочу помоћу једног пина микроконтролера [3-4]. Модул је заснован на микросклопу дс18б20 [5].
Величина модула 24 к 15 к 10 мм, тежина 1,3 г. За повезивање се користи трополни конектор. Централни контакт - напајање + 5В, контакт "-" - заједнички, контакт "С" - информативни.
Плоча има црвену ЛЕД лампицу која светли када се размењују информације.
Потрошња струје 0,6 мА током размене информација и 20 μА у режиму мировања.
Повезивање ове врсте сензора са Ардуином добро је описано у многим изворима [6-8]. У овом случају се поново манифестују главне предности Ардуина - свестраност и присуство огромне количине референтних информација. Да бисте радили са сензором, биће вам потребна библиотека ОнеВире [9]. Након учитавања програма из [8] (у првој верзији програма постоји грешка - у заглављу кода не постоји веза #инцлуде либрари), можете да надгледате следеће информације на монитору серијског порта.
Аутор је такође тестирао код из [7], све је одмах функционисало, у монитору серијског порта можете прочитати информације о врсти повезаног сензора и стварним подацима о температури.
Генерално, врло користан сензор који омогућава упознавање са 1-Вире интерфејсом у пракси. Сензор даје тачне податке о температури одмах, корисник не мора да калибрише.