AJUDA!!! Sensor Temperatura - Tensões Negativas

Olá a todos!!

O meu nome é Pedro Santos e estou neste momento a desenvolver um projeto curricular. Tenho conhecimentos básicos de LabView, mas a aplicação que desenvolvi a partir desse software, teve de ser abortada, devido ao custo da licença que isso trazia, para uma pequena empresa.

O que desenvolvi foi com um sensor de temperatura (Termistor NTC) implementado numa breadboard, contendo um amplificador operacional, resistências, condensador etc.. alimentado por uma fonte de alimentação de +15 e -15V! Basicamente tenho uma ponte de Wheastone alimentada a 15V, com o termistor a funcionar como uma resistência, tenho um amplificador diferencial (alimentado a 15 e -15V) e um filtro passa baixo.

À saída do circuito sai um valor de tensão, variável de -5 volts a 5 volts, conforme o valor de temperatura registado no sensor de temperatura. À saída com a temperatura definida/referência, 29ºC, o valor de tensão à saída é 0 Volts, se a temperatura baixasse o valor da tensão aumentaria e se a temperatura aumentasse, diminuía. O sensor/circuito foi calibrado, dos 0ºC aos 90ºC, obtendo-se uma reta de calibração para o mesmo, de forma a colocar-se um ganho para controlar o circuito e saber-se, por exemplo, que se estivesse a temperatura no sensor a 20ºC ou a 40ºC qual o valor de tensão à saída do circuito (não podendo ultrapassar rapidamente os limites definidos -5 volts e 5 volts, para a entrada digital).

Posteriormente esse valor de saída (em tensão) foi colocado numa placa de aquisição USB 6008 convertendo o sinal de analógico para digital e tendo entrada depois no PC (USB), onde o LabView, recebeu o sinal pela função DAQ, e depois através de uma opção fórmula do LabView, eu introduzi a reta de calibração do circuito, e depois apresentava a temperatura num gráfico e num termómetro, e depois gravava os valores para um documento de texto (bloco de notas) automaticamente, de 1 em 1 segundos (podendo ser definido), neste caso guardou em SS numa coluna e temperatura (em ºC) noutra.

Soube então, por um professor e depois por um colega, que como alternativa à placa de aquisição e ao LABVIEW poderia utilizar o Arduino, contudo ambos não possuem conhecimentos da programação em arduino, estando eu "sozinho" neste projeto.

O que pretendo é exatamente o mesmo que iria fazer no LabView, mas neste caso pretendo guardar automaticamente o valor da temperatura de hora em hora para o documento de texto - bloco de notas.

Muito resumidamente, e face ao que foi escrito, o que é pretendido com a utilização do Arduino é o seguinte: - Receber valores de tensão de -5 a 5 Volts e através da equação da reta, da calibração do circuito, colocar a mesma como fórmula na programação arduino, para converter esse valor de tensão em temperatura; - Defenir limite máximo e mínimo, ou seja temperatura referência 29ºC - 0 V, se temperatura passar os 30ºC, p.e. 0,5 V ou 1V acende um Led Vermelho fora do arduino. Caso a temperatura desça abaixo dos 28ºC, p.e. -0,5V ou -1V, acende um led azul fora do arduino. - Guardar automaticamente de hora em hora, os valores do Tempo (ou data) numa coluna e Temperatura noutra coluna, para um documento de texto.txt - bloco de notas.

Preciso também de saber, se o Arduino pode receber tensões negativas, ou seja, -5 a 0V, ou eventualmente posso dimensionar o circuito para trabalhar de de 0-10V, em vez dos -5 a 5V. Ou se posso trabalhar apenas de 0-5V....

Aguardo resposta, e espero que me possam mesmo ajudar! É muito importante a nível pessoal e académico este trabalho para mim!

Obrigado pelo vosso tempo e atenção!!

Cumprimentos, Pedro Santos

a gama máxima que é permitida é de 0 a 5 V. terás de dimensionar o circuito para essas tensões, ou criar um andar de amplificação para adicionar2,5V e reduzir o ganho.

Obrigado!!

Irei Trabalhar com tensão entre 0 - 5V.

Vou definir a minha temperatura de referência - 29ºC nos 2,5V.

Agradeço posteriormente informação sobre o código pretendido para o arduino!

Cumprimentos,

PedroS.

O código pode ser algo como:

#define HORA  3600000UL //3600 segundos ou isto em milisegundos

setup(){

Serial.begin(19200);
}

unsigned long tempo = 0;
unsigned long leituras=0;
void loop(){

if (millis - tempo > HORA) { //passou-se uma hora
    for (int i = 0; i < 10; i++) {  //fazer uma média para ter um valor melhor. 
        leituras += analogRead(CANAL);
    }
    Serial.println((float)leituras/10);
    leituras = 0;
} //end if... 

//Não faz nada até passar mais uma hora. 


}

Só precisas de definir em que pino vais ligar o sensor… e com este código ele envia-te uma leitura (aliás, média de 10 leituras) de hora em hora, ou muito próximo duma hora.
Podes alterar os parâmetros da média, ou se quiseres, enviar dados com uma frequência maior.

O pior desta aplicação é mesmo a parte electrónica. Já agora, as placas da NI costumam ter umas resoluções muito boas. O AD do Arduino tem uma resolução de 10 bits… que na realidade passa a 9 bits. É possível aumentar isso através de código também… mas já tens de sair fora das funções do Arduino para o fazer.

Abraço e boa sorte.