Introduktion: Den här artikeln förklarar i detalj tillämpningen av en anpassad DS18B20 digital temperatursensor för att bygga en digital termometer. Inklusive arbetsprincip, hårdvaruanslutning, mjukvaruprogrammering och simuleringsimplementering. Tillhandahåll kompletta protues simuleringsdiagram, C källkod och resultatanalys för att hjälpa läsare att på djupet förstå och öva på användningen av DS18B20.
Parameterinformation: strömförsörjning: 3.0V – 5.5V; Justerbar upplösning: 9 – 12 bit; Temperaturområde: -55 ℃ till +125 ℃; Produktion : röd (Vcc), gul (DATA), svart (Gard);
Vad du får: du kommer att få 4 DS18B20 temperaturgivare, 4 adaptermoduler och 4 hona till hona bygeltrådar; Adaptermodulen har ett pull-up-motstånd, som kan vara kompatibel med Raspberry Pi utan ett externt motstånd;
DS18B20 temperatursensor: Storleken på rostfritt stålhus är ca. 6 x 50 mm/ 0.2 x 2 tum, och den digitala temperaturens termiska kabel har en total längd på ca. 1 m/ 39.4 tum, vilket är tillräckligt länge för att tillgodose dina behov;
Kvalitetsmaterial: sonden är gjord av kvalitetsmaterial av rostfritt stål, som är vattentät, fuktsäker och inte lätt att rosta, för att förhindra kortslutning;
Bred applikation: denna DS18B20 temperatursensor är kompatibel med Raspberry Pi, och tillämpas allmänt vid temperaturövervakning av kabelgrav, panna, vad, jordbruksväxthus, ren, etc.
1. DS18B20 sensoregenskaper
DS18B20-sensorn spelar en nyckelroll inom området modern temperaturövervakning. Den kan mäta temperatur med hög noggrannhet, och dess upplösning kan justeras efter behov, för att uppnå temperaturövervakning med olika grader av precision. Dessutom, den lilla storleken på DS18B20 gör den lämplig för användning i miljöer med begränsat utrymme, och dess lättanvända egenskaper minskar den tekniska tröskeln från nybörjare till proffs.
Innan du utforskar prestandaparametrarna för DS18B20 ytterligare, det är nödvändigt att först förstå dess arbetsprincip. DS18B20 kommunicerar temperaturdata via digitala signaler, vilket underlättar insamlingen av temperaturdata. Jämfört med traditionella analoga temperaturgivare, digitala sensorer som DS18B20 kan ge mer exakta avläsningar och är mindre känsliga för brus under signalöverföring.
För att fullt ut kunna utnyttja dessa fördelar med DS18B20, vi måste ha en djup förståelse för dess prestandaparametrar. Dessa parametrar inkluderar temperaturmätningsområde, noggrannhet, upplösning, och matningsspänning. Dessa parametrar avgör inte bara om DS18B20 kan möta behoven för specifika applikationer, men påverkar också hela systemets prestanda och tillförlitlighet.
I detta kapitel, vi kommer att presentera prestandaparametrarna för DS18B20 i detalj, analysera dess arbetsprincip, och utforska dess fördelar i olika tillämpningar. Genom detta innehåll, läsare kommer att få en djupare förståelse för DS18B20-sensorer och lägga en solid grund för efterföljande mer komplexa applikationer och programmering.
2. Detaljerad förklaring av DS18B20:s 1-trådskommunikationsprotokoll
Anledningen till att DS18B20-sensorer används i stor utsträckning beror till stor del på dess unika kommunikationsprotokoll – 1-Trådkommunikationsprotokoll. Detta protokoll förenklar kraven för hårdvaruanslutningar och ger ett effektivt sätt att överföra data. Detta kapitel kommer att på djupet analysera arbetsmekanismen och datautbytesprocessen för 1-linjes kommunikationsprotokoll för att lägga en solid grund för efterföljande programmeringsövningar.
2.1 Grunderna i 1-Wire Communication Protocol
2.1.1 Funktioner i 1-trådskommunikationsprotokoll:
DS18B20 1-Wire Communication Protocol kallas också “enkel buss” teknologi. Den har följande funktioner: – Enkel busskommunikation: Endast en datalinje används för dubbelriktad dataöverföring, vilket avsevärt minskar komplexiteten i kabeldragningen jämfört med den traditionella flertrådssensorkommunikationsmetoden. – Anslutning till flera enheter: Stöder anslutning av flera enheter på en databuss, och identifierar och kommunicerar genom enhetsidentifikationskoder. – Låg strömförbrukning: Under kommunikation, enheten kan vara i ett standbyläge med låg effekt när den inte deltar i kommunikationen. – Hög precision: Med kortare dataöverföringstid, det kan minska externa störningar och förbättra datanoggrannheten.
2.1.2 Dataformat och tidsanalys av 1-trådskommunikation
Dataformatet för 1-trådskommunikationsprotokollet följer en specifik tidsregel. Det inkluderar initialiseringstid, skriv timing och läs timing:
Initialiseringstidpunkt: Värden startar först närvarodetekteringen (Närvaropuls) genom att dra ner bussen under en viss tid, och sensorn sänder sedan en närvaropuls som svar.
Skriv timing: När värden skickar en skrivtid, den drar först ner bussen i ungefär 1-15 mikrosekunder, släpper sedan bussen, och sensorn drar ner bussen in 60-120 mikrosekunder att svara.
Läs timing: Värden meddelar sensorn att skicka data genom att dra ner bussen och släppa den, och sensorn kommer att mata ut databiten på bussen efter en viss fördröjning.
3. Termometer hårdvara anslutningsmetod
Hårdvaruanslutning är det första och viktigaste steget i att bygga en digital termometer. Den korrekta anslutningen mellan DS18B20-sensorn och mikrokontrollern säkerställer korrekt dataöverföring och ger en solid grund för ytterligare programvaruprogrammering och databehandling. Det här kapitlet kommer i detalj att introducera gränssnittsdesignprinciperna mellan DS18B20 och mikrokontroller och de specifika stegen för kretsanslutning, och täcka relevant innehåll av strömförsörjning och signalkonditionering.
3.1 Gränssnitt mellan DS18B20 och mikrokontroller
3.1.1 Gränssnittskretsdesignprinciper
Gränssnittskretsdesignen för DS18B20 måste följa flera kärnprinciper för att säkerställa stabil och effektiv drift av enheten:
Stabil strömförsörjning: DS18B20 kan få ström från dataledningen “DQ” (kallad “parasitisk kraftläge”), eller den kan drivas oberoende av en extern strömkälla. Oavsett vilken metod som används, strömförsörjningen måste vara stabil för att förhindra dataöverföringsfel orsakade av strömförsörjningsfluktuationer.
Signalintegritet: Eftersom DS18B20 överför data via en enda linje, signalintegritet är särskilt kritisk. Det är nödvändigt att överväga anti-interferensförmågan hos signalen och matchningen av signalens elektriska egenskaper.
Kretsskydd: Överströmsskydd och elektrostatisk urladdning (ESD) skyddsåtgärder bör inkluderas i kretsdesignen för att undvika skador på sensorn eller mikrokontrollern.
3.1.2 Specifika steg för kretsanslutning
Att ansluta DS18B20 till en mikrokontroller följer vanligtvis följande steg:
Kraftanslutning: Anslut VDD-stiftet på DS18B20 till en 3,3V eller 5V strömkälla (beroende på mikrokontrollerns spänningsnivå), och GND-stiftet till jordlinjen.
Datalinjeanslutning: DQ-stiftet är anslutet till ett digitalt I/O-stift på mikrokontrollern. För att säkerställa dataöverföringens stabilitet, ett pull-up-motstånd kan läggas till mellan dataledningen och strömförsörjningen, med ett typiskt värde på 4,7kΩ till 10kΩ.
Återställning och närvaropuls stift bearbetning: Normalt, återställningsstiftet (RST) och närvaropulsstift (PAR) av DS18B20 behöver inte anslutas externt, de är internt använda signaler.
I detta avsnitt, vi designade en grundläggande krets genom vilken temperatursensorn DS18B20 kan anslutas till en mikrokontroller. Följande är ett exempel på ett kretsschema baserat på Arduino Uno och motsvarande beskrivning:
flödesschema LR
DS18B20 — |VDD| 5V
DS18B20 — |Gard| Gard
DS18B20 — |DQ| 2
DQ — |Uppdrag| 5V
Bland dem, DS18B20 representerar den digitala temperatursensorn, 5V är uteffekten från mikrokontrollern, GND är jordledningen, och 2 representerar Arduinos stift nr. 2, som används för dataöverföring. Anslutningen mellan DQ och 5V representerar pull-up-motståndet.
3.2 Strömförsörjning och signalkonditionering
3.2.1 Val av strömförsörjningsmetod
DS18B20 tillhandahåller två strömförsörjningsmetoder:
Parasitiskt kraftläge: I detta läge, datalinjen (DQ) kan inte bara överföra data, men också driva DS18B20. Just nu, högnivåspänningen på dataledningen bör vara minst 3,0V för att säkerställa tillräcklig strömförsörjning. Detta läge används vanligtvis när busslängden är kort och dataöverföringen inte är alltför frekvent.
Externt strömförsörjningsläge: I detta läge, DS18B20 har en oberoende strömingång VDD. Att driva med en extern strömkälla kan förbättra sensorns signalstyrka och förbättra anti-interferensförmågan, som är lämplig för långdistansöverföring eller frekvent dataöverföring.
3.2.2 Signalfiltrering och stabilisering
För att säkerställa signalstabilitet och korrekt dataavläsning, signalen måste filtreras och stabiliseras ordentligt:
Uppdragningsmotstånd: Pull-up-motståndet läggs till mellan dataledningen och strömförsörjningen för att säkerställa att dataledningen är i ett högnivåtillstånd när den är inaktiv.
De-jitter krets: För att eliminera felaktiga avläsningar orsakade av linjestörningar eller momentana spänningsfluktuationer, signalen kan mjukvara-de-jitter på mikrokontrollersidan.
ESD-skydd: ESD-skyddskomponenter (såsom TVS-dioder) läggs till portarna på sensorer och mikrokontroller för att förhindra skador orsakade av elektrostatisk urladdning.
Detta avsnitt utvecklar ytterligare de faktorer som bör beaktas vid val av strömförsörjning och signalkonditionering i tabellform:
| Projekt | Parasitiskt kraftläge | Externt strömläge | Beskrivning | | — | — | — | — | | Tillämpliga scenarier | Korta rader, sällsynta data | Långa köer, frekventa data | Välj enligt faktiska tillämpningsscenarier | | Strömförsörjningsstabilitet | Lägre | Högre | Extern strömförsörjning rekommenderas för långa linjer eller höga frekvenser | | Kosta | Lägre | Högre | Extern strömförsörjning kräver ytterligare strömhanteringskomponenter | | Anti-interferens | Svagare | Starkare | Extern strömförsörjning är mer lämplig för miljöer med hög störning |
Ovanstående anslutningsmetoder och signalbehandlingsstrategier kan effektivt integrera DS18B20-temperatursensorn i vilket mikrokontrollersystem som helst. Nästa kapitel kommer att introducera hur man använder C-språk för att:
Funktionell programmering av DS18B20:
4. DS18B20 digital termometer C språkprogrammering
4.1 Programmeringsgrund och miljöförberedelse
4.1.1 Programdesignidéer och ramkonstruktion
Innan du börjar skriva C-språkprogrammet för den digitala termometern DS18B20, du måste först etablera de grundläggande idéerna för programdesign. DS18B20-sensorn kommunicerar med mikrokontrollern genom 1-trådskommunikationsprotokollet. Därför, programmets huvuduppgift är att implementera de relaterade funktionerna för 1-trådskommunikationsprotokollet, inklusive initialisering av DS18B20, skicka instruktioner, läsa temperaturdata, och omvandling och visning av läst data.
Programramen är grovt uppdelad i följande delar:
Initialisering: Initiera mikrokontrollern och DS18B20-sensorn.
Huvudslinga: Innehåller en slinga som kontinuerligt läser sensordata.
1-trådkommunikationsfunktionsbibliotek: Innehåller funktioner för implementering av entrådskommunikationsprotokollet.
Databehandling: Konvertera rådata som returneras av sensorn till läsbara temperaturvärden.
Displayutgång: Visa den bearbetade temperaturdatan på LCD-skärmen eller mata ut den till datorn via serieporten.
4.1.2 Konstruktion och konfiguration av utvecklingsmiljö
För att programmera och utveckla den digitala termometern DS18B20, du måste förbereda utvecklingsmiljön och konfigurera den på lämpligt sätt. Följande är de grundläggande stegen för utveckling:
Välj utvecklingsmiljö: Välj lämplig integrerad utvecklingsmiljö (ID) beroende på typen av mikrokontroller, som för utveckling baserad på ARM Cortex-M-seriens mikrokontroller. Du kan använda Keil MDK eller STM32CubeIDE.
Konfigurera kompilatorn: Enligt den IDE som används, konfigurera kompilatorn för att säkerställa att C-språkkoden kan kompileras korrekt.
Bygg hårdvaruutvecklingskortet: Välj ett lämpligt utvecklingskort för mikrokontroller, som baserat på STM32, ESP32, etc.
Anslut utvecklingskortet: Anslut DS18B20-sensorn till det specificerade stiftet på mikrokontrollern genom 1-trådskommunikationsprotokollet.
Skriv kod: Skapa ett nytt C-språkprojekt i IDE och börja skriva programkod.
Kompilera och felsöka: Använd IDE-verktyget för att kompilera koden och köra den på utvecklingskortet för felsökning.
#omfatta <stdio.h>
// DS18B20 första linjens kommunikationsfunktionsbiblioteksdeklaration
ogiltig DS18B20_Init();
ogiltig DS18B20_Reset();
ogiltig DS18B20_WriteByte(osignerad char dat);
osignerad char DS18B20_ReadByte();
int DS18B20_ReadTemperature();
int main() {
// Initiera DS18B20-sensorn
DS18B20_Heat();
// Huvudslinga
medan(1) {
// Läs av temperaturvärdet
int temperatur = DS18B20_ReadTemperature();
// Utgångstemperaturvärde till serieport eller annan displayenhet
printf(“Aktuell temperatur: %d\n”, temperatur);
}
återvända 0;
}
4.2 Implementering av DS18B20 temperaturavläsningsprogram
4.2.1 Konstruktion av entrådskommunikationsfunktionsbiblioteket
För att realisera temperaturavläsningen av DS18B20, du måste först bygga ett entrådskommunikationsfunktionsbibliotek. Följande är implementeringsmetoderna för flera nyckelfunktioner:
DS18B20_Heat(): Initiera tidpunkten för entrådskommunikation.
DS18B20_Återställ(): Återställ sensorn och detektera dess puls.
DS18B20_WriteByte(osignerad char dat): Skriv en byte med data till sensorn.
DS18B20_ReadByte(): Läs en byte med data från sensorn.
DS18B20_ReadTemperature(): Läs av temperaturen och omvandla den.
Implementeringen av entrådskommunikationsfunktionsbiblioteket i DS18B20 är ganska komplicerat eftersom det kräver exakt kontroll av stiftnivåändringarna för att följa entrådskommunikationsprotokollet. Följande är ett exempel på en funktionsimplementering:
ogiltig DS18B20_Reset() {
// En rads kommunikationsåterställningssekvens, inklusive att dra ner datalinjen, dröjsmål, släpper bussen, och detektering av närvaropulsen
// …
}
Syftet med denna funktion är att skicka en återställningspuls till DS18B20. Efter att återställningen har lyckats, DS18B20 returnerar en närvaropuls.
4.2.2 Implementering av temperaturavläsningsalgoritmen
Att avläsa temperaturvärdet för DS18B20-sensorn är en mer komplicerad process, eftersom det är nödvändigt att skicka specifika instruktioner till sensorn i en viss timing och läsa den returnerade datan korrekt. Algoritmen för att läsa temperaturvärdet är som följer:
Återställ sensorn.
Skicka “skeppa ROM” kommando (0xCC).
Skicka “omvandla temperaturen” kommando (0x44).
Vänta tills konverteringen är klar.
Skicka “läsa register” kommando (0xBE).
Läs två byte temperaturdata.
Följande kod visar hur man läser temperaturvärdet för DS18B20:
int DS18B20_ReadTemperature() {
osignerad char temp_low, temp_high;
osignerad int temp;
// Återställ sensorn och hoppa över ROM-instruktionerna
DS18B20_Återställ();
DS18B20_WriteByte(0xCC); // Hoppa över ROM-kommandon
// Skicka kommando om konverteringstemperatur
DS18B20_WriteByte(0x44);
// Vänta tills konverteringen är klar. Här måste du vänta enligt konverteringstiden för DS18B20
// …
// Återställ sensorn och läs temperaturdata
DS18B20_Återställ();
DS18B20_WriteByte(0xCC); // Hoppa över ROM-kommandon
DS18B20_WriteByte(0xBE); // Läs registerkommandot
// Läs två byte med data
temp_low = DS18B20_ReadByte();
temp_high = DS18B20_ReadByte();
// Kombinera två byte med data till ett 16-bitars heltal
temp = (temp_high << 8) | temp_low;
// Returnera temperaturvärdet, konvertera på lämpligt sätt baserat på upplösningen för DS18B20
returtemp;
}
4.2.3 Programfelsökning och undantagshantering
När du skriver ett DS18B20 läsprogram, programfelsökning och undantagshantering är mycket viktiga. Under felsökning, du kan behöva använda den seriella portens felsökningsassistent för att kontrollera om utgångstemperaturvärdet är korrekt, eller använd en logisk analysator för att övervaka signaltimingen för första linjens kommunikation. Undantagshantering måste ta hänsyn till hårdvarufel, kommunikationsfel, och onormala svar av DS18B20.
Följande är några felsöknings- och undantagshanteringsstrategier:
Dataverifiering: Efter varje dataläsning, använd en kontrollsumma eller kontrollbit för att bekräfta att data är korrekta.
Undantagsfångst: Lägg till en undantagsfångstmekanism till programmet, t.ex. en timeout-försöksmekanism, återställ sensorn, etc.
Felsökningsinformation: Lägg till tillräckligt med felsökningsinformation till programmet för att hjälpa till att lokalisera problemet.
int main() {
// Initiera DS18B20-sensorn
DS18B20_Heat();
// Huvudslinga
medan(1) {
int temperatur;
// Läs av temperaturen och kontrollera om det finns fel
temperatur = DS18B20_ReadTemperature();
om (temperatur < 0) {
printf(“Fel avläsning av temperaturen!\n”);
// Du kan välja att försöka igen eller andra felhanteringsmekanismer
} annan {
printf(“Aktuell temperatur: %d\n”, temperatur);
}
}
återvända 0;
}
Det här kapitlet introducerar C-språkets programmeringsgrund och miljöförberedelser för den digitala termometern DS18B20, samt implementering av temperaturavläsningsprogrammet, och betonar vikten av programfelsökning och undantagshantering. Genom inledningen av detta kapitel, läsare ska kunna bygga en utvecklingsmiljö, förstå vikten av biblioteket för första linjens kommunikationsfunktioner, och skriva ett grundläggande temperaturavläsningsprogram. Följande kapitel kommer att fördjupa sig ytterligare i konstruktionen och användningen av Proteus-simuleringsmiljön, tillhandahålla en simuleringstestmetod för faktisk hårdvarumontering.
5. Proteus simuleringsdiagram och simuleringsresultatanalys
5.1 Proteus simuleringsmiljökonstruktion
5.1.1 Grundläggande användning av Proteus programvara
Innan du börjar bygga simuleringsmodellen av den digitala termometern DS18B20, du måste först förstå och behärska den grundläggande driften av Proteus programvara. Proteus är en kraftfull programvara för elektronisk kretssimulering som inte bara kan designa kretsscheman, men också designa krets-PCB-layouter och tillhandahålla simuleringsfunktioner. Här är några viktiga steg som hjälper dig att komma igång med Proteus:
Öppna programmet Proteus och skapa ett nytt projekt.
Sök och välj de nödvändiga komponenterna i komponentbiblioteket, såsom DS18B20-sensorer, mikrokontroller, strömförsörjning, anslutningsledningar, etc.
Dra de markerade komponenterna till designområdet och använd musen för att placera och layouta dem.
Använd ledningsverktyget för att ansluta stiften på varje komponent för att bilda en komplett krets.
Dubbelklicka på en komponent eller tråd för att ändra dess egenskaper, såsom motståndsvärde, strömförsörjningsspänning, etc.
Se till att alla komponenter är korrekt anslutna och kontrollera om det finns fel eller utelämnanden.
5.1.2 Skapa ett DS18B20-simuleringsprojekt
Stegen för att skapa ett simuleringsprojekt för den digitala termometern DS18B20 är följande:
Starta Proteus och välj “Nytt projekt” för att skapa ett nytt projekt.
Efter att ha ställt in projektnamn och plats, klick “Nästa”.
Välj en projektmall, såsom “Mikroprocessorbaserad”, och klicka “Nästa”.
I den “Projektobjekt” flik, kontrollera “Inkludera standardkomponenter” och välj en mikrokontroller (såsom PIC, AVR, etc.) och en DS18B20-sensor.
Klick “Avsluta” för att slutföra projektskapandet.
Nästa, skapa ett kretsschema:
Välj “VÄLJ ENHET” verktyg, hitta och välj mikrokontrollern och DS18B20-sensorn i komponentbiblioteket.
Använd “PLACERA ENHET” verktyg för att placera den valda komponenten i designområdet.
Använd “TRÅD” verktyg för att ansluta mikrokontrollern och de relevanta stiften på DS18B20-sensorn.
Efter att anslutningen är klar, använda “TEXT” verktyg för att lägga till kommentarer till kretsschemat för enkel förståelse och modifiering.
5.2 Simuleringstest och dataanalys
5.2.1 Ställ in simuleringsparametrar och villkor
Innan du startar simuleringen, du måste ställa in parametrarna och villkoren för simuleringskörningen:
Dubbelklicka på mikrokontrollerkomponenten för att komma till gränssnittet för egenskapsinställning.
Välj sökvägen till den tidigare skrivna programfilen på “Programfil”.
Ställ in strömförsörjningsparametrarna för att säkerställa att både mikrokontrollern och DS18B20-sensorn har rätt strömförsörjningsspänning.
Nästa, ställ in tidsparametrarna för simuleringen:
I simuleringskontrollpanelen, välja “Globala inställningar”.
Justera simuleringshastigheten och maximal simuleringstid.
Ställ in lämpliga brytpunkter för att analysera data under simuleringsprocessen.
5.2.2 Simulera och läs temperaturdata
Kör simuleringen och simulera temperaturdata:
Klicka på “Spela” knappen i simuleringskontrollpanelen för att starta simuleringen.
Använd “DEBUGA” verktyg för att se programmets körstatus och variabelvärden.
Simulera DS18B20-sensorn för att avläsa temperaturvärdet, vilket vanligtvis uppnås genom att modifiera den virtuella termometern i simuleringsmiljön.
För att läsa temperaturdata i simuleringen, du kan hänvisa till följande steg:
Hitta temperatursimuleringsinställningarna i egenskaperna för DS18B20-komponenten.
Ändra temperaturvärdet för att testa systemets reaktion under olika temperaturförhållanden.
Observera hur mikrokontrollerprogrammet behandlar temperaturdata.
5.2.3 Resultatanalys och felsökning
Analysera simuleringsresultaten och bekräfta termometerns prestanda:
Övervaka data i utmatningsfönstret för att kontrollera om temperaturavläsningen är korrekt.
Använd logikanalysverktyget för att övervaka om datakommunikationsprocessen är normal.
Kontrollera om det finns onormala signaler eller instabila utgångar.
Utför feldiagnostik och felsökning:
Om temperaturavläsningen är felaktig eller om det finns ett fel, kontrollera anslutningsmetoden och konfigurationen av DS18B20.
Analysera programkoden för att säkerställa att första linjens kommunikations- och datakonverteringsalgoritmer implementeras korrekt.
Använd “Stopp” simuleringsmjukvarans funktion för att pausa simuleringen och observera systemets aktuella status.
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





