"Minus"-fråga om DS18s20 tempsensor.

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

"Minus"-fråga om DS18s20 tempsensor.

Inlägg av benring »

Hej, eftersom det nu börjar bli minus ute så kom funderingen på att beräkna minus ur DS18s20-sensorn.

Nu ligger ju plus/minus i första byten, tempen i andra byten.

"0000 0000" "0011 0010" = + 25 grader (enligt tabell 2 i databladet)

"1111 1111" "1100 1110" = - 25 grader (enligt tabell 2 i databladet)


Min tanke är om det går att ta byte två "0011 0010" (25) och sedan kolla om byte ett är 1 eller 0? Om den är 1 så är det -25, om 0 så är det +25 ?

Edit: Det sista jag skrev blir ju fel... den kommer ju ge mig andra siffror när den sjunker...



Är det nån som räknat med minus med denna?
/B
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Som en snabb gissning utan grund skulle jag gissa på att den representerar temperaturer i "signerat" format:
http://en.wikipedia.org/wiki/Signed_num ... sentations

Mvh
speakman
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Hej, ja det ser rätt ut:

As an example, the ones' complement form of 00101011 (43) becomes 11010100 (−43).

"0011 0010" = 50 decimalt vilket blir +25)
"1100 1110" = 206 decimalt men skall bli -25
(inverterat är "1100 1110" = 49 och det är ju 24,5 men denna sensor är ju inte heller helt korrekt enligt databladet.

Så det jag inte vet är hur jag ska räkna, om jag kollar att det ÄR minus till o börja med, sen inverterar talet och kollar vilket plustal det blir, sen sätta det talet till minus.

Det borde ju funka.

/B
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Ja, MSB anger tecknet. Om MSB är ettor (dvs. tempen<0) så kör du tvåkomplement på LSB. Tvåkomplement betyder att du inverterar varje bit i LSB och därefter adderar 1 till resultatet.
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

ok, ja då blir det ju korrekt:)

va simpelt det blev, tack ska ni ha:)

/B
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Det var inte så simpelt...

Jag hängde nyss ut en sensor, den stegade ner mot minusgraderna och när det så blev minus slutade den funka (pga min ursprungliga kod som endast hanterar plus)

Jag implementerade ovan men det ger mig helt felande siffror.

LSB visar binärt, direkt från scratchpad: "01111110", detta skall då inverteras så det blir "10000001" men det blir helt fel.
Det blir 129Dec

Dock visar MSB "11111111"b när den skall läsa denna sensor, "0" om den skall läsa en annan som är inne.

varför får jag detta värde?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> direkt från scratchpad: "01111110"

Det känns som om det har smugit sig in en nolla för mycket i bit 7.
"11111110" hade ju varit en ganska rimligt värde.

Kan du läsa kontinuerligt och logga de binära värdena (t.ex till en fil)
medans givaren passerar över nollpunkten. Gärna i båda "riktningarna".
Då borde man få en bättre bild av vad som händer...
Användarvisningsbild
björn
EF Sponsor
Inlägg: 2570
Blev medlem: 29 mars 2004, 23:09:55

Inlägg av björn »

FEL AV MIG, BORTTAGET
Senast redigerad av björn 16 november 2005, 22:28:42, redigerad totalt 1 gång.
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

EDIT: till sodjan:)
mmm, det va just så som du beskrev det :oops:

min kod att hantera plus-talen var alltid så låga att jag la till en nolla i början för att få 8 bitar.

Minustalet är 8 bitar redan så det blev en nolla fel, det skulle givetvis va så som du skrev det *harkel* :)

2,4 minus har jag här:)

/B
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

OK, en "nolla" för mycket alltså... :-)

> 2,4 minus har jag här

Hm, jag måste gå ut från kontoret, genom gästrummet och tvättstugan till köket, genom hallen och in till vardagsrummet för att kolla... :-(
Var det DS18S20 dom hette dom där ? :-)

Du kör fortfarande via en DS2480B, eller hur ?
Hur tycker du att det fungerar ?
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Ja, ibland undrar jag vart nollan är :roll:

Ja, det va en bit o traska för det:)
DS18s20 va det, vi kanske kan sammköpa, jag ska ha fler ganska snart:)

Ja, jag kör via DS2480B och jag tycker den funkar kalasbra:)

/B
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Godmorgon i kylan:)

Jag undrar o "min" kyla verkligen kan stämma... -9,8c har jag i Bålsta (lite norr om sthlm för er som inte vet*s*)

Det är -4c i södertälje, -3c i älvsjö....

Men tar jag in sensorn så blir det korrekt inne, jämfört med en digital köptermometer. (Jo jag vet, kan ju kolla me denna men hade inte möjlighet nu på morgonen.

http://tempsens.dyndns.org:8080/?page=utedata

/B
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Varför skulle det inte stämma ?
Det är väll bara att sticka ut nosen utanför dörren/fönstret och känna efter... :-)

Det har ju varit en stilla natt/morgon, och min erfaranhet är att temperaturen ofta kan göra en "dipp" just kring gryningen/soluppgången. Jag vet inte vad det beror på, men det kan sjunka flera grader ganska snabbt just när det ljusnar. Vi har ibland 3-4 grader lägre morgon temp än inne i Söderköping ca 1 mil härifrån...
benring
Inlägg: 900
Blev medlem: 18 januari 2005, 19:35:25

Inlägg av benring »

Hehe, jo allt under nollan är ju svinkallt (sa han från fjollträsk :lol: )

Men ok, det kanske stämmer, ska kontrollera den senare:)

/B
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Du glömmer inte bort att addera 1 efter att du har inverterat väl?

Om du är osäker på om temperaturen stämmer kan du posta dina avläsningsvärden på Temperaturbytes:en (LSB och MSB) och COUNT_REMAIN här så kan vi kontrollera att det har blivit rätt.
Skriv svar