Smartec SMT160-30

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Hanspettersson
Inlägg: 5
Blev medlem: 16 augusti 2003, 23:35:49

Smartec SMT160-30

Inlägg av Hanspettersson »

Hej undrar om någon vet hur man kopplar in en Smartec SMT160-30 till en Basic Stamp 2.
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1651
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Det är inga problem, det är bara att koppla out-pinnen på SMT160-30 direkt in på en in-signal på BS2:an.

SMT160-30 ger en utsignal enligt formeln:

D.C. = 0.320+0.00470*t D.C. = duty cycle
t = Temperature in °C
dvs. den ger en PWM-signal som varierar i bred proportionellt med temperaturen.

...allt står i databladet
man kan även se ett inkoppligs exempel på elfas sida.
Hanspettersson
Inlägg: 5
Blev medlem: 16 augusti 2003, 23:35:49

Program

Inlägg av Hanspettersson »

Undrar om någon har ett färdigt program till en BS2
Användarvisningsbild
RDX*
EF Sponsor
Inlägg: 1651
Blev medlem: 28 maj 2003, 22:52:04
Ort: Skåne - Lund

Inlägg av RDX* »

Det är nog mer vanligt att folk använder DALLAS 1620 för temp mätning till BS.
klintan
Inlägg: 307
Blev medlem: 13 juni 2003, 01:59:05
Ort: Ekerö

Inlägg av klintan »

det finns en färdigskriven klass och en artikel om hur man kopplar smt160-30 på Pellesoft.se, kanske kan ge dig lite tips om hur du ska utforma ditt basic program
Användarvisningsbild
nedo
Inlägg: 16
Blev medlem: 5 juni 2003, 13:37:48

Inlägg av nedo »

Skrivit en funktion för att göra det med en AVR har skrivit om formeln en del så att den inte använder flyttal men det är väl inte riktigt lika exakt efteråt

outgången från smt160-30 ligger på porta 7 på avr:en

Kod: Markera allt

unsigned int checktemp()
{
        unsigned int i;
        unsigned int high=0;
        unsigned int low=0;
 
        while((inp(PINA) & 0x80));
 
        /* Mäter under 100 våglängder */
        for( i = 0 ; i < 100 ; i++)  
        {
                while( inp(PINA) & 0x80 )
                        high++;
                while( !(inp(PINA) & 0x80) )
                        low++;
        }
 
        /* C = hög / (samples / 213) - 68 */ 
        return ((high/((low+high)/213)) - 68);
}
Skriv svar