ANDRA SIDOR
AM broadcast transmitter
Moddar & byggen
Rubrikbild

Temperaturavläsning med DS18S20

Det är jobbigt att gå ända bort till fönstret för att se vad det är för temperatur ute.

Inledning
Verktyg och material
Kopplingsschema
Tillverkning
Mjukvara: digitemp i DOS
Mjukvara: digitemp i Linux
Mjukvara: OWFS i Linux
Mjukvara: digitemp i Windows
Resultat

Uppdatering: Modifiering av adaptern

Inledning

Det kan vara roligt att läsa in temperaturer i datorn från olika ställen; utomhus, i varje rum, i kylskåpet mm. Och sedan knåpa ihop någon slags statistik över klimatförändringar. Detta är möjligt med den digitala temperatursensorn DS18S20 från MAXIM integrated.

För att slippa extra strömkällor bygger man en passiv adapter till COM-porten, och kör sensorerna i parasite power-läge. De tar då sin drivspänning från dataledningen. Denna adapter är utvecklad av Dallas, och heter DS9097. De använder RJ12-kontakter och platt modularkabel som standard för att bygga upp 1-wire-nätverket, men det struntar vi i och löder ihop allt istället.

 

Verktyg och material

• Lödpenna och lödtenn
• Avbitare
• Skruvmejslar
• Krympslang
• Värmepistol
• Veroboard (experimentkort med kopparbanor)
• DigiTemp programvara www.digitemp.com

Artiklar från logga     (kr) = inkl. moms
Ladda hem kundvagnen

Komp.

Benämning

Antal

Pris

Artikelnr.

D1
D2
D3-4

R1


J1

BZX55/C6V2 zenerdiod
BZX55/C3V9 zenerdiod
1N5818 sch diod 1A 30V DO41
DS18S20 digital temp krets
Motst 1,50kohm 1% 0,6W
LIYY 2x0,14 mm2
Kåpa m skruvlås 9-pol svart
Hylsdon löd DE-09S-P-F

1
1
2
2
1
4
1
1

1,30
1,30
20,40
132,00
2,41
14,44
11,10
8,33

70-054-08
70-053-58
70-102-67
73-775-00
60-724-66
55-721-02
44-093-55
44-055-02

 

Summa

 

191,28

(239kr)

 

Kopplingsschema

Schematiskt ser en DS9097 passiv adapter ut såhär inuti.

schema

De två punkterna i den gröna fyrkanten ska kopplas till kabeln som temperatursensorerna sitter på.

 

Tillverkning

Klipp bort en bit av lödkopparna 6-9 på DSUB-kontakten. Löd fast en liten bit experimentkort (5x5 hål), så att de fem banorna har kontakt med DSUB-pinnar 1-5. Pinne 1 används inte i kretsen, utan används bara som fästpunkt för kretskortet. Löd sen fast komponenterna ungefär så som jag gjort. Det går ju även att löda ihop det hela utan kretskort då det inte är så många komponenter.

lödning
komponenter

Böj till benen på alla sensorer så som bilden visar, så att ben 1 och 3 sitter ihop, och ben 2 sitter för sig själv.

böj benen

Koppla in dina sensorer på lämpliga ställen längs kabeln. Anslut ben 1 och 3 till GND-ledningen, och ben 2 (mitten) till DATA-ledningen. Observera att GND i det här fallet inte har något alls att göra med jord i datorn, eller någon annanstans. Det är en virtuell jord med en annan potential relativt jord.
Angående antal sensorer, så är det inga problem att dra kabeln runt hela huset och sätta minst en sensor i varje rum.

blockschema

Såhär har jag fäst varje sensor längs kabeln. Isolera med krympslang.

krympslang
krympslang
krympslang

Dags att ansluta sensorkabeln till COM-portsadaptern. GND-ledningen till pinne 2, och DATA-ledningen till pinne 4.

anslut kabeln

 

Digitemp i DOS

Har du inte laddat hem DigiTemp för DOS än, så gör det nu.

Koppla in kontakten i en av datorns COM-portar. Exempelvis COM2.
Initialisera digitemp genom att vid DOS-prompten skriva:

digitemp -s2 -i

Digitemp läser då av de unika ID-nummer som varje sensor har, och sparar detta i en konfigurationsfil. -s2 gör så COM2 läses av. Det kommer se ut såhär på skärmen, med andra ID-nummer såklart:

DigiTemp v1.1 Copyright 1997-98 by Nexus Computing

ROM #0 : 1077790000000078
ROM #1 : 10777A0000000036

För att sedan läsa av temperaturerna, skriver du

digitemp -a

och då kommer det förhoppningsvis se ut ungefär såhär:

DigiTemp v1.1 Copyright 1997-98 by Nexus Computing

Sensor 0 C: 37.59 F: 99.67
Sensor 1 C: 21.53 F: 70.75

Om du märker att det blir helt tokiga temperaturer, kan det bero på att sensorerna behöver mer tid på sig att skicka iväg sina data. Då får man initialisera digitemp igen, med den skillnaden att man också anger read timeout-värdet. Jag var tvungen att sätta det till 600ms, istället för 500ms, som är standard.

digitemp -s2 -i -r600

Detta är tiden det tar att läsa av temperaturen från en enda sensor. Har man tillräckligt många sensorer, så att den sammanlagda tiden överstiger fail timeout-värdet, som är 5 sekunder som standard, får man ändra det med t.ex -f6 för att ändra det till 6 sekunder.

Alltså, initialisera digitemp för COM2, read timeout på 600ms samt fail timeout på 6 sekunder:

digitemp -s2 -i -r600 -f6

Läs filen readme.dos för mer information, samt skriv bara digitemp för att se möjliga kommandoväxlar.

 

Digitemp i Linux

info tillhandahållen av Biograf1001

Börja med att ladda hem källkoden till DigiTemp för Linux.

När den väl är hemma, packar du upp den genom att skriva:

ex: tar -zxf digitemp-3.3.2.tar.gz

Du bör nu ha en mapp som heter digitemp-3.3.2 under samma mapp där du utförde kommandot. Där i ska det nu finnas en hel hög med filer, bl.a digitemp. I sånt fall är allt ok.

Nu behöver du endast skriva följande:

./digitemp -a -s /dev/ttyS0

där -a är för att läsa av samtliga sensorer på linan och -s definierar vilken serieport du använder. för mer information om alla växlar så kan du skriva

./digitemp --help

 

OWFS i Linux

info tillhandahållen av Macce

En bättre mjukvara för 1-wire till Linux är OWFS.
OWFS monteras på en mapp där den visar sensorer på bussen.
T.ex. DS1820-sensorer visas som mappar vars namn börjar på 10.
DS2405-brytare visas som mappar vars namn börjar med 05.
Vad som följer efter detta är sensorns ID.
I dessa mappar finns alltid funktionerna för aktuell krets.

T.ex. för att lista alla temperatursensorer kan man skriva

cat 10.*/temperature

För att ställa in utgången till hög på en DS2405 skriver man

echo 1 > 05.XXXXXXXXXXXXX/PIO

Detta kan verka lite jobbigt i början, men när man väl kommit igång vill man inte byta tillbaka till Digitemp.
OWFS stöder nästan alla 1-wire-enheter.

Installationsinstruktioner m.m. finns på deras hemsida.

 

Digitemp i Windows

Det fungerar också väldigt bra i Windows, t.ex. NT, 2000 och XP.
Då plockar man hem digitemp för Windows.
Det körs via kommandotolken, så det är lätt att bygga ihop ett eget GUI i exempelvis VB, eller köra det från exempelvis PHP på Windows-servern.
Det fungerar likadant som för DOS-versionen, men läs readme-filen, för det finns vissa skillnader.

 

Resultat

Såhär kan det då se ut i DOS efter att allt gått som planerat.

dostext

Sen får man väl hitta på något roligt med dessa temperaturer.

 

Modifiering av adaptern

Jag tänkte att om jag nu måste slita ut 486an ur skåpet någon gång för att felsöka eller något sådant, så vore det ju bra att kunna koppla in sig på temperaturkabeln från annat håll med 1-wire-adaptern än i serverskåpet. Det är inte så lätt med kabeln fastlödd direkt på.
Därför köpte jag följande från Elfa:

1st 42-051-18 DC chassidon 2,1mm M8-hål
1st 42-049-54 DC-propp 2,1/5,5 mm vinkl.

Sen tog jag D-SUB-kåpan och karvade ur lite på hörnen vid de röda pilarna så chassidonets mutter gick ner i skåran. Den passar nämligen i övrigt väldigt bra där i.

dsubkåpa


Sedan  skruvade jag dit själva chassidonet. Inte så hårt alls, utan bara så det inte låg löst och skramlade. Sen justerade jag muttern så chassidonet satt bra med det långa benet uppåt. Sen märkte jag på muttern och donet så jag såg hur det skulle sitta.

passform

Chassidonet togs ur och muttern fixerades med superlim.

superlimma

Sen böjde jag till benen lite så de inte tog i kretskortet någonstans, lödde dit ett par sladdstumpar, och fäste dem på D-SUB-kontakten. Det korta benet på DC-chassidonet är mittenpinnen, och där kopplade jag dataledningen.

lödning

Sen snäppte jag ihop kåpan, och se så snyggt det blev!

snäpp ihop

Sen gick jag lös på den avklippta kabeländen och monterade den vinklade proppen. Kom ihåg att dataledningen ska gå till mittenpinnen.

kabelkontakt

Sådär. Det kunde inte bli bättre. Mycket funktionellt.

anslutet

Sen återstår bara att sätta en till propp på något lämpligt ställe längs kabeln. T.ex där man tänker utföra sina tänkta servicearbeten. Naturligtvis är 1-wire-nätverket draget runt hela huset, så det är ju bara att koppla in sig...

poros.se
© The Mad Modders 2003 - 2024
The Mad Modders tar inget ansvar för vad du gör med den information som finns på denna sida. Innehållet tillhör The Mad Modders och får ej kopieras eller på annat sätt spridas utan tillåtelse av The Mad Modders.