Vi tilbyr et bredt utvalg av de beste 1-Wire DS18B20 sensorkontaktene, inkludert Nanoflex, DisplayPort, USB, Solar, SATA, HDMI, DET ER IDÉ, SAS & mange flere. Alle kabler er produsert i henhold til de høyeste industristandardene. Ved å bruke Sensor Circuit Assembly for bokskonstruksjoner kan du fokusere på design og markedsføring, redusere kostnadene, og høste fordelene av våre samlebånd, QA-prosesser, og produksjonsekspertise.
DS18B20-sensoren kommuniserer ved hjelp av “1-Metalltråd” protokoll, som betyr at den bruker en enkelt datalinje for all kommunikasjon med en mikrokontroller, slik at flere sensorer kan kobles til på samme linje og identifiseres med deres unike 64-bits seriekode; denne enkelt datalinjen trekkes høyt med en motstand og sensoren overfører data ved å trekke linjen lavt i spesifikke tidsluker for å sende informasjonsbiter.
DS18B20 temperatursensor: Den vanntette sonden DS18B20 er designet for bruk under vann, i stand til å operere i våte eller fuktige omgivelser uten å bli skadet av vann eller fuktighet.
Temperaturføler forsyningsspenning: 3.0V ~ 5,25V;
Driftstemperaturområde:-55 ℃ til +125 ℃ (-67 ℉ til +257 ℉);
Gir fra 9-bit til 12-bit Celsius temperaturmålinger;
Adaptermodulen er utstyrt med en pull-up motstand, og kobles direkte til GPIOen til Raspberry Pi uten en ekstern motstand;
Bruk dette adaptermodulsettet for å forenkle tilkoblingen av den vanntette temperatursensoren til prosjektet ditt.
1. Nøkkelpunkter om 1-Wire-protokollen:
Enkel datalinje:
Kun én ledning er nødvendig for kommunikasjon mellom sensoren og mikrokontrolleren.
Halv-dupleks kommunikasjon:
Data kan sendes i begge retninger, men bare én retning om gangen.
Parasittkraft:
DS18B20 kan få strøm direkte fra datalinjen under kommunikasjon, eliminerer behovet for en separat strømforsyning i noen tilfeller.
Unike enhetsadresser:
Hver DS18B20-sensor har en unik 64-bits seriell kode som lar mikrokontrolleren identifisere og adressere individuelle sensorer på bussen.
Kommunikasjonstrinn med en DS18B20:
1.1 Tilbakestill puls:
Mikrokontrolleren starter kommunikasjon ved å trekke datalinjen lavt for en bestemt varighet (tilbakestille puls).
1.2 Tilstedeværelsespuls:
Hvis det er en DS18B20 på bussen, den vil svare med en kort puls, som indikerer dens tilstedeværelse.
1.3 ROM kommando:
Mikrokontrolleren sender en ROM-kommando for enten å lese den unike 64-bits koden til en spesifikk sensor (“Match ROM”) eller adressere alle sensorer på bussen (“Skip ROM”).
1.4 Funksjonskommando:
Avhengig av ønsket operasjon (som å lese temperatur), mikrokontrolleren sender en spesifikk funksjonskommando til sensoren.
1.5 Dataoverføring:
Data overføres bit-for-bit, med sensoren som trekker datalinjen lavt for å sende en ‘0’ og la linjen gå høyt for å sende en "1".
2. Detaljert forklaring av DS18B20s 1-Wire kommunikasjonsprotokoll
Årsaken til at DS18B20 -sensorer er mye brukt skyldes i stor grad den unike kommunikasjonsprotokollen – 1-Ledningskommunikasjonsprotokoll. Denne protokollen forenkler kravene til maskinvareforbindelser og gir en effektiv måte å overføre data. Dette kapittelet vil dypt analysere arbeidsmekanismen og datautvekslingsprosessen for 1-linjers kommunikasjonsprotokoll for å legge et solid grunnlag for påfølgende programmeringspraksis.
2.1 Grunnleggende om 1-tråds kommunikasjonsprotokoll
2.1.1 Funksjoner i 1-tråds kommunikasjonsprotokoll:
DS18B20 1-tråd kommunikasjonsprotokoll kalles også “enkeltbuss” teknologi. Den har følgende funksjoner: – Enkeltbusskommunikasjon: Bare en datalinje brukes til toveis dataoverføring, Noe som reduserer kompleksiteten i ledningene sammenlignet med den tradisjonelle kommunikasjonsmetoden for flere trådføler. – Forbindelse med flere enheter: Støtter tilkobling av flere enheter på en databuss, og identifiserer og kommuniserer gjennom enhetens identifikasjonskoder. – Lavt strømforbruk: Under kommunikasjon, enheten kan være i en lav effekt standby-tilstand når du ikke deltar i kommunikasjon. – Høy presisjon: Med en kortere dataoverføringstid, Det kan redusere ekstern interferens og forbedre datatøyaktigheten.
2.1.2 Dataformat og timinganalyse av 1-tråds kommunikasjon
Dataformatet til 1-Wire Communication Protocol følger en spesifikk tidsregel. Det inkluderer initialiseringstiming, Skriv timing og les timing:
Initialiseringstiming: Verten starter først tilstedeværelsesdeteksjonstimingen (Tilstedeværelsespuls) ved å trekke ned bussen i en viss periode, og sensoren sender deretter en tilstedeværelsespuls som svar.
Skriv timing: Når verten sender en skrivetidspunkt, Den trekker først bussen i omtrent 1-15 mikrosekunder, slipper deretter bussen, og sensoren trekker ned bussen i 60-120 Mikrosekunder for å svare.
Les timing: Verten varsler sensoren om å sende data ved å trekke ned bussen og slippe den, og sensoren vil sende ut databiten på bussen etter en viss forsinkelse.
2.2 Programvareimplementering av datakommunikasjon
2.2.1 Initialisering og tilbakestilling av 1-linje kommunikasjon
På programvarenivå, initialisering og tilbakestilling av 1-Wire-kommunikasjon er det første trinnet i kommunikasjonen. Følgende er pseudokoden for å implementere denne prosessen:
// OneWire kommunikasjonsinitieringsfunksjon
void OneWire_Init() {
// Sett bussen til inngangsmodus og aktiver pull-up-motstanden
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
// Vent til bussen er inaktiv
Forsinket mikrosekunder(1);
// Send en tilbakestillingspuls
OneWire_Reset();
}
// OneWire kommunikasjonstilbakestillingsfunksjon
void OneWire_Reset() {
// Trekk ned bussen
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
Forsinket mikrosekunder(480);
// Slipp bussen
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Forsinket mikrosekunder(70);
// Vent på tilstedeværelsen av en puls
hvis (!WaitForOneWirePresence())
// Ingen puls ble oppdaget, kanskje sensoren ikke er tilkoblet eller initialiseringen mislyktes
HandleError();
Forsinket mikrosekunder(410);
}
// Venter på tilstedeværelsen av en puls
bool WaitForOneWirePresence() {
returner ReadPin(DS18B20_PIN) == 0; // Anta at lavt nivå er et signaltilstedeværelse
}
2.2.2 Datalese- og skriveoperasjoner
Datalese- og skriveoperasjoner er kjernedelen av sensorkommunikasjon. Følgende kode viser hvordan du skriver en byte til en entrådsbuss:
// Skriv en byte til en entrådsbuss
void OneWire_WriteByte(byte data) {
til (int i = 0; jeg < 8; i++) {
OneWire_WriteBit(data & 0x01);
data >>= 1;
}
}
// Skriv litt til en entrådsbuss
void OneWire_WriteBit(bit data) {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
hvis (data) {
// Slipp bussen når du skriver 1
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Forsinket mikrosekunder(1);
} ellers {
// Fortsett å trekke bussen lavt når du skriver 0
Forsinket mikrosekunder(60);
}
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Forsinket mikrosekunder(1);
}
Neste er funksjonen for å lese en byte:
// Les en byte fra entrådsbussen
byte OneWire_ReadByte() {
byte data = 0;
til (int i = 0; jeg < 8; i++) {
data >>= 1;
hvis (OneWire_ReadBit())
data |= 0x80;
}
returnere data;
}
// Les litt fra entrådsbussen
bit OneWire_ReadBit() {
SetPinMode(DS18B20_PIN, OUTPUT_LOW);
SetPinMode(DS18B20_PIN, INPUT_PULLUP);
Forsinket mikrosekunder(3);
bool resultat = ReadPin(DS18B20_PIN);
Forsinket mikrosekunder(57);
returnere resultat;
}
2.2.3 Verifikasjonsmekanisme for OneWire-kommunikasjon
OneWire-kommunikasjonsprotokollen bruker en enkel verifiseringsmekanisme i datautvekslingsprosessen, vanligvis ved å lese tilbake de skrevne dataene for å verifisere riktigheten av dataene. Følgende er en eksempelkode for å bekrefte de skrevne dataene:
bytedata = 0x55; // Anta at dataene som skal sendes
OneWire_WriteByte(data); // Skriv data til OneWire-bussen
byte readData = OneWire_ReadByte(); // Les tilbake data fra OneWire-bussen
hvis (leseData != data) {
HandleError(); // Hvis tilbakelesningsdataene ikke samsvarer med de skrevne dataene, håndtere feilen
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





