Вовед: Оваа статија детално ја објаснува примената на прилагодениот дигитален температурен сензор DS18B20 во изградбата на дигитален термометар. Вклучувајќи го и принципот на работа, хардверска врска, софтверско програмирање и имплементација на симулации. Обезбедете целосен дијаграм за симулација на протекции, Изворниот код C и анализа на резултатите за да им помогне на читателите длабоко да ја разберат и практикуваат употребата на DS18B20.
Информации за параметрите: напојување: 3.0V – 5.5V; Прилагодлива резолуција: 9 – 12 малку; Температурен опсег: -55 ℃ до +125 ℃; Излез : црвено (VCC), жолта (ПОДАТОЦИ), црна (ГНД);
Што добивате: ќе добиете 4 Сензори за температура DS18B20, 4 адаптер модули и 4 жици за скокач од женски до женски; Модулот за адаптер има отпорник за повлекување, кој може да биде компатибилен со Raspberry Pi без надворешен отпорник;
Сензор за температура DS18B20: големината на куќиштето од нерѓосувачки челик е прибл. 6 x 50 mm/ 0.2 x 2 инчи, а термичкиот кабел за дигитална температура има вкупна должина од прибл. 1 m/ 39.4 инчи, што е доволно долго за да ги задоволи вашите потреби;
Квалитетен материјал: сондата е изработена од квалитетен материјал од нерѓосувачки челик, кој е водоотпорен, отпорен на влага и не е лесен за 'рѓа, за да се спречат кратки споеви;
Широка примена: овој сензор за температура DS18B20 е компатибилен со Raspberry Pi, и широко се применува во следењето на температурата на кабелскиот ров, котел, што, земјоделска стаклена градина, чиста соба, итн.
1. Карактеристики на сензорот DS18B20
Сензорот DS18B20 игра клучна улога во полето на модерното следење на температурата. Може да ја мери температурата со висока точност, а неговата резолуција може да се прилагоди според потребите, за да се постигне следење на температурата со различни степени на прецизност. Покрај тоа, малата големина на DS18B20 го прави погоден за употреба во средини со ограничен простор, и неговите лесни за употреба карактеристики го намалуваат техничкиот праг од почетници до професионалци.
Пред дополнително истражување на параметрите за изведба на DS18B20, потребно е прво да се разбере неговиот принцип на работа. DS18B20 ги пренесува податоците за температурата преку дигитални сигнали, што носи погодност за собирање податоци за температурата. Во споредба со традиционалните аналогни сензори за температура, дигиталните сензори како DS18B20 можат да обезбедат попрецизни отчитувања и се помалку чувствителни на бучава за време на преносот на сигналот.
Со цел целосно да се искористат овие предности на DS18B20, мора да имаме длабоко разбирање за неговите параметри за изведба. Овие параметри вклучуваат опсег на мерење на температурата, точност, резолуција, и напон на напојување. Овие параметри не само што одредуваат дали DS18B20 може да ги задоволи потребите на одредени апликации, но и влијаат на перформансите и доверливоста на целиот систем.
Во ова поглавје, детално ќе ги претставиме параметрите за изведба на DS18B20, анализирајте го неговиот принцип на работа, и истражете ги неговите предности во различни апликации. Преку овие содржини, читателите ќе стекнат подлабоко разбирање за сензорите DS18B20 и ќе постават цврста основа за следните посложени апликации и програмирање.
2. Детално објаснување за протоколот за комуникација со 1-жица на DS18B20
Причината зошто сензорите DS18B20 се широко користени во голема мера се должи на неговиот уникатен протокол за комуникација – 1-Протокол за жична комуникација. Овој протокол ги поедноставува барањата за хардверски врски и обезбедува ефикасен начин за пренос на податоци. Ова поглавје длабоко ќе го анализира работниот механизам и процесот на размена на податоци на 1-линискиот комуникациски протокол за да постави цврста основа за последователна програмска пракса.
2.1 Основи на протоколот за комуникација со 1 жица
2.1.1 Карактеристики на протоколот за комуникација со 1 жица:
Се нарекува и DS18B20 1-Wire Communication Protocol “единечен автобус” технологија. Ги има следните карактеристики: – Единечна автобуска комуникација: За двонасочен пренос на податоци се користи само една податочна линија, што во голема мера ја намалува сложеноста на жици во споредба со традиционалниот метод на комуникација со повеќежичен сензор. – Поврзување со повеќе уреди: Поддржува поврзување на повеќе уреди на една магистрала за податоци, и идентификува и комуницира преку кодови за идентификација на уреди. – Ниска потрошувачка на енергија: За време на комуникацијата, уредот може да биде во состојба на подготвеност со мала моќност кога не учествува во комуникацијата. – Висока прецизност: Со пократко време за пренос на податоци, може да ги намали надворешните пречки и да ја подобри точноста на податоците.
2.1.2 Формат на податоци и анализа на тајмингот на 1-жица комуникација
Форматот на податоци на протоколот за комуникација со 1 жица следи одредено правило за тајминг. Вклучува време на иницијализација, пишувај тајминг и читај тајминг:
Време на иницијализација: Домаќинот прво го започнува времето за откривање присуство (Пулс на присуство) со влечење на автобусот одредено време, а сензорот потоа испраќа пулс на присуство како одговор.
Напишете го времето: Кога домаќинот испраќа тајминг за пишување, прво го спушта автобусот околу 1-15 микросекунди, потоа го ослободува автобусот, и сензорот го спушта автобусот внатре 60-120 микросекунди за да одговори.
Прочитајте го времето: Домаќинот го известува сензорот да испрати податоци со повлекување на автобусот и отпуштање, а сензорот по одредено доцнење ќе го издаде податочниот бит на магистралата.
3. Метод на хардверско поврзување на термометарот
Хардверското поврзување е првиот и најважен чекор во изградбата на дигитален термометар. Правилната врска помеѓу сензорот DS18B20 и микроконтролерот ќе обезбеди прецизен пренос на податоци и ќе обезбеди цврста основа за понатамошно софтверско програмирање и обработка на податоци. Ова поглавје детално ќе ги воведе принципите на дизајнот на интерфејсот помеѓу DS18B20 и микроконтролерот и специфичните чекори за поврзување на колото, и ја покриваат релевантната содржина на напојувањето и уредувањето на сигналот.
3.1 Интерфејс помеѓу DS18B20 и микроконтролерот
3.1.1 Принципи за дизајн на кола за интерфејс
Дизајнот на колото за интерфејс на DS18B20 треба да следи неколку основни принципи за да обезбеди стабилно и ефикасно функционирање на уредот:
Стабилно напојување: DS18B20 може да добие енергија од линијата за податоци “DQ” (повикани “паразитски режим на напојување”), или може самостојно да се напојува со надворешно напојување. Без разлика кој метод се користи, напојувањето мора да биде стабилно за да се спречат грешки во преносот на податоци предизвикани од флуктуации на напојувањето.
Интегритет на сигналот: Бидејќи DS18B20 пренесува податоци преку една линија, интегритетот на сигналот е особено критичен. Неопходно е да се разгледа способноста за спречување на пречки на сигналот и совпаѓањето на електричните карактеристики на сигналот.
Заштита на кола: Заштита од прекумерна струја и електростатско празнење (ESD) мерките за заштита треба да бидат вклучени во дизајнот на колото за да се избегне оштетување на сензорот или микроконтролерот.
3.1.2 Специфични чекори за поврзување на колото
Поврзувањето на DS18B20 со микроконтролер обично ги следи следните чекори:
Поврзување на струја: Поврзете го VDD пинот на DS18B20 со напојување од 3,3V или 5V (во зависност од нивото на напон на микроконтролерот), и иглата GND на линијата за заземјување.
Врска со податочна линија: DQ пинот е поврзан со дигитален влез/излезен пин на микроконтролерот. Со цел да се обезбеди стабилност на преносот на податоци, може да се додаде отпорник за повлекување помеѓу линијата за податоци и напојувањето, со типична вредност од 4,7kΩ до 10kΩ.
Обработка на пулсот игла за ресетирање и присуство: Нормално, пинот за ресетирање (РСТ) и присуство пулсен пин (ПАР) на DS18B20 не треба да се поврзуваат надворешно, тие се внатрешно користени сигнали.
Во овој дел, дизајниравме основно коло преку кое сензорот за температура DS18B20 може да се поврзе со микроконтролер. Следното е пример дијаграм на коло заснован на Arduino Uno и соодветниот опис:
дијаграм на текови LR
DS18B20 — |ВДД| 5V
DS18B20 — |ГНД| ГНД
DS18B20 — |DQ| 2
DQ — |Повлекување| 5V
Меѓу нив, DS18B20 го претставува дигиталниот сензор за температура, 5V е излезна моќност на микроконтролерот, GND е жица за заземјување, и 2 го претставува иглата на Arduino бр. 2, кој се користи за пренос на податоци. Врската помеѓу DQ и 5V го претставува отпорот за повлекување.
3.2 Напојување и уредување на сигналот
3.2.1 Избор на метод за напојување
DS18B20 обезбедува два методи за напојување:
Паразитски режим на напојување: Во овој режим, линијата за податоци (DQ) не само што може да пренесува податоци, но и напојување на DS18B20. Во ова време, напонот на високо ниво на податочната линија треба да биде најмалку 3,0 V за да се обезбеди доволна струја на напојување. Овој режим обично се користи кога должината на магистралата е кратка и преносот на податоци не е премногу чест.
Режим на надворешно напојување: Во овој режим, DS18B20 има независен влез за напојување VDD. Напојувањето со надворешно напојување може да ја подобри јачината на сигналот на сензорот и да ја подобри способноста за спречување на пречки, кој е погоден за пренос на долги растојанија или за чест пренос на податоци.
3.2.2 Филтрирање и стабилизација на сигналот
Со цел да се обезбеди стабилност на сигналот и точно читање на податоците, сигналот треба правилно да се филтрира и стабилизира:
Отпорник за повлекување: Отпорот за повлекување се додава помеѓу линијата за податоци и напојувањето за да се осигура дека линијата за податоци е во состојба на високо ниво кога е во мирување.
Коло за отстранување на нерви: Со цел да се елиминираат погрешните отчитувања предизвикани од линиски пречки или моментални флуктуации на напонот, сигналот може софтверски да се оттргне од страната на микроконтролерот.
ESD заштита: Заштитни компоненти за ESD (како ТВС диоди) се додаваат во портите на сензорите и микроконтролерите за да се спречи оштетување предизвикано од електростатско празнење.
Овој дел дополнително ги разработува факторите што треба да се земат предвид при изборот на напојување и уредување на сигналот во форма на табела:
| Проект | Паразитски режим на напојување | Надворешен режим на напојување | Опис | | — | — | — | — | | Применливи сценарија | Кратки линии, ретки податоци | Долги редови, чести податоци | Изберете според вистинските сценарија на апликацијата | | Стабилност на напојувањето | Пониски | Повисоко | Надворешното напојување се препорачува за долги линии или високи фреквенции | | Цена | Пониски | Повисоко | Надворешното напојување бара дополнителни компоненти за управување со енергијата | | Против мешање | Послаба | Посилни | Надворешното напојување е посоодветно за средини со високи пречки |
Горенаведените методи за поврзување и стратегии за обработка на сигналот можат ефективно да го интегрираат сензорот за температура DS18B20 во кој било систем на микроконтролер. Следното поглавје ќе воведе како да се користи јазикот C:
Пракса за функционално програмирање на DS18B20:
4. DS18B20 дигитален термометар C програмирање на јазикот
4.1 Програмска основа и подготовка на околината
4.1.1 Идеи за дизајн на програми и конструкција на рамка
Пред да започнете со пишување на програмата за јазик C на дигиталниот термометар DS18B20, прво треба да ги воспоставите основните идеи за дизајнирање на програми. Сензорот DS18B20 комуницира со микроконтролерот преку протоколот за комуникација со 1 жица. Затоа, главната задача на програмата е да ги спроведе поврзаните операции на протоколот за комуникација со 1 жица, вклучувајќи иницијализирање на DS18B20, испраќање инструкции, читање податоци за температурата, и конвертирање и прикажување на прочитаните податоци.
Рамката на програмата е грубо поделена на следните делови:
Иницијализација: Иницијализирајте го микроконтролерот и сензорот DS18B20.
Главна јамка: Содржи јамка која континуирано ги чита податоците од сензорот.
1-библиотека со функции за жица за комуникација: Содржи функции за имплементирање на протоколот за комуникација со една жица.
Обработка на податоци: Претворете ги необработените податоци вратени од сензорот во читливи температурни вредности.
Излез на прикажување: Прикажете ги обработените податоци за температурата на LCD екранот или испратете ги на компјутерот преку сериската порта.
4.1.2 Конструкција и конфигурација на околина за развој
Со цел да се програмира и развие дигиталниот термометар DS18B20, треба да ја подготвите околината за развој и соодветно да ја конфигурирате. Следниве се основните чекори за развој:
Изберете ја околината за развој: Изберете ја соодветната интегрирана развојна околина (IDE) според типот на микроконтролерот, како на пример за развој базиран на микроконтролерот од серијата ARM Cortex-M. Можете да користите Keil MDK или STM32CubeIDE.
Конфигурирајте го компајлерот: Според користениот IDE, конфигурирајте го компајлерот за да се осигурате дека кодот на јазикот C може правилно да се компајлира.
Изградете ја таблата за развој на хардвер: Изберете соодветна плочка за развој на микроконтролер, како на пример врз основа на STM32, ESP32, итн.
Поврзете ја таблата за развој: Поврзете го сензорот DS18B20 со наведениот пин на микроконтролерот преку протоколот за комуникација со 1 жица.
Напиши код: Направете нов проект за јазик C во IDE и започнете да пишувате програмски код.
Компајлирајте и дебагирајте: Користете ја алатката IDE за да го компајлирате кодот и да го извршите на таблата за развој за дебагирање.
#вклучуваат <stdio.h>
// DS18B20 декларација на библиотеката за комуникациска функција од прва линија
неважечки DS18B20_Init();
неважечки DS18B20_Reset();
неважечки DS18B20_WriteByte(непотпишан char dat);
непотпишан знак DS18B20_ReadByte();
int DS18B20_ReadTemperature();
int main() {
// Иницијализирајте го сензорот DS18B20
DS18B20_Топлина();
// Главна јамка
додека(1) {
// Прочитајте ја вредноста на температурата
int температура = DS18B20_ReadTemperature();
// Вредноста на излезната температура во серискиот приклучок или друг уред за прикажување
printf(“Тековна температура: %d\n”, температура);
}
враќање 0;
}
4.2 Имплементација на програмата за читање температура DS18B20
4.2.1 Изградба на едножична комуникациска библиотека
Со цел да се реализира отчитувањето на температурата на DS18B20, прво треба да изградите библиотека со функции за комуникација со една жица. Следниве се методите за имплементација на неколку клучни функции:
DS18B20_Топлина(): Иницијализирајте го времето за комуникација со една жица.
DS18B20_Reset(): Ресетирајте го сензорот и откријте го неговиот пулс.
DS18B20_WriteByte(непотпишан char dat): Напишете бајт податоци на сензорот.
DS18B20_ReadByte(): Прочитајте бајт податоци од сензорот.
DS18B20_ReadTemperature(): Прочитајте ја температурата и претворете ја.
Имплементацијата на библиотеката со функции за комуникација со една жица на DS18B20 е доста комплицирана бидејќи бара прецизна контрола на промените на нивото на пиновите за да се следи протоколот за комуникација со една жица. Следното е пример за имплементација на функција:
неважечки DS18B20_Reset() {
// Секвенца за ресетирање на комуникација со една линија, вклучително и повлекување на линијата за податоци, одложување, ослободување на автобусот, и откривање на пулсот на присуство
// …
}
Целта на оваа функција е да испрати пулс за ресетирање на DS18B20. Откако ресетирањето е успешно, DS18B20 ќе врати пулс на присуство.
4.2.2 Имплементација на алгоритам за отчитување на температурата
Читањето на температурната вредност на сензорот DS18B20 е покомплициран процес, бидејќи е потребно да се испратат конкретни инструкции до сензорот во одреден тајминг и правилно да се прочитаат вратените податоци. Алгоритмот за читање на температурната вредност е како што следува:
Ресетирајте го сензорот.
Испратете го “брод РИМ” команда (0xCC).
Испратете го “конвертирате температура” команда (0x44).
Почекајте да заврши конверзијата.
Испратете го “прочитај регистар” команда (0xBE).
Прочитајте два бајти податоци за температурата.
Следниот код покажува како да ја прочитате температурната вредност на DS18B20:
int DS18B20_ReadTemperature() {
непотпишан знак temp_low, температура_висока;
непотпишан int temp;
// Ресетирајте го сензорот и прескокнете ги упатствата за ROM-от
DS18B20_Reset();
DS18B20_WriteByte(0xCC); // Прескокнете ги командите на ROM
// Испрати команда за температура за конверзија
DS18B20_WriteByte(0x44);
// Почекајте да заврши конверзијата. Тука треба да почекате според времето на конверзија на DS18B20
// …
// Ресетирајте го сензорот и прочитајте ги податоците за температурата
DS18B20_Reset();
DS18B20_WriteByte(0xCC); // Прескокнете ги командите на ROM
DS18B20_WriteByte(0xBE); // Прочитајте ја командата за регистрација
// Прочитајте два бајти податоци
temp_low = DS18B20_ReadByte();
temp_high = DS18B20_ReadByte();
// Комбинирајте два бајти податоци во 16-битен цел број
температура = (температура_висока << 8) | temp_low;
// Вратете ја вредноста на температурата, соодветно конвертирање врз основа на резолуцијата на DS18B20
повратна температура;
}
4.2.3 Дебагирање на програми и справување со исклучоци
Кога пишувате програма за читање DS18B20, дебагирањето на програмата и справувањето со исклучоци се многу важни. За време на дебагирање, можеби ќе треба да го користите помошникот за отстранување грешки во сериската порта за да проверите дали вредноста на излезната температура е точна, или користете логички анализатор за следење на времето на сигналот на комуникацијата од прва линија. Ракувањето со исклучоци треба да ги земе предвид хардверските дефекти, грешки во комуникацијата, и абнормални одговори на DS18B20.
Следниве се некои стратегии за дебагирање и справување со исклучоци:
Проверка на податоци: По секое читање на податоците, користете контролна сума или бит за проверка за да ја потврдите точноста на податоците.
Исклучок фаќање: Додајте механизам за снимање исклучоци во програмата, како што е механизмот за повторен истек на време, ресетирајте го сензорот, итн.
Информации за отстранување грешки: Додајте доволно излезни информации за дебагирање на програмата за да помогнете во лоцирање на проблемот.
int main() {
// Иницијализирајте го сензорот DS18B20
DS18B20_Топлина();
// Главна јамка
додека(1) {
внатрешна температура;
// Прочитајте ја температурата и проверете дали има грешки
температура = DS18B20_ReadTemperature();
ако (температура < 0) {
printf(“Грешка при читање на температурата!\n”);
// Можете да изберете да се обидете повторно или други механизми за справување со грешки
} друго {
printf(“Тековна температура: %d\n”, температура);
}
}
враќање 0;
}
Ова поглавје ја воведува основата за програмирање на јазикот C и подготовката на околината на дигиталниот термометар DS18B20, како и спроведување на програмата за отчитување на температурата, и ја нагласува важноста на дебагирање на програми и справување со исклучоци. Преку воведот на ова поглавје, читателите треба да бидат способни да изградат развојна средина, да ја разбере важноста на библиотеката за комуникациска функција од прва линија, и напишете основна програма за читање температура. Следните поглавја дополнително ќе истражуваат во изградбата и употребата на околината за симулација на Proteus, обезбедување на симулациски тест метод за вистинско склопување на хардвер.
5. Дијаграм за симулација на Proteus и анализа на резултатите од симулацијата
5.1 Конструкција на околина за симулација на Proteus
5.1.1 Основна работа на софтверот Proteus
Пред да започнете со изградба на симулациониот модел на дигиталниот термометар DS18B20, прво треба да ја разберете и совладате основната работа на софтверот Proteus. Proteus е моќен софтвер за симулација на електронски кола кој не само што може да дизајнира шеми на кола, но, исто така, дизајнира распоред на PCB на кола и обезбедува функции за симулација. Еве неколку клучни чекори кои ќе ви помогнат да започнете со Proteus:
Отворете го софтверот Proteus и креирајте нов проект.
Пребарувајте и изберете ги потребните компоненти во библиотеката на компоненти, како што се сензорите DS18B20, микроконтролери, напојувања, жици за поврзување, итн.
Повлечете ги избраните компоненти во дизајнерската област и користете го глувчето за да ги поставите и распоредите.
Користете ја алатката за поврзување за да ги поврзете пиновите на секоја компонента за да формирате комплетно коло.
Кликнете двапати на компонента или жица за да ги измените нејзините својства, како што е вредноста на отпорот, напон на напојување, итн.
Проверете дали сите компоненти се правилно поврзани и проверете дали има грешки или пропусти.
5.1.2 Креирајте проект за симулација DS18B20
Чекорите за креирање на проект за симулација за дигиталниот термометар DS18B20 се како што следува:
Стартувајте го Proteus и изберете “Нов проект” да се создаде нов проект.
По поставувањето на името и локацијата на проектот, кликнете “Следно”.
Изберете шаблон за проект, како што се “Врз основа на микропроцесор”, и кликнете “Следно”.
Во “Предмети на проектот” таб, провери “Вклучете стандардни компоненти” и изберете микроконтролер (како што е ПИК, AVR, итн.) и сензор DS18B20.
Кликнете “Заврши” да се заврши креирањето на проектот.
Следно, креирајте шема на кола:
Изберете го “ИЗБЕРЕТЕ УРЕД” алатка, најдете и изберете го микроконтролерот и сензорот DS18B20 во библиотеката на компоненти.
Користете го “ПОСТАВИ УРЕД” алатка за поставување на избраната компонента во дизајнерската област.
Користете го “ЖИЦА” алатка за поврзување на микроконтролерот и соодветните пинови на сензорот DS18B20.
По завршувањето на врската, користете го “ТЕКСТ” алатка за додавање прибелешки на дијаграмот на колото за лесно разбирање и модификација.
5.2 Симулациски тест и анализа на податоци
5.2.1 Поставете параметри и услови за симулација
Пред да започнете со симулација, треба да ги поставите параметрите и условите за извршување на симулацијата:
Кликнете двапати на компонентата на микроконтролерот за да влезете во интерфејсот за поставување својства.
Select the previously written program file path at “Program File”.
Set the power supply parameters to ensure that both the microcontroller and the DS18B20 sensor have the correct power supply voltage.
Следно, set the time parameters for the simulation:
In the simulation control panel, select “Global Settings”.
Adjust the simulation speed and maximum simulation time.
Set appropriate breakpoints to analyze data during the simulation process.
5.2.2 Simulate and read temperature data
Run the simulation and simulate temperature data:
Click the “Play” button in the simulation control panel to start the simulation.
Користете го “DEBUG” tool to view the program running status and variable values.
Simulate the DS18B20 sensor to read the temperature value, which is usually achieved by modifying the virtual thermometer in the simulation environment.
To read temperature data in the simulation, you can refer to the following steps:
Find the temperature simulation settings in the properties of the DS18B20 component.
Modify the temperature value to test the system response under different temperature conditions.
Observe how the microcontroller program processes the temperature data.
5.2.3 Result Analysis and Troubleshooting
Analyze the simulation results and confirm the performance of the thermometer:
Monitor the data in the output window to check whether the temperature reading is accurate.
Use the logic analyzer tool to monitor whether the data communication process is normal.
Check for any abnormal signals or unstable outputs.
Perform fault diagnosis and debugging:
If the temperature reading is inaccurate or there is an error, check the connection method and configuration of the DS18B20.
Analyze the program code to ensure that the first-line communication and data conversion algorithms are implemented correctly.
Користете го “Stop” function of the simulation software to pause the simulation and observe the current status of the system.
English
Afrikaans
العربية
বাংলা
bosanski jezik
Български
Català
粤语
中文(简体)
中文(漢字)
Hrvatski
Čeština
Nederlands
Eesti keel
Suomi
Français
Deutsch
Ελληνικά
हिन्दी; हिंदी
Magyar
Bahasa Indonesia
Italiano
日本語
한국어
Latviešu valoda
Lietuvių kalba
македонски јазик
Bahasa Melayu
Norsk
پارسی
Polski
Português
Română
Русский
Cрпски језик
Slovenčina
Slovenščina
Español
Svenska
ภาษาไทย
Türkçe
Українська
اردو
Tiếng Việt





