Code om de DS18B20 uit te lezen..

Omdat er al vaker een discussie is geweest over het uitlezen van een DS18B20, let op de B, hierbij een werkende code.

pic basic code:
 
' **************************************
' ******** DS18B20 uitlezen !!! ********
' **************************************
 
Device 16F628A                ;Gebruik een 16F628A type
Config HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
 
XTAL = 20
 
ALL_DIGITAL TRUE
 
Dim Temperatuur As Word
Dim Decimalen As Byte
 
DelayMS 500                   ;LCD stabilisering
 
Cls                           ;Wis scherm en zet cursor links bovenaan 
Print "Hello world!"          ;Plaats tekst op het display
 
DelayMS 1000
 
Cls                           ;Wis scherm en zet cursor links bovenaan 
OPNIEUW:
 
OWrite PORTA.4, 1, [$CC, $44]    ' Zend 'Convert' opdracht (temperatuur meten)
While ORead PORTA.4,4 = 0 : Wend ' Wacht tot conversie is voltooid...
OWrite PORTA.4, 1, [$CC, $BE]    ' Zend 'Read ScratchPad' opdracht
ORead  PORTA.4, 2, [Temperatuur.LowByte, Temperatuur.HighByte] ;Lees temperatuur en plaats dit in de variabele 
 
Decimalen = 0                           ' Op 0 voor de zekerheid..
Decimalen = Temperatuur.LowByte << 4    ' Alleen de laatste 4 bits van Temperatuur zijn nodig.
Decimalen = Decimalen >> 4              ' Bits weer op de originele plaats zetten
Decimalen = Decimalen * 6.25            ' Resolutie van de DS18B20 is 0.0625 graden celcius.
 
Print At 1, 1, Dec (Temperatuur >> 4) , ".", DEC1 Decimalen / 10, 223, "C  "
                ' Door de laatste 4 bits van Temperatuur weg te gooien krijg je de graden Celcius.
 
GoTo OPNIEUW
 
End                           ;Einde programma
 


Doe er je voordeel mee..
Domoticz en ESP8266, goede combo!!!
Mag ik 'm onderaan bij het artikel op picbasic.nl plaatsen?
(Voor de DS18B20 kopers).

By the way, is END echt nodig?
In een ander topic werd gezegd dat het niet werkte zonder (kan me dat niet voorstellen).
Ohm sweet Ohm | www.picbasic.nl
@Frits

Je mag hem van mij bij picbasic plaatsen, had eerst de code van jouw site geprobeert, maar daar kwamen rare getallen uit, dus toen zelf maar uitgevogelt hoe de DS18B20 werkt.

Ik heb het eigenlijk niet zonder die END geprobeert, kijk maar...
Domoticz en ESP8266, goede combo!!!
kan je dezen ook om buigen zo dat i de min temeratuur aan kan

ik zoek namelijk iets voor de ds18B20 een code die ook min kan ???
wie weet iets
een code die ook min kan ???

Cryptische omschrijving... "Klinkt als..." :+
Bedoel je temperaturen onder nul? Die kan je uit de variabele 'Temperatuur' halen.
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
ja dat bedoel ik ,
vertelde het een beetje van . het klinkt als sorry voor de onduidelijk heid

maar ik zie niet hoe ik dat in die code can maken
Negatieve temperatuur uitrekenen:

pic basic code:
 
dim negatief as bit
clear negatief
 
If temperatuur > &HFC00 Then
Temperatuur = ( Temperatuur XOR &HFFFF ) + 1
negatief = 1
endif
 


Daarna kun je dus de temperatuur normaal uitrekenen.
Domoticz en ESP8266, goede combo!!!
Als je temperatuur als (signed) integer i.p.v. (unsigned) word definieert, heb je de temperatuur al.
Temperatuur in graden is Temperatuur * 0.0625 (kan dus ook negatief zijn)
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
geprobeert lukt niet echt waar moet ik dat dan ongeveer neer zeten ??
Dim Temperatuur As Integer? (Ben geen PicBasic'er...)
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
meschien een klein voor beeltje zo dat ik verder kan , sorry ik zie het echt niet
oke nouw laat die min temperatuur maar als iemand me kan helpen ,
zodra die 0 graden aan geef en dan niet verder teld wand dan krijg je 4095.8 en dat is een rot geziht op je display

hoe kan ik vormomen dat als die 0 graden aan geef dat i gewoon blijf staan op 0 graden ???

eigenlijk wil ik het gebruiken als er een temeratuur word gemeten van 80 graden dat de spanning ergens van af gehaald word ,
is het echter af gekoeld en 75 graden dan spanning er weer op

alleen die 0 graden als i daar op komt dat i dan blijft staan hoe doe ik dat?? dan ben ik wel klaar

[Bericht gewijzigd door ricardo12345 op 13 augustus 2010 16:29:35 (46%)]

Misschien dat iemand met Picbasic ervaring kan zeggen of dit kan, maar in MikroBasic maak je van Temperatuur gewoon een Integer (16 bit signed var), vermenigvuldigt die waarde met 0.0625, en zet dat op het display...
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Het leek mij het beste om het hier neer te zetten...
Ik heb het schemaatje van picbasic opgebouwd en de code van bovenaan van dit topic in de pic gezet maar het display laat niks zien.
Als ik de code van de DS18S20 erin zet geeft hij inderdaad hoge getallen. Is de code van dit topic niet helemaal goed of moet ik mijn schakeling aanpassen?

Gr,

Bram
Bram,

De code bovenaan werkt!!!

Je zult dus iets verkeerd hebben in je schakeling.

Pull-up voor de temp-sensor vergeten? 4K7... geloof ik...

Post eens een schema...

Roche
Domoticz en ESP8266, goede combo!!!
Oke, de pull-up weerstand heb ik niet vergeten.
Ik zou de schakeling nog even na kunnen kijken maar ben er zeker van dat hij goed is. Ook een schema posten heeft geen zin want die zou het zelfde zijn als die van picbasic.nl.
Als ik de orginele 18s20 code programmeer doet hij het wel maar dan inderdaad met die rare waardes. programmeer ik jou code dan komt er niets op het scherm. Alvast bedankt! misschien weet je nog meer waar ik fout kan zijn gegaan?
Aansluiten van de DS1820 kan (bijna) niet misgaan. (is maar 1 draad...)
Bovenstaande code werkt niet zonder meer; de code gebruikt een 20MHz kristal en de Picbasic schakeling geen kristal...
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Het gaat hier wel om de TO-92 uitvoering?

@Arco.. je bent wakker...

Was mijn volgende gedachte....

Als je geen 20MHz kristal gebruikt, dan XTAL = 4 gebruiken en de config lijn van picbasic.nl ...

pic basic code:
 
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
XTAL = 4
 

[Bericht gewijzigd door Roches op 28 mei 2011 00:36:02 (20%)]

Domoticz en ESP8266, goede combo!!!
Ik werk inderdaad met de TO-92 behuizing.
Heb de code aangepast en er is een verbetering.
Ik krijg nu "Hello world" te zien alleen daarna gaat hij niet over naar de temp weergave en komt er niks op het display te staan.
?

Gr,

Bram
Heb je nu eigenlijk een 18S20 of een 18B20?
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Een 18B20, daarom moet ik deze code ook gebruiken.
Ook aan de goede pin (RA4) gehangen? . Bij picbasic staat 'ie aan pin RA0 getekend...
Arco - "Simplicity is a prerequisite for reliability" - www.arcovox.com
Dat was m, hij doet het, bedankt!
Welk bereik heeft hij nou met deze software?
Zie Datasheet van de 18B20.

Standaard de code overnemen zonder te kijken wat er gebeurd, da's makkelijk...

We gaan er wel vanuit dat je ook kijkt wat er gebeurd in de code, zodat je hem aanpast aan je eigen wensen....

En nogmaals datasheets lezen!!!
Domoticz en ESP8266, goede combo!!!
Dat is van -55 to +125 oke, maar bovenaan dit topic staat een code voor het meten van de neg. Zonder die code kan hij dus niet neg meten? Er staat een stukje code voor neg maar waar moet je deze dan tussen plakken?