Hallo allemaal,
Ik heb onderstaande in elkaar gezet (knip en plak werk)
maar het doet iets, namelijk een led aan of uitzetten wanneer er 2 ds18B20 sensoren worden vergeleken alleen zou ik het verschil graag wat groter willen hebben.
Bijv: de led moet pas aan als er een verschil is van meer dan 10 graden
vergeleken met sensor 1.
Als de tempratuur gelijk of lager is als sensor 1 dan moet de led uit gaan.
Ka iemand mij hier bij helpen?
' **************************************
' ******** DS18B20 uitlezen !!! ********
' **************************************
Device 16F628A ;Gebruik een 16F628A type
Config INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
Xtal = 4
All_Digital TRUE
Dim Temperatuur As Word
Dim Temperatuur1 As Word
Dim Decimalen As Byte
Dim Decimalen1 As Byte
;Logische constanten
Symbol HOOG = 1
Symbol LAAG = 0
;Poortnamen
;Symbol Relais = PORTA.3 ;Sluit een LED met 1k serie weerstand aan op deze poort
Symbol LED = PORTA.2 ;Sluit een LED met 1k serie weerstand aan op deze poort
DelayMS 500 ;LCD stabilisering
; 76543210
PORTA = %00000000 ;Alle PORTA uitgangen laag bij opstart
TRISA = %11111011 ;Alles ingang, behalve PORTA.2 voor de LED
Cls ;Wis scherm en zet cursor links bovenaan
OPNIEUW:
OWrite PORTA.0, 1, [$CC, $44] ' Zend 'Convert' opdracht (temperatuur meten)
While ORead PORTA.0,4 = 0 : Wend ' Wacht tot conversie is voltooid...
OWrite PORTA.0, 1, [$CC, $BE] ' Zend 'Read ScratchPad' opdracht
ORead PORTA.0 , 2, [Temperatuur.LowByte, Temperatuur.HighByte] ;Lees temperatuur en plaats dit in de variabele
OWrite PORTA.1, 1, [$CC, $44] ' Zend 'Convert' opdracht (temperatuur meten)
While ORead PORTA.1,4 = 0 : Wend ' Wacht tot conversie is voltooid...
OWrite PORTA.1, 1, [$CC, $BE] ' Zend 'Read ScratchPad' opdracht
ORead PORTA.1 , 2, [Temperatuur1.LowByte, Temperatuur1.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.
Decimalen1 = 0 ' Op 0 voor de zekerheid..
Decimalen1 = Temperatuur1.LowByte << 4 ' Alleen de laatste 4 bits van Temperatuur zijn nodig.
Decimalen1 = Decimalen1 >> 4 ' Bits weer op de originele plaats zetten
Decimalen1 = Decimalen1 * 6.25 ' Resolutie van de DS18B20 is 0.0625 graden celcius.
If Temperatuur > Temperatuur1 Then LED = HOOG ;Uitgang HOOG als temp te laag is
If Temperatuur < Temperatuur1 Then LED = LAAG ;Uitgang LAAG als temp te hoog is
Print At 1, 1, "Collector ",Dec (Temperatuur >> 4) , ".", Dec1 Decimalen / 10, 223, "C "
' Door de laatste 4 bits van Temperatuur weg te gooien krijg je de graden Celcius.
Print At 2, 1, "Zwembad ",Dec (Temperatuur1 >> 4) , ".", Dec1 Decimalen1 / 10, 223, "C "
' Door de laatste 4 bits van Temperatuur weg te gooien krijg je de graden Celcius.
DelayMS 300
GoTo OPNIEUW
End ;Einde programma
;A0 = collector