spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Elettronica > E. Digitale

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 06-11-2011, 14.31.13
bibo86 bibo86 non è collegato
Nuovo robottaro
 
Data registrazione: 25-02-2011
Residenza: a
Messaggi: 25
Potenza reputazione: 0
bibo86 E' per ora ancora un mistero
Predefinito Aiuto Programma Arduino PT1000

Ciao a tutti, ho realizzato un circuito per il controllo di una PT1000 utilizzando questo integrato http://www.smartec.nl/pdf/DSUTI.pdf di preciso da pagina 13 a 15.
Il programma che ho utilizzato per arduino è questo:
Codice:
#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()

{
  float res1;
float temperatura;


   if(ReadUTI(UTI_PIN,&res1,&temperatura,UTI_RESISTANCE_REF)) { 

	Serial.print("Resistance 1: ");
	Serial.print(res1);
	Serial.print("\t");
	Serial.print("Temperatura: ");
	Serial.print(temperatura);
	Serial.print("\t");
	
    }
    else {
	Serial.print("Not Found");
    }
    Serial.print("\n");
   delay(2000);
}

int ReadUTI(uint8_t pin, float *res1,float  *Temperatura,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); // mette la variabile bit valori ke ha in ingresso
    unsigned long width[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
    float nOff=0,nAB=0,nCD=0,nBC=0,nDF=0;// mettere anche queste float se cambio

   // 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) { //se  startindex vale -1 nn ho trovato niente
	nOff=width[startindex]+width[startindex+1];
	nAB=width[startindex+2];
	nCD=width[startindex+3];
	//nBC=width[startindex+4];
	//nDF=width[startindex+5];

	*res1=((nCD-nOff)/(nAB-nOff))*refRes;
	*Temperatura=GetPlatinumRTD(*res1,refRes);

	return 1;
    }
    else {
	return 0;
    }
 
}


 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>-50&&T<500) {
	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;
    }
}
Il programma funziona abbastanza bene il problema è che mi trova troppi notfound e non mi riesce correggerlo, c'è da specificare che questo programmino era per tre PT1000.
Mi potete aiutare????????Come mai mi trova tanti notfound???
Grazie

Ultima modifica di bibo86 : 08-11-2011 alle ore 11.02.20
Rispondi citando
  #2  
Vecchio 08-11-2011, 11.03.15
bibo86 bibo86 non è collegato
Nuovo robottaro
 
Data registrazione: 25-02-2011
Residenza: a
Messaggi: 25
Potenza reputazione: 0
bibo86 E' per ora ancora un mistero
Predefinito

Nessuno mi aiuta???Volevo spostare il post sotto elettronica:Arduino come faccio???
Rispondi citando
  #3  
Vecchio 08-11-2011, 11.21.16
L'avatar di sergio_camici
sergio_camici sergio_camici non è collegato
Administrator
 
Data registrazione: 24-05-2002
Residenza: Binasco (MI)
Età : 55
Messaggi: 2,665
Potenza reputazione: 303
sergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua famasergio_camici La sua reputazione è oltre la sua fama
Predefinito

Non uso l'arduino e quindi posso darti un aiuto parziale.

Intanto vedo che il "not found" viene da startindex=-1.
La sua condizione è sottoposta ad un if un pochino criptico (nomi delle variabili ed indici più significativi ti prego)
Capisco solo che per dodici volte calcoli dei tempi di on e di off di un segnale (ma su cosa sei sincronizzato?)

Segue un altro ciclo di 12, ma che (orrore) filtri a 7 forzando l'indice...

Mandati in debug l'array width e guarda cosa leggi.
Temo che il tuo metodo di calcolo della lunghezza non sia molto preciso.
Non puoi usare un timer hw?
__________________
ciao
Sergio
---
Hai deciso di costruire un robot? Bene...
Cominciamo dalle brutte notizie: non e' facile...
Rispondi citando
  #4  
Vecchio 08-11-2011, 14.15.35
bibo86 bibo86 non è collegato
Nuovo robottaro
 
Data registrazione: 25-02-2011
Residenza: a
Messaggi: 25
Potenza reputazione: 0
bibo86 E' per ora ancora un mistero
Predefinito

Ciao Sergio intanto grazie per la risposta, premettendo che non sono un programmatore di C anzi, ho cercato di ottenere la mia temperatura adattando esempi trovati su Internet.
Io so che l'uti mi dovrebbe dare questo ciclo Toff,TAB,TCD per ottenere la variazione della resistenza. Ho capito che invece di 12 volte devo calcolare i tempi ad on e off 8 volte .
Diciamo che il codice è brutto, sono riuscito a modificarlo e per ora non mi escono notfound però mi rilascia una temperatura un pò alta.

Ultima modifica di bibo86 : 08-11-2011 alle ore 14.34.49
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
errore compilazione programma modulo infrarossi collegato ad arduino hteo Arduino 1 29-07-2013 21.26.20
creare programma in java ed interfacciarlo con arduino jacopo.g Arduino 3 10-08-2012 17.43.13
Arduino + shield non programma! Ziko Arduino 4 07-07-2012 06.55.00
modifica su programma per arduino e domandina xbee xctu blk012 P. in C, C++ 1 28-02-2012 12.07.22
Aiuto Comprensione Programma bibo86 Arduino 0 03-12-2011 13.21.25


Tutti gli orari sono GMT. Adesso sono le: 01.15.10.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB