hallo allemaal.
ik heb een klein probleempje
ik heb dezen coden tempratuur meter met ds1820 en in de coden wijkt de tempratuur iets af. 1,5 graad te hoog
ik heb veel gebrobeerd maar ik kom er echt niet uit
als ik + 550 veranderd in + 535 dan is die redelik oke
maar dan als het min is geeft i in eens een groot getal weer
en in eens teld i dan weer gewoon in de min
wie kan me helpen zo dat als het onder 0 komt ook het - teken er komt en gewoon teld in de min . en niet eerst raar en dan gewoon
hier de coden van pic bassic
;Voorbeeld 4
DEVICE 16F628A ;We gebruiken een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE ;Alle ingangen digitaal;Normale constanten
SYMBOL Convert = $44 ;DS1820 commando, de DS1820 moet de temperatuur gaan meten
SYMBOL Graad = 223 ;223 is de ASCII code voor het 'graad' karakter
SYMBOL RdScratchPad = $BE ;DS1820 commando, temperatuur van de DS1820 uitlezen
SYMBOL SkipROM = $CC ;DS1820 commando, geen gebruik maken van het unieke adres;Logische constanten
SYMBOL FALSE = 0
SYMBOL TRUE = 1;Poortnamen
SYMBOL DS1820 = PORTA.0 ;Sluit de DS1820 temperatuur sensor aan op deze poort;Variabelen declareren
;WORD
DIM Temp AS WORD ;Bevat de temperatuur Celsius
;BYTE
DIM Remain AS BYTE ;De remain waarde voor berekening temperatuur achter de komma
DIM Slope AS BYTE ;Bevat de 'counts per graad Celsius' waarde
DIM TempDeci AS BYTE ;Bevat de temperatuur waarde "achter de komma"
DIM BD1 AS BYTE ;Byte Dummy 1
;BIT
DIM NegTemp AS BIT ;TRUE als temperatuur Celsius onder 0 oC komtCLEAR ;Wis RAM geheugen
DELAYMS 500 ;LCD stabilisatie
;Hoofdprogramma
CLS ;Wis LCD scherm
WHILE 1 = 1
OWRITE DS1820, 1, [SkipROM, Convert] ;Zend 'Calculate Temperature' opdracht
OWRITE DS1820, 1, [SkipROM, RdScratchPad] ;Zend 'Read ScratchPad' opdracht
OREAD DS1820, 2, [Temp.LOWBYTE, Temp.HIGHBYTE, BD1, BD1, BD1, BD1, Remain, Slope] ',CRC]NegTemp = Temp.8 ;Als bit 8 (het 9e bit) geset is, dan is temperatuur negatief
TempDeci = ((Slope - Remain) * 100) / Slope
Temp = Temp * 5IF NegTemp = TRUE THEN ;Als de temperatuur negatief is, dan...
Temp = 65530 - Temp ;De gemeten waarde Inverteren
TempDeci = 100 - TempDeci ;Ook de waarde achter de komma inverteren
IF TempDeci < 51 THEN TempDeci = TempDeci + 100
ENDIFTemp = (((Temp + 550) / 10) * 100) + TempDeci - 5500 ;
PRINT AT 1, 1, REP "-"\NegTemp, DEC Temp / 100, ".", DEC1 Temp / 10, Graad, "C "
WEND
[Bericht gewijzigd door ricardo12345 op (33%)]
M-i-c-h-e-l
Honourable Member
Laat eens zien hoe je 'i' declareerdt?
Ik zie de variabele 'i' trouwens niet terug in je code.
Of 'i' is unsigned ipv signed,
Of je moet er nog een bewerking op loslaten (2's complement?)
mijn kamer termostaad van me CV ketel geeft 21,5 aan en de ds1820 geeft 23.1 aan op het lcd heb de ds1820 dicht bij de termostaad ge hangen om te kijken of het aan lucht stroming lag maar dat is niet het geval hij geeft echt 1,5 graden te hoog aan
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
op de senssor die ik even buiten heb ge hangen geeft die 10,5 graden aan
nu weet ik dat het buiten 9 graden is door een weerstation ge meten
is ook erg raar
heb ook even een tempratuur meter gepakt die je ook in het frituur vet kan hangen die meet ook de omgevings tempratuur en die geeft ook 21,5 binnen en buiten 9 graden
de ds1820 geeft binnen 23 graag aan en buiten 10,5 graad aan
vind dit wel erg raar.
ik dacht dus in de software even 1,5 graad laten zakken zo dat i het goed weer geeft
Een kamerthermostaat is geen ijkapparaat, maar een afwijking van 1,5 graden zal hij beslist niet mogen hebben, dat is veel te veel.
Stap maar eens uit een ruimte van 20 graden naar een van 18,5.
Maar wat je kunt doen, is water met ijsblokjes meten (flink roeren), dat is tamelijk precies 0 graden.
En kokend water redelijk goed 100 graden. Al weet ik niet of de sensor zo heet mag zijn.
Echt flink roeren/klutsen hoor, je wilt niet weten hoe rare temperatuursverdeling je anders toch nog kunt hebben.
Maar dat zie je trouwens wel: overal in het glas moet je hetzelfde meten.
heb het gewoon even anders gedaan heb een vrieser en daar op staat de tempratuur digital aan gegeven min 16 heb hem er nu 10 min in liggen en loop ook niet meer lager geeft aan 14 graad min
zonder balonnetje natuurlijk zo in het vries vak
Doe het nou zoals FET aangeeft. Een buitenthermometer, een vriezer en een kamerthermostaat zijn niet de juiste middelen om dit te controleren. Overigens heeft die DS per defenitie een afwijking natuurlijk, al zou die binnen redelijke grenzen niet meer dan een halve graad moeten zijn.
Op 6 maart 2012 16:59:35 schreef GJ_:
Doe het nou zoals FET aangeeft. Een buitenthermometer, een vriezer en een kamerthermostaat zijn niet de juiste middelen om dit te controleren. Overigens heeft die DS per defenitie een afwijking natuurlijk, al zou die binnen redelijke grenzen niet meer dan een halve graad moeten zijn.
binnen grenst die al helemaal niet in de buurd van een halfe graad egter ver van dat en all meerdere dingen getest ga nu het met ijs blokjes doen dan maar dat even probeeren wie weet
maar termostaad en tempratuur meter en weerstation geven een temp aan en steeds zit de 1820 er ongeveer een 1,5 graad naast
M-i-c-h-e-l
Honourable Member
Ik meen me te herinneren dat er nog een softwarefout aanwezig was. Had je die er intussen uitgevist?
Je weet nooit of het een en ander verband houdt met elkaar.
dit is de code van de picbasic site en ik weet niet of daar een software fout in Zit als dit zo is hoor ik het graag
heb all 3 testjes gedaan steeds kom ik rond de 1,5 graad te hoog uit en dat met 3 verschillende dingen
ik hoor het graag of het een software fout is
[Bericht gewijzigd door ricardo12345 op (11%)]
duffel
Mijn vrouwtje houdt ook van kleine dingetjes: www.minifrutsels.nl
Gebruik je echt een DS1820, die is obsolete en moeilijk te verkrijgen voor zover ik weet. Er is een hele reeks DS18x20's te krijgen. De meeste hebben een accuracy van +/- 0.5 graden. Hetgeen wil zeggen dat ze max 0.5 graden mogen afwijken. De DS1822 heeft echter een afwijking van +/- 2 graden.
Ik weet niet precies hoe het zit met de software compatibilitiet maar een snelle blik lijkt aan te geven dat ze compatibel zijn.
Ikzelf gebruik DS18S20 sensoren. Deze wijken 0.1 graden af van elkaar. Ik heb er hier op het lab 2 met een echt ijkapparaat getest. Bij kamertemperatuur weken ze 0.1 en 0.2 graden af. Bij +80 was dit 0.4 graden. De kamerthermostaat geeft hier 0.5 a 1 graad minder aan dan de DS18S20 (uitlezing van de kamerthermostaat is slechts 0.5 graden).
Vergeet verder ook niet dat de temperatuur van lucht (gassen) meten niet zo eenvoudig is. Je moet de sensoren in dezelfde behuizing plaatsen en fysiek tegen elkaar leggen om ze echt te kunnen vergelijken "in de buurt houden" is echt niet goed genoeg. In je vriezer kan de temperatuur boven en onder zo enkele graden verschillen afhankelijk van hoe het ding geconstrueerd en beladen is.
De beste check om thuis te doen is inderdaad wat FET beschrijft. Zorg voor flink veel ijs in een grote beker en flink roeren. Best nog crushed ijs nemen.
oke ik gebruik de DS18S20
dus erg freemd allemaal
valt er niet in de software een aan passing te maken zo dat i 1,5 graad terug gezet word dus wat eigelijk volgens de ds1820 23 graad is dan in de software zorgen dat i dan 21,5 graad aan geef
zo iets van verschuifen 1,5 graad
[Bericht gewijzigd door ricardo12345 op (72%)]
Van de gemeten Temp er 1.5 van aftrekken is niet moeilijk, maarrr
En wat is het verschil als je rond de 10º meet of rond de 40º is er dan nog 1,5 graad verschil?
Heb je al met Ijs getest zoals FET aangaf?
Of kan je een IR temp meter lenen?
Willie W
Golden Member
Heb dit ook gehad, bij mij gaf hij ca 8 graden te veel aan.
Het probleem was een verkeerde kadel tussen de PIC en de DS18S20.
In eerste instantie zat er een soepele kabel tussen van 3x0,5 waarmee
ik het probleem had, later heb ik deze vervangen door een oude telefoonkabel
met massieve aders en toen klopte de temperatuur wel.
ik heb er all een massiefe kabel tussen zitten
een raderig lis van elkaar gehaald wand ik zat ook all in die richting te denken maar datb is het niet
Na wat gegoegel vond ik meer mensen met jouw probleem
In essence, the
form stated that the DS18S20 (and DS18S22) was not compliant with
their descriptions. The error is rather disturbing. It seems that
randomly at power on the chip can corrupt its EEPROM, including the
"set ponts" which are used to correct the temperature calculation,
which means that the chip will not conform to the stated 0.5 degree C
accuracy. They offer a couple of software "patches" (I haven't looked
at them) which show how to "restore" the cip to a 2 degree C accuracy.