Sida 1 av 1

SMT160 kod

Postat: 16 januari 2007, 14:42:24
av klintan
Detta är en efterlysning, hittade för en tid sen en mkt enkel c-kod hur man plockade upp tempvärden till AVR med SMT160. Hittar dock inte inlägget nu varken med google eller forumets sökmotor. Tänkte om någon hittar den ? eller om författaren till koden kunde lägga upp den här igen :)

Porta Delphi kod

Postat: 16 januari 2007, 14:50:40
av SvenPon
Kan du inte porta min Delphikod till C på funktionen ovan ?

Edit:
Woops fel tråd.

Const K1 = 0.32 ;
Const K2 = 0.0047 ;
//************************************************
Function GetTemp(AddrVal :Integer ; Pin :Integer) :
Single;StdCall ;
Var
cntHigh : Integer ;
totNumOfSamp : Integer ;
inSignal : Byte ;
smartSign : Byte ;
Mask : Byte ;
halfSek : Dword ;
Begin
Case Pin of
10: Mask := 64 ;
11: Mask := 128 ;
12: Mask := 32 ;
13: Mask := 16 ;
15: Mask := 8 ;
End ;
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) ;
If GetTickCount > halfSek Then Break ;
End ;
If Pin = 11 Then
cntHigh := totNumOfSamp - cntHigh ;
GetTemp := (cntHigh/totNumOfSamp - K1)/K2;
End;

Postat: 16 januari 2007, 14:51:23
av bengt-re
Vet inte vad du kör med exakt för prylar, men dessa nissar har gjort ungefär det du vill.


http://www.oru.se/oru-upload/Institutio ... 108-04.pdf


float sensor_smt160_read(sensor_smt160 *this,double n,char type)
{
this->type=type;
this->n=n;
this->duty_cycle=digital_sampling(this->port,this->bit_mask,this->n);
this->temp= (float) this->duty_cycle/(float)this->n;
this->temp=(((this->temp-0.32)/0.0047));
return this->temp;
}

Postat: 16 januari 2007, 14:56:10
av klintan
aa det var en som liknade den där, kan nog använda den där också :) tack så mkt.

SMT160-30 logik

Postat: 16 januari 2007, 17:04:32
av SvenPon
Kör i en loop under 0.5 sek
Räkna hur många du hinner med = TotSamples
Räkna hur många som har varit höga under denna tid cntHigh

Då blir svar i Celcius = (cntHigh / TotSamples - 0.32) / 0.0047