Show Posts
Pages: [1] 2
1  Forum 2005-2010 (read only) / Syntax & Programs / Re: Pt1000 converting Resistance to Temp on: April 12, 2010, 09:36:50 am
Fixed it!
Code:
float GetPlatinumRTD(float R,float R0) {
    float A=3.9083E-3;
    float B=-5.775E-7;
    float T;
    
    R=R/R0;
    
    //T = (0.0-A + sqrt((A*A) - 4.0 * B * (1.0 - R))) / 2.0 * B;
    T=0.0-A;
    T+=sqrt((A*A) - 4.0 * B * (1.0 - R));
    T/=(2.0 * B);
    
    if(T>0&&T<200) {
      return T;
    }
    else {
      //T=  (0.0-A - sqrt((A*A) - 4.0 * B * (1.0 - R))) / 2.0 * B;
      T=0.0-A;
      T-=sqrt((A*A) - 4.0 * B * (1.0 - R));
      T/=(2.0 * B);
      return T;
    }
}
2  Forum 2005-2010 (read only) / Syntax & Programs / Re: Pt1000 converting Resistance to Temp on: April 12, 2010, 05:21:11 am
ooops must be a copy error =) still no change in the output though
3  Forum 2005-2010 (read only) / Syntax & Programs / Re: Pt1000 converting Resistance to Temp on: April 12, 2010, 01:43:36 am
Ok i changed the code like this:
Code:
float ConvertRtoT(float R,float R0) {
    float A=3.9083E-3;
    float B=5775E-7;
    float T;
    R=R/R0;
    
    T = (0.0-A + sqrt(A*A - 4.0 * B * (1.0 - R))) / 2.0 * B;
    
    Serial.print(T);
    Serial.print(";");
    
    T=  (0.0-A - sqrt(A*A - 4.0 * B * (1.0 - R))) / 2.0 * B;
    
    Serial.print(T);
 
    return T;
}

But still no change in the values!
4  Forum 2005-2010 (read only) / Syntax & Programs / Pt1000 converting Resistance to Temp on: April 11, 2010, 02:47:46 pm
Hi im trying to create a function that converts resistance to temperature with the values from a pt1000 sensor!

Code:
float ConvertRtoT(float R) {
    float A=3.9083 * pow(10,-3);
    float B=5775 * pow(10,-7);
    float T;
    
    T = (0-A + sqrt(pow(A,2) - 4 * B * (1 - R/1000))) / 2 * B;
    
    Serial.print(T);
    Serial.print(";");
    T=(0-A - sqrt(pow(A,2) - 4 * B * (1 - R/1000))) / 2 * B;
    Serial.print(T);
    return T;

}

the value of R is 1090Ohm but i only get 0.00;-0.00 C temp.

The equation that  im trying to use looks like this:

R = R0 * (1 + A*T + B*T^2 -100*C*T^3 + C*T^4)

where

R = resistance of sensor in ohms
R0 = resistance at zero degrees Celsius in ohms (100 for Pt100, and 1000 for Pt1000)
T = temperature in degrees Celsius
A = 3.9083*10^-3
B = -5.775*10^-7
C = -4.183*10^-12 for T < 0 degrees Celsius
C = 0 for T >= 0 degrees Celsius

5  Forum 2005-2010 (read only) / Scandinavia / Re: KonungR on: February 15, 2010, 01:16:45 pm
västernorrland
6  Forum 2005-2010 (read only) / Scandinavia / Re: LCD Shield on: February 16, 2010, 03:44:47 am
nej jag beställde den i fredags och den skickades igår, så jag får väl se om den hinner fram den här veckan.. jag köpte en freeduino och lcd shielden samtidigt och det gick på 350kr med frakt
7  Forum 2005-2010 (read only) / Scandinavia / Re: LCD Shield on: February 15, 2010, 03:19:55 pm
jag tror jag har hittat en lösning nu, jag kör med en sån här: http://www.electrokit.se/kontaktdon-kretskort-kabel-kontakt-med-kabel-10-pol-20-cm_41002826

nu återstår bara, hur ansluter jag ssr till arduino?
8  Forum 2005-2010 (read only) / Scandinavia / Re: LCD Shield on: February 15, 2010, 12:56:42 pm
ja men det är en lcd-shield, alltså passar den direkt på arduinon, det är bara det att jag vill ha lcdn monterad på locket till lådan och arduinon monterad i botten.
9  Forum 2005-2010 (read only) / Scandinavia / Re: LCD Shield on: February 15, 2010, 08:57:50 am
jag har köpt den redan och jag är inte så bra att löda att jag vill göra nått sånt
10  Forum 2005-2010 (read only) / Scandinavia / Re: LCD Shield on: February 14, 2010, 11:52:30 pm
tjena slatten!

Det var bra pris på den där lcdn osso var den ju färdig för arduino och hade joystick, länken du skickade fungerar inte efterssom elfa kör med sessions, skicka artikel-nummer istället!
11  Forum 2005-2010 (read only) / Scandinavia / Re: LCD Shield on: February 14, 2010, 12:13:34 pm
här är den lcd-shield jag tänkte köpa
http://www.nuelectronics.com/estore/index.php?main_page=product_info&cPath=1&products_id=12
12  Forum 2005-2010 (read only) / Scandinavia / LCD Shield on: February 14, 2010, 12:12:46 pm
hej jag tänkte ansluta en sån här LCD-shield till arduino, men jag kan inte montera den direkt ovanpå arduino som det är meningen, vilken kabel ska jag skaffa för att göra detta (länka)!
13  Forum 2005-2010 (read only) / Interfacing / Re: Smartec UTI on: April 26, 2010, 05:58:02 am
I dont really understand that statemask part myself i saw that in another function and just used it in my code.
Code:
int ReadUTI(uint8_t pin, double * res1,double * res2,double * res3,int refRes)
{
    int state = HIGH;
    int i,startindex=-1;
    uint8_t bit = digitalPinToBitMask(pin);
    uint8_t port = digitalPinToPort(pin);
    uint8_t stateMask = (state ? bit : 0); //State HIGH
    unsigned long width[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    double nOff=0,nAB=0,nCD=0,nBC=0,nDF=0;

    while ( (*portInputRegister(port) & bit) != stateMask) //While state is LOW
        ;

    for(i=0;i<12;i++) { //Count 12 cycles so you are sure you get the whole.
      while ( (*portInputRegister(port) & bit) == stateMask) //Count the HIGH time
          width[i]++;
      while ( (*portInputRegister(port) & bit) != stateMask) //Count the LOW time and add them together
          width[i]++;
    }
    for(i=1;i<12;i++) { //Find the Index for Toff cycle
      if(i<7) {
        if(width[i]<width[i+2]&&width[i]<width[i+3]&&width[i]<width[i+4]&&width[i]<width[i+5]&&width[i+1]<width[i+2]&&width[i+1]<width[i+3]&&width[i+1]<width[i+4]&&width[i+1]<width[i+5]) {
          startindex=i;
          i=12;
        }
      }
    }
    if(startindex!=-1) {
      //Save the cycles (Makes it easier to know what you are calculating
      nOff=width[startindex]+width[startindex+1];
      nAB=width[startindex+2];
      nCD=width[startindex+3];
      nBC=width[startindex+4];
      nDF=width[startindex+5];

      //Do the calculations according to the UTI manual.
      *res1=((nBC-nOff)/(nAB-nOff))*refRes;
      *res2=((nCD-nOff)/(nAB-nOff))*refRes;
      *res3=((nDF-nOff)/(nAB-nOff))*refRes;

      return 1; //Return 1 if the cycles where found
    }
    else {
      return 0;
    }
}
14  Forum 2005-2010 (read only) / Interfacing / Re: Smartec UTI on: April 07, 2010, 04:22:44 pm
Finally got it working smiley



Code:
#include <stdio.h>
#include "pins_arduino.h"

#define UTI_PIN 5
#define UTI_RESISTANCE_REF 1000

void setup()
{
  Serial.begin(9600);
  pinMode(UTI_PIN, INPUT);
}

void loop()
{
  double res1,res2,res3;
  
   if(ReadUTI(UTI_PIN,&res1,&res2,&res3,UTI_RESISTANCE_REF)) {
      Serial.print("Resistance 1: ");
      Serial.print(res1);
      Serial.print("\t");
      Serial.print("Resistance 2: ");
      Serial.print(res2);
      Serial.print("\t");
      Serial.print("Resistance 3: ");
      Serial.print(res3);
      Serial.print("\t");
    }
    else {
      Serial.print("Not Found");
    }
    Serial.print("\n");
   delay(2000);
}

int ReadUTI(uint8_t pin, double * res1,double * res2,double * res3,int refRes)
{
    int state = HIGH;
    int i,startindex=-1;
    uint8_t bit = digitalPinToBitMask(pin);
    uint8_t port = digitalPinToPort(pin);
    uint8_t stateMask = (state ? bit : 0);
    unsigned long width[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    double nOff=0,nAB=0,nCD=0,nBC=0,nDF=0;
        
    while ( (*portInputRegister(port) & bit) != stateMask)
        ;
    
    for(i=0;i<12;i++) {
      while ( (*portInputRegister(port) & bit) == stateMask)
          width[i]++;
      while ( (*portInputRegister(port) & bit) != stateMask)
          width[i]++;
    }
    for(i=1;i<12;i++) {
      if(i<7) {
        if(width[i]<width[i+2]&&width[i]<width[i+3]&&width[i]<width[i+4]&&width[i]<width[i+5]&&width[i+1]<width[i+2]&&width[i+1]<width[i+3]&&width[i+1]<width[i+4]&&width[i+1]<width[i+5]) {
          startindex=i;
          i=12;
        }
      }
    }
    if(startindex!=-1) {
      nOff=width[startindex]+width[startindex+1];
      nAB=width[startindex+2];
      nCD=width[startindex+3];
      nBC=width[startindex+4];
      nDF=width[startindex+5];
      
      *res1=((nBC-nOff)/(nAB-nOff))*refRes;
      *res2=((nCD-nOff)/(nAB-nOff))*refRes;
      *res3=((nDF-nOff)/(nAB-nOff))*refRes;
      
      return 1;
    }
    else {
      return 0;
    }
}
15  Forum 2005-2010 (read only) / Interfacing / Re: Smartec UTI on: April 04, 2010, 09:18:13 am
Isnt there anyone who knows what im doing wrong?
Pages: [1] 2