collapse

* Posts Recentes

Arame de Estendal por almamater
[Ontem às 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

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

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

Offline almamater

  • Mini Robot
  • *
  • Mensagens: 1.921
    • 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.921
    • 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  ::)