Stap 2: De DS18B20 temperatuursensor
Er zijn twee manieren om een DS18B20 instellen:
- Met kracht van de parasiet
- Met externe voeding
Om meer te weten over deze opties, controleer enkel het gegevensblad.
De data lijn DQ een 4K 7 pullup weerstand moet en kan worden aangesloten op de overgrote meerderheid van pinnen op uw microcontroller.
Communicatie met een 1wire-apparaat is, nogmaals, niet heel moeilijk in Bascom. Er zijn sommige commando's, maar we hoeven alleen maar drie van hen voor dit project.
- 1wreset: dit commando stelt de mededeling
- 1wwrite var: deze opdracht schrijft 'var' naar het apparaat
- 1wread var: dit commando leest van het apparaat in 'var'
We moeten ook het instellen van de 1wire-bus met de volgende code: config 1wire pinX.y waar X = is de naam van de poort en y het aantal de pin.
Laten we proberen om dit alles in code nu:
We zullen de DS18B20 te gebruiken in 12 bit modus (standaardinstelling) zodat elke bit komt overeen met 0.0625degr C of om hem gemakkelijker: zullen we moeten het resultaat wordt gedeeld door 16 te krijgen van de temperatuur. Deze code moet u tempdata(9) als byte en temperatuur als integer dim.
config 1wire = portd.0 Dit vertelt de microcontroller waarnaar zoekt het apparaat
....
1wreset Reset en begint de mededeling
1wwrite & HCC slaat dit overbrengen van de unieke ROM-code voor het apparaat. Dit
code is nodig wanneer er meer apparaten op de zelfde draad
maar we hebben slechts één dus we kunnen overslaan.
1wwrite & H44 begint van de A/D-conversie in de sensor en slaat de gegevens in
de Kladblok
waitms 750 de conversie in 10 bits modus kun je t/m 750ms dus we wachten
750ms voordat we beginnen met het lezen van het Kladblok.
1wreset
1wwrite & HCC
1wwrite & HBE vertelt het apparaat dat we willen lezen van de Kladblok.
TempData(1) = 1wread(9) We 9 bytes lezen in tempdata(), vanaf tempdata(1).
If tempdata(9) = Crc8(tempdata(1), 8) vervolgens Dit controleert de geldigheid van de gegevens en
Temperatuur = Makeint(tempdata(1), tempdata(2)) combineert de 2 eerste bytes in een
integer.
Temperatuur = temperatuur / 16 door het delen van dit gehele getal door 16 we hebben
onze Temperatuurin degr C.
End If
We hebben onze sensor werkt nu.
In de volgende stap zullen we praten over de knoppen.