Boa noite, eu estou trabalhando em um projeto no qual estou usando o sensor de alcool (MQ-3) e um sensor de temperatura simples, no qual veio no kit de iniciante. Consegui montar ambos, e quando uso os codigos separados no programa do Arduino ele me da o valor da temperatura em ºC, porem quando uso o codigo de temperatura + codigo do sensor de alcool, a calibração da temperatura desconfigurar. 
Gostaria de saber se alguém sabe aonde estou errando, Obrigado. 


Este é o codigo que estou utilizando. 



unsigned int val = 0; 
unsigned char PIN = 0; 
#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 
return Temp; 


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


void loop() { 
Serial.print("Temperatura = "); 
Serial.println(int(Thermister(analogRead(1)))); // display Fahrenheit 
val = analogRead(0); 
Serial.print("Valor Alcoolico = "); 
Serial.println(val); 
delay(5000); 
}

Exibições: 358

Responder esta

Respostas a este tópico

o bloco onde a cariavel temp recebe o calculo deve ficar dentro do loop acho o ddelay de 5s muito grande tb

Normalmente os microcontroladores tem na verdade 1 (ou 2) ADs só. O que existe é uma "chave comutadora" para selecionar por qual pino será feita a leitura.

Assim sempre que vc troca a origem do sinal é necessário um pequeno delay até a proxima leitura. Se não precisa é pq o criador da biblioteca foi generoso e incluiu.

Como vc está lendo grandezas que não mudam rapidamente isso não vai te causar diferença alguma. Quando vc quer por ex digitalizar audio já seria necessário um AD dedicado por canal.

Enfim, acho que um delay entre a leitura do canal 0 e do canal 1 vai te resolver. 0,1s por ex. Só que esse delay deveria ficar depois que vc seleciona o canal e antes de ler... Por isso não acho exagero ler desprezando, dar um delay e ler novamente. Já que vc vai jogar fora tempo depois não custa.

Dependendo do microcontrolador já precisei inclusive ler umas 16 vezes e tirar a media das ultimas 8 leituras (desprezar as primeiras). Isso te da um valor mais "limpo" (media).

Digo pelo caso geral, não conheço esse detalhe especifico no ARM/Arduino, mas vale tentar.

É isso mesmo, tem que por um delay(10) entre cada analogread(), para o AD do ATMEGA estabilizar.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço