Ciao a tutti
ho provato a cercare la soluzione in "FORUM" ma non sono riuscito e cerco un aiuto.
dal progetto 03 AMOROMETRO ho semplicemente aggiunto due Led di conferma temperatura e mi succede che:
-
leggendo del TMP36 il valore analogico del pin centrale la tensione si mantiene costante tra 0,668V -
0,700 Volt -
il valore della prima stringa del Monitor seriale:
Base Line: 20.00, Sensor Value : 147, Volts;0.72, Temperatura C: 21.78
come si vede dall'allegato MONITOR 1 le letture successive ogni 10 secondi continuano ad aumentare
fino a stabilizzarsi su valori che non hanno niente a che fare con il valore analogico del pin centrale e
della temperatura della stanza che da di 21,0 C°
detto il valore analogico NO -
Se chiudo e riapro MONITOR la prima riga:
Base Line: 20.00, Sensor Value : 148, Volts;0.72, Temperatura C: 22.27
come si vee ripropone un valore di temperuatura di un grado differente rispetto a Monitor-1 -
praticamente chiudendo aprendo MONITOR la prima riga si ripete sempre corretta e poi riprende
l'aumento
E' come se resettando il programma la prima lettura è OK.
Grazie ancora per il vostro contributo.
Ciao
patverg
Spero proprio di aver Rispettato le regole
[const int sensorPin = A0;
const float baselineTemp = 20.0;
void setup() {
// Richiesta lettura SetUp
pinMode(7,INPUT);
// Fine Richiesta Lettura SetUp
Serial.begin(9600); // apri una porta seriale
for(int pinNumber = 2; pinNumber<7; pinNumber++){
pinMode(pinNumber,OUTPUT);
digitalWrite(pinNumber,LOW);
}
}
void loop() {
int sensorVal = analogRead(sensorPin);
Serial.print(" Base Line: ");
Serial.print(baselineTemp);
Serial.print(", Sensor Value : ");
Serial.print(sensorVal);
// converti la lettura ADC in tensione
float voltage = (sensorVal/1024.0)* 5.0;
Serial.print(", Volts;");
Serial.print(voltage);
Serial.print (", Temperatura C: ");
// converti la tensione in temperatura
float temperature = (voltage -.5)*100;
Serial.println(temperature);
if(temperature<baselineTemp){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
} else if (temperature >baselineTemp+2 && temperature < baselineTemp+4){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
} else if (temperature >baselineTemp+4 && temperature < baselineTemp+6){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
}else if (temperature >baselineTemp+6){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
//verifica uguale
}else if(temperature = baselineTemp){
digitalWrite(6,HIGH); //Led Azzurro
digitalWrite(7,LOW); //Led Giallo
} else if (temperature = baselineTemp+6) {
digitalWrite(6,LOW); //Led Azzurro
digitalWrite(7,HIGH); //Led Giallo
}
//fine verifica uguale
delay(10000);
}]
Ho continuato a testare lo schizzo sezionandolo e ho creato tre schizzi diversi:
- chiamato NewAmorometroPV.noLed dove controllavo solo il TMP36 con monitor disattivando i LED
[/const int sensorPin = A0;
const float baselineTemp = 20.0;
void setup() {
pinMode(7,INPUT); // PV Richiesta lettura SetUp
Serial.begin(9600); // apri una porta seriale
for(int pinNumber = 2; pinNumber<7; pinNumber++){
pinMode(pinNumber,OUTPUT);
digitalWrite(pinNumber,LOW);
}
}
void loop() {
Serial.print(" Base Line: ");
Serial.print(baselineTemp);
int sensorVal = analogRead(sensorPin);
Serial.print(", Sensor Value : ");
Serial.print(sensorVal);
float voltage = (sensorVal/1024.0)* 5.0; // converti la lettura ADC in tensione
Serial.print(", Volts;");
Serial.print(voltage);
float temperature = (voltage -.5)*100; // converti la tensione in temperatura
Serial.print (", Temperatura C: ");
Serial.println(temperature);
delay(5000); ]
e come si vede dall'allegato Monitor-noLed il valore della tensione di uscita è stabile
2) chiamato NewAmorometroPV.onOff dove ho aggiunto DUE LED con un controllo sotto o sopra la
baselineTemp = 20.0;
[code][//verifica ON/OFF
if(temperature < baselineTemp){
digitalWrite(5,HIGH); //Led Azzurro
digitalWrite(6,LOW); //Led Giallo
} else if (temperature > baselineTemp) {
digitalWrite(5,LOW); //Led Azzurro
digitalWrite(6,HIGH); //Led Giallo
}
//fine verifica ON/OFF]
e il Monitor segnala un aumento della tensione dopo la prima lettura di circa 10 Volt. !!! allegato Monitor-OnOff
3) ho chiamato NewAmorometroPV. completo dove ho aggiunto il controllo degli altre 3 LED con indicazione sequenziale dell'aumento della temperatora
[code][//Verifica progressività
if(temperature<baselineTemp){
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
} else if (temperature >baselineTemp && temperature < baselineTemp+2){
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
} else if (temperature >baselineTemp+2 && temperature < baselineTemp+4){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
}else if (temperature >baselineTemp +4){
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
//Fine Verifica progressività]
analizzando il Monitor allegato Monitor-All e la temperatura dopo la prima lettuta aument velocemente fino a 60 Volt mentre il piedino centrale rimane sempre con una tensione costante di .660 . 700 Volt.
ho scoperto il MOTIVO ma non ho la più pallida idea della CAUSA.
Ho ripetuto più volte io schizzi ma il risultato veniva confermato
Vi ringrazio della pazienza e mi auguro di non aver ingarbugliato la spiegazione.
Grazie e ciao a tutti
patverg
0