Tittade lite på denna artikel som är intressant Kolla mitt gamla projekt Som Sven skrev så är signalen pulsbreddsmodulerad. Ju varmare det är desto längre är varje puls och tiden mellan pulserna minskar. Man räknar alltså inte antalet pulser. Genom att kontrollera om det för tillfället finns en puls (hög signal) eller om man är mellan två pulser (låg signal) väldigt många gånger så får man ett mått på hur stor del av tiden som signalen är hög, alltså hur varmt det är. ok tack för en vän till mig är riktigt intresserad av att ha en sådan Här kommer exemplet för Linux, HTML-kodat och klart :) Svara på inlägget med html-koden, över rutan där du skriver svaret får du upp min HTML oformaterad. Kopiera och spara i en html-fil lokalt så ska du nog kunna läsa sedan. https://www1.elfa.se/data1/wwwroot/webroot/Z_DATA/07308869.pdf För många år sedan körde jag ett projekt för en bonde som ville veta temperaturen ute på ett fält. ok den behöver en extra källa för att få det så bra som möjligt Nää kör inte 9 v kör 6 V. Jag hade en 6 v begränsare till min 9V. Motstånd duger inte. hmm ta 5 volt är ju en bra ide men om jag ska ha en 10-20 meter lång kabel, räcker det endå?? TO220 betecknar förpackningen. SMT finns i 3 förpackningar.Jag gillar TO220 förpackningen Sök på SMT 160-30 på www.elfa.se</url så kommer du se TO220. Det är den som jag kör med också. Funkar bra och är bra eftersom den är som Sven sa lått att fästa någonstans eftersom den har en metallplatta med ett hål för att tex montera en skruv i. Joakim: Nopp. Som det är nu kör jag men en microcontroler Arduino. Adruino kan kommunalisera men datorn via USB. Braaaaaaaaa Joakim Jaja, nu skall vi inte överdriva här. jag använder bara redan färdigutvecklade moduler som man kopplar ihop. Förutom tempogivaren då som inte är en del av modulerna till Arduino. XBee är också för trådlös kommunikation, enligt ZigBee-standarden. Största fördelen är väl effektsnålhet och möjlighet till mesh-topologi, alltså redundant koppling mellan noder. <b>Helt Out of Topic</b> Men ! ändå. Utveckling var ju temat. Temperatur ingick.Temp avläsaren
http://www.pellesoft.se/area/articles/article.aspx?artid=447
Sitter och undrar om man ska göra om den så den passar linux också
Vad jag förstår så läser den av pulsen, ju mer varmare det är ju längre puls???
Fast jag hänger endå lite riktigt med hur den räknar
Räknar den hur många pulsar den klarar av per sek eller vad??
(Vet inte riktigt var jag ska lägga denna, det är ju elektronik men inte VB)Sv: Temp avläsaren
Programarkivet:Temperatur med SMT 160-30
Sk pulsbreddsmodulation dvs det är olika långt mellan höga och låga läge.
Du tänker rätt.
Man räknar hur många höga pulser det kommer under en viss tid ex 1 sek
Just detta projekt så är max temp 150gr och då kommer det ~ 4000 höga pulser /sek
http://www.eetimes.eu/scandinavia/showArticle.jhtml?articleID=19500193&queryText=noggrannhet
Här Delphikoden jag räknar inkommande höga under 500 ms
<code>
halfSek := GetTickCount + 500 ;
cntHigh := 0 ;
For totNumOfSamp := 1 TO 100000000 do begin
inSignal := DlPortReadPortUchar(AddrVal) ;
smartSign := inSignal And Mask ;
If smartSign = Mask Then inc(cntHigh) ; 'räknare öka med 1, cntHigh växer under 500 ms
If GetTickCount > halfSek Then Break ;
End ;
If Pin = 11 Then
cntHigh := totNumOfSamp - cntHigh ;
GetTemp := (cntHigh/totNumOfSamp - K1)/K2;</code>Sv: Temp avläsaren
Jag har haft en version av artikeln anpassad för linux på min privata hemsida tidigare, men jag har plockat bort den från nätet nu. Ska se om jag kan hitta den på datorn senare.
/JohanSv:Temp avläsaren
Men han kör linux på sin server som han vill koppla till
Föresten hur långt kan man ha en kabel mellan porten och SMT 160-30
Vi satt och undrade att dra några TP kablar från porten till dom ställen vi sätter upp SMT 160-30
SvenPon, gillar ditt program skarpt men som sagt den är byggt för windows.
Jag har tänkt att göra något liknande att den sparas i en MySQL databas varje timme.
Kommer bli en lång tabell i slutet på året :DSv:Temp avläsaren
Johan
<H2>Bygg din egen termometer - C++/Linux</H2>
<p>Detta exemplet visar hur man läser av en termometer i C++ under Linux. Jag kan inte garantera att detta fungerar för dej eller att det inte förstör din hårdvara (var försiktig!). Men det fungerar för mig och jag hoppas att någon annan kan ha nytta av det! Se artikeln Bygg din egen termometer - VB för bygginstruktioner samt information om hur det fungerar.</p>
<H3>Exempelprogram</H3>
<p class="kod">
<code>
#include <iostream><br>
#include <sys/io.h><br>
#define BASEPORT 0x378<br>
<br>
float readTemp(long adr, int mask, long numsamp){<br>
long numhigh=0;<br>
for(long i=0; i < numsamp; i++){<br>
if (int(inb(adr) & mask) != 0)<br>
numhigh++;<br>
}<br>
return ((double(numhigh) / double(numsamp)) - 0.32) / 0.0047;<br>
}<br>
<br>
int main()<br>
{<br>
if (ioperm(BASEPORT,3,1))<br>
cout << "fel" << endl;<br>
<br>
cout << readTemp(BASEPORT+1, 64, 1000000) << endl;<br>
}<br>
</code>
</p>
<H3>Förklaring</H3>
<p class="kod">
<code>
#define BASEPORT 0x378<br>
</code>
</p>
<p>Anger vilken basadress porten har, den första porten brukar ha adressen 0x378 och den andra 0x278 (om det finns någon), men detta kan variera.</p>
<p class="kod">
<code>
for(long i=0; i < numsamp; i++){<br>
if (int(inb(adr) & mask) != 0)<br>
numhigh++;<br>
}<br>
</code>
</p>
<p>Här läses porten av <i>numsamp</i> gånger för att kontrollera om det är en hög eller låg signal. Indatat maskas med masken <i>mask</i> för att man ska kunna läsa av den biten som motsvarar pinnen på porten som man har anslutit sensorn till. Genom att räkna antalet tillfällen som porten är hög kan man få fram hur stor andel av tiden detta motsvarar.</p>
<p class="kod">
<code>
return ((double(numhigh) / double(numsamp)) - 0.32) / 0.0047;<br>
</code>
</p>
<p>Formeln för att räkna ut temperaturen, läs mer på tillverkarens hemsida.
<p class="kod">
<code>
if (ioperm(BASEPORT,3,1))<br>
cout << "fel" << endl;<br>
</code>
</p>
<p>Ger programmet rättigheter att läsa från porten (<b>OBS att programmet måste köras med root-rättigheter</b>)</p>
<p class="kod">
<code>
cout << readTemp(<b>BASEPORT+1</b>, 64, 1000000) << endl;<br>
</code>
</p>
<p>Statuspinnarnas (10, 11(inverterad), 12, 13, 15) värden finns på adressen över basadressen.</p>
<p class="kod">
<code>
cout << readTemp(BASEPORT+1, <b>64</b>, 1000000) << endl;<br>
</code>
</p>
<p>64 är masken för pinne 10, se VB-klassen för motsvande värden för de andra pinnarna.</p>
<p class="kod">
<code>
cout << readTemp(BASEPORT+1, 64, <b>1000000</b>) << endl;<br>
</code>
</p>
<p>Antalet samplingar, 1000000 har fungerat bra för mig, men testa dej fram till ett värde som ger ett stabilt resultat för dej. Prestandan på dator spelar in lite här, ju snabbare dator, desto fler samplingar behövs verkar det som.</p>
<H3>Val av pinnar</H3>
<p>Detta exemplet är endast för statuspinnarna (10, 11(inverterad), 12, 13, 15), vill du använda 2-9 måste porten ställas i läsläge först. Om du kikar på VB-exemplet kan du säkert lista ut hur det går till!</p>Sv:Temp avläsaren
/JohanSv:Temp avläsaren
Enligt Databladet kan du ha en kabel på 20 meter. Dock vet jag inte om du kan ha en 20m lång ström kabel. Kör med extern ström och skicka signalen 20m borde funka.
Jag har testat att ta 5V från datorn till SMT men det funka inte så bra. När jag körde extern matning funka det fint.Sv: Temp avläsaren
Nu har jag en lösning som kör trådlöst. SMT lämnar ett pulståg 1- 0 som lätt låter sig moduleras. 4Khz.
Vi hade ¨ 500 m kabel. Funkade alldeles utmärkt.
Vi hade klart extern matning till SMT. 9 V batteri. Batteriet varade 2 år.
SMT vill ha 4.7 - 7 V för att funka korrekt. SMT dra så lite ström så det är försumbart.
Moderna Parallellportar lämnar inte 5 V längre och duger inte till att mata SMTSv:Temp avläsaren
Någon som har en ritning till det för man har inte lust att sabba moderkortet
eller är det "bara" att ta stiftet som går till + på pararellporten till ett motstånd och sedan till 9v batteri och den andra stiftet som går till minus till minuspolen på batteriet??
jag tittar på den där ritningen som Johan har gjortSv: Temp avläsaren
Om du inte köpt SMT-160-30 så rekommenderar jag T0220 kapsel.
Själv tar jag 5 volt från datorns strömförsörjning. Röd Svart på strömförsörjn till ex HD.
Extern matning rekommenderas för ovana elktronissar. 4 st 1.5 V i en liten söt kapsel.(6 V)
Plus till ben 2 SMT Minus till ben 3 SMT och pinne 25 på Parallellporten
Slutligen anslut ben 1 SMT till något av pinnarna 13 12 10 15 på Parallellporten.
Enl databladet drar SMT 160 uA (microamp) 0.000000160 A Då duger inte motstånd.
Skulle bli ett motstånd med 8 siffror ex 18750000 ~ 19 MegaOhm.Sv:Temp avläsaren
Eftersom det skrevs tidigare att det behövs en extern spänning och ett batteri är ju enkelt att fixa och får det bra än att dra en extra ström från datorn.
Finns ju andra batterier man kan använda och seriekoppla om det så behövs
Nej inget är beställt ännu fören man har all fakta på bordet.
Den där T0220 du snackar om, är den lika bra eller bättre??
Försöker hitta info om den men får upp en massa om jag inte tror är det jag söker "7812 Voltage Regulator 1 Amp T0220"Sv: Temp avläsaren
eftersom den har en metallplatta med hål i så man lätt kan fästa den någonstans.
Prestanda i övrigt är samma,möjligtvis att TO220 förpackningen är snabbare i reaktion.
Oki satsa på externbatteri 6 V. Lämlig kabel är som jag använder är stereo kabel typ hörlurar.
Tar du gemensamma skärmen som minus/jord (ben 3 och pin 25) och de andra två till ström och output.Sv:Temp avläsaren
Sv:Temp avläsaren
Nyfiken hur använder du din applikation. Kör du med min lösning SMT160.dll ?
Själv har jag nu bla. loggat utetemperatur sedan 2002.
Körde också bara på kul en övervakning av frysen. Där hände ingenting så jag la av.
Kolla bild
Programarkivet:Temperatur med SMT 160-30
och
Kolla även
Programarkivet:Testa Tempsensor SMT160-30
Kan du ha användning av när du testar ditt projektSv: Temp avläsaren
Jag plan är att koppla på en Display på min Arduino som visar temperaturen. Har även en ide att koppla på en GSM-modul som skickar SMS när temperaturen går under 3ºC. Och då kunna starta en värme fläkt.
Detta för att min mor har en sommarstuga och vattnet fryser ibland så om man kopplar på en givare på vatten ledningen så kan den varna och sätta på värmefläkten och på så sätt undvika att ledningarna fryser.
Har dock ingen GSM-modul är det får bli när man får lite mer pengar på fickan.Sv:Temp avläsaren
Impad ideer föder ideer.
Min enkla lösning gjorde att bonden kunde kolla på sin åker om det var lämpligt att skörda.
Nu är det bara trådlöst som gäller. Braaaaaa sånna som du som föder utvecklingen.Sv: Temp avläsaren
På tal om trådlöst finns det olika moduler till till Arduino. Tex. WiFi ( Trådlöstnätverk ), GSM ( mobil ), Xbee ( har inte kollat in vad det är än ), RF ( liten radio sändare ).Sv:Temp avläsaren
Sv: Temp avläsaren
Dessa djä... järnvägsväxlar.
Finns ett gammalt kanonförslag om att lägga någon tålig gummislang mellan växlarna.
Behövs kanske bara läggas ut vintertid.Kanske ha lite Glykol/Varmvatten i dom.
Dom skall alltså fylla ut tomrummet resp pressa samman när växeln arbetar.
Lägg ut dom på strategiska ställe när det brinner till.