il sensore della temperatura scotta

sto facendo un progetto con il sensore di temperatura LM35, e il sensore si scalda tanto,non so se è un problema , o se è il sensore che fa cosi,ma non mi fido,non vorrei che si brucia e di conseguenza rovina la breadboord

Ok.
Che sensore usi?
Che collegamenti hai fatto?

https://www.scribd.com/document/370886935/arduino-il-libro-dei-progetti-in-italiano-manuale-starter-kit?secret_password=XyW4E6BUuL4ys1fvNFyJ#fullscreen&from_embed ho fatto gli stessi collegamenti del progetto N 3 di questo libro, richiede il sensore TMP36 ma io ho il LM35

grazie silente,la sua risposta è stata proprio utile

sicuro di aver collegato correttamente 5V e gnd?

lm35.jpg

lm35.jpg

il sensore non deve scaldarsi altrimenti come fa a riconoscere la temperatura circostante

e... ancora controlla bene la sigla sul componente (non saresti il primo che sbaglia componente visto che sono tutti simili)

... infatti, la casistica sul forum indica: il 49.9% delle volte, invece del sensore di temperatura montano un transistor, l'altro 49.9% delle volte invertono i collegamenti del LM35 e ... un 0.2% delle volte c'è veramente un problema :smiley: :smiley: :smiley:

Guglielmo

la sigla è n6c4wt LM35 dz, ho provato a girarlo,e non scotta più,quindi sicuramente l’ho messo al contrario.
scusate per la prossima domanda ,nello sketch mi da un errore su Serial.print(Sensor Valute:);

const int sensorPin = A0;
const float baseLineTemp = 20.0;
void setup() {
Serial.begin(9600);  
for(int pinNumber = 2; pinNumber<5; pinNumber++){
  pinMode(pinNumber,OUTPUT);
  digitalWrite(pinNumber,LOW);
}
}

void loop() {
int sensorVal = analogRead(sensorPin);
Serial.print(*Sensor Valute:*);
Serial.print(sensorVal);
float voltage = (sensorVal/1024,0) = 5.0;
Serial.print(*,volts:*);
Serial.print(voltage);
Serial.print(*.degrees C:*);
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);
}
delay(1);
{
}

}

essendo ancora inesperto,non tutti gli errori riesco a capire.
spero che non sia una scocciatura queste domande che vi faccio :slight_smile: :slight_smile: :slight_smile:

Le stringhe costanti vanno, essendo stringhe, racchiuse tra doppi apici …
Serial.print(“Sensor Valute:”);

Guglielmo

P.S.: Dato che mi sembri piuttosto indietro … fossi in te darei una studiata a QUESTO poi a QUESTO e/o acquisterei qualche buon libro (es. QUESTO) :wink:

… aggiungo che, per risparmiare memoria, sarebbe bene, per le Serial.print() che riguardano appunto stringhe costanti, usare la macro F() che fa si che esse non vadano ad occuparti preziosa SRAM.

In pratica: Serial.print(F(“stringa costante”));

Guglielmo

grazie Guglielmo,ho corretto la stringa e aggiunto la macro F(),ma però mi da errore lo stesso

Arduino:1.8.6 Hourly Build 2018/01/03 03:33 (Windows 7), Scheda:"Arduino/Genuino Uno"

C:\Users\computer\Documents\Arduino\amorometro\amorometro.ino: In function 'void loop()':

amorometro:13: error: expected ')' before ':' token

Serial.print("Sensor Valute":);

^

amorometro:15: error: lvalue required as left operand of assignment

float voltage = (sensorVal/1024,0) = 5.0;

^

exit status 1
expected ')' before ':' token

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

tutte le volte in cui trovi Serial.print(qualchecosadastampare:);
devi sostituire gli asterischi con le virgolette
Serial.print(".degrees C:");

quindi anche

 Serial.print("Sensor Valute":);

deve diventare:

 Serial.print("Sensor Valute:");

con i due punti all'interno delle virgolette

questa istruzione non ha senso

float voltage = (sensorVal/1024,0) = 5.0;

stai dicendo che voltage è uguale alla lettura del pin analogico diviso per 1024 (e fino a qui è giusto) ma poi scrivi ancora = 5 il che non è possibile
avrebbe più senso
float voltage = (sensorVal/1024,0) * 5.0;

credo che tu abbia copiato questo programma da qualche parte e che i segni di punteggiatura usato fossero "strani" hai il link?

Devi imparare a leggere con ATTENZIONE gli errori e capire da solo dove sbagli …

… ti indica che c’è qualche cosa che non va prima dei “due punti” … sicuro che non dovesse essere una “parentesi graffa aperta”? void loop() {

… altra cosa, i decimali si indicano con il “punto” NON con la “virgola” sensorVal/1024.0

… e poi che senso ha quell’espressione ? ? ? :o

Guglielmo

P.S.: Mi sono sovrapposto con Patrick :smiley: :smiley: :smiley:

ecco appunto, non ho dato peso alle virgole al posto dei punti :slight_smile:

mi quoto

avrebbe più senso
float voltage = (sensorVal/1024,0) * 5.0;

la versione corretta è
float voltage = (sensorVal/1024.0) * 5.0;

if (temperature >= baseLineTemp + 2 && temperature < baseLineTemp * 4) {

questa è sicuramente errata, scritta così la seconda parte controlla che la temperatura sia maggiore di 80 gradi :smiley:

molto probabilmente era un + 4

if (temperature >= baseLineTemp + 2 && temperature < baseLineTemp + 4) {

e per finire qui in fondo

      digitalWrite(4, HIGH);
   }
   delay(1);
   {
   }

}

c’è una graffa aperta di troppo
e il delay(1) che è uguale ad un MILLISECONDO è probabilmente troppo piccolo, meglio un
delay(1000) che è = ad 1 secondo :wink:

segui il consiglio di Guglielmo e studia i documenti che ti ha lincato, farai meno fatica a far funzionare i tuoi progetti

grazie per tutto,il progetto è riuscito.
l'ho copiato sul libro di arduino,che il link ve lo rimetto https://www.scribd.com/document/370886935/arduino-il-libro-dei-progetti-in-italiano-manuale-starter-kit?secret_password=XyW4E6BUuL4ys1fvNFyJ#fullscreen&from_embed
, studio un po su questo,un po su quelli che mi ha consigliato Guglielmo.