collapse

* Posts Recentes

Making Linear Ball Way Cages por jm_araujo
[14 de Agosto de 2018, 23:03]


TV Antiga Desliga-se por almamater
[14 de Agosto de 2018, 12:34]


Tubo PVC 32mm Branco por SerraCabo
[10 de Agosto de 2018, 22:49]


Ajuda para contruir uma "máquina" de fisioterapia para a minha filha. por Hugu
[08 de Agosto de 2018, 00:47]


Comprar solda decente por jm_araujo
[07 de Agosto de 2018, 11:30]


Telescopio por kieferdl
[03 de Agosto de 2018, 10:10]


Com que equipamento costumam aceder ao LR? por KammutierSpule
[01 de Agosto de 2018, 10:14]


BostonDynamics - Vai uma mãozinha? por jm_araujo
[01 de Agosto de 2018, 08:29]


Baby's got blue eyes por jm_araujo
[30 de Julho de 2018, 22:55]


Queimei 1 Motor :) por SerraCabo
[30 de Julho de 2018, 22:32]

Autor Tópico: Temperature sensor brick  (Lida 1457 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.594
    • GrcByte - Projectos
Temperature sensor brick
« em: 10 de Setembro de 2011, 14:28 »
Olá, eu comprei este sensor de temperatura:

As características são estas:

The temperature sensor brick uses a thermistor which returns the ambient temperature in the form of a resistance value. Connect the + and - pins to power supply, and you can read the data from S pin. There is a switch on board, you can use it to change the output as Analog or Digital. When you choose Analog, the S pin will output the analog value. When you choose Digital, you can adjust the potentiometer to change the comparison level, when temperature higher than it, the S pin output high level.

Não sei se alguém tem algum igual ou não.. estou com alguma dificuldade em:

- Saber quando é que o botão está definido como Analógico ou Digital

- A usar o exemplo desta página: http://www.arduino.cc/playground/ComponentLib/Thermistor2 :

Código: [Seleccione]
#include <math.h>

double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp - 273.15;            // Convert Kelvin to Celcius
//Temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert Celcius to Fahrenheit
return Temp;
}

void setup() {
Serial.begin(115200);
}

void loop() {
Serial.println(int(Thermister(analogRead(0))));  // display Fahrenheit
delay(100);
}

O resultado não é correto, a temperatura ambiente é de 27 º / 29 º Celsius, e no resultado eu recebo 15 º (com o botão em uma posição) e -15 º (com o botão noutra posição) ...


Com este simples exemplo analogRead:


Código: [Seleccione]
int analogPin = 0;     
                     
int val = 0;           

void setup()
{
  Serial.begin(9600);         
}

void loop()
{
  val = analogRead(analogPin);   
  Serial.println(val);         
}

Tenho o seguinte resultado:

- 120 (com o botão numa posição)
- 403 (com o botão na outra posição)

 ::)

Não sei se o thermistor é de 10k.. não há qualquer indicação..


Offline xiserre

  • Mini Robot
  • *
  • Mensagens: 277
Re: Temperature sensor brick
« Responder #1 em: 20 de Setembro de 2011, 14:53 »
assim por alto, vejo que me parece que o termistor estaja ligado como divisor de tensao, assim, tens uma tensao que varia conforme a temeratura... O facto de os resultados serem esquisitos DEVEM ser devido ao facto de o termistor nao ser igual ao que usaram para fazer o exemplo... Existem termistors NTC e PTC, e diferem na forma como variam a resistencia com a temperatura, sendo que um aumenta a sua resistencia com a temperatura e o outro diminui...
Outra coisa e que apenas um divisor de tensao nao é a forma ideal para obter uma tensao variavel com a temperatura, sendo que precisarias de ampop's para linearizar a curva...
O objectivo disso e para ser facil de usar, portanto o que disse acima nao se aplica ao caso...

O maximo que podes fazer sem datasheet e veres como varia o valor do adc conforme a temperatura, se sobe, se desce...
Outra soluçao e tentares ler a referencia que se encontra no termistor... ai ja enconravas o datasheet

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.594
    • GrcByte - Projectos
Re: Temperature sensor brick
« Responder #2 em: 07 de Agosto de 2012, 10:26 »
Hoje voltei a este 'brick', com o código:

Código: [Seleccione]
/*
Example: How to use the 'Analog Temperature Sensor Electronic Brick'
Usage: Connect Brick to analog pin 5 on the Seeduino Shield
*/
// Define the analog input pin for sensor
int sensorInputPin = 5;
// Storage variable
int temperature = 0;
// Just take a look in the datasheet or compare to another calibrated temp.sensor
int calibrationFactor = 252;
void setup()
{
        Serial.begin(9600);                 // Invoke Serial Interface for debugging purposes
}

void loop()
{
        // Read the sensor
        int temp = analogRead(sensorInputPin);
        // Calculate C* out of analog reading (please play around with n)
        temperature = (temp + calibrationFactor -500) /10;
        // Output to console or computer
        Serial.println(temperature);
        delay(500);
}


Tenho o valor de 16, se meter os dedos no termistor o valor desce para 15.. , reparei agora que no site onde comprei meteram mais informação mas nada de datasheet: http://imall.iteadstudio.com/im120710010.html  ::)