termocoppie k e arduino

ciao a tutti!

sto costruendo un data-logger di temperature per un esperimento che stiamo facendo a chimica.

ho provato con l’ LM35 ma visto che non è molto preciso (devo realizzare dei grafici delle curve di temperatura) mi sono orientato per delle termocoppie K, ho visto almeno tre topic sul forum (molto figo) e sul playground una libreria per il max6675 ma ho alcuni dubbi:

#include <MAX6675.h>

int CS0 = 11;         // CS pin on MAX6675
int SO = 12;          // SO pin of MAX6675
int SCK = 13;         // SCK pin of MAX6675
int units = 0;        // Units to readout temp (0 = ÀöF, 1 = ÀöC)
float error = 0.0;    // Temperature compensation error
float temp_out = 0.0; // Temperature output varible

MAX6675 temp0(CS0,SO,SCK,units,error);

void setup() {
  Serial.begin(9600);
}

void loop() {
  temp_out = temp0.read_temp(5);  // Read the temp 5 times and return the average value to the var

  Serial.println( temp_out );         // Print the temperature to Serial 
  delay(1000);                    // Wait one second
}

ma come posso fare per acquisire la temperatura ogni 20 secondi e spedirla sulla seriale, se devo indicare quante volte leggerla?

grazie

attualmente il programma fa 5 letture istantanee e ne calcola la media, al ritmo di un secondo, se vuoi che ciò avvenga ogni 20 secondi devi portare il valore del delay da 1000 a 20000

e per togliere la media come devo fare...

temp_out = temp0.read_temp(5); // Read the temp 5 times and return the average value to the var

metti 1 al posto di 5, ma non è una buona manovra, le 5 letture impiegano un istante e la media di esse ti garantisce l'immunità da qualche lettura "disturbata". Vedrai che anche mettendo 1 non avrai alcuna riduzione del tempo, che dipende praticamente solo dal delay.

scusami se ti secco ancora ma secondo te sul mega 2560 i pin sono gli stessi, se no su quali devo mettere i rispettivi contatti?

e, se volessi fare il modo che quando schiaccio un bottone parte e quando lo rischiaccio si spegne (credo si chiami ingresso monostabile ma non ne sono troppo sicuro) ?

scusami ancora

silvi

int CS0 = 11;         // CS pin on MAX6675
int SO = 12;          // SO pin of MAX6675
int SCK = 13;         // SCK pin of MAX6675

La libreria può lavorare con qualunque pin digitale, per scegliere i pin in modo arbitrario devi modificare il codice precedente.

Per l'altra domanda dai uno sguardo agli esempi prensenti nell'ide di Arduino.

Brevemente: Ti serve un pin impostato come imputo con pull-up interna (oppure devi usare un a Resistenza esterna), poi ti serve di usare l'elempio debounce, il quale ha la funzione di discriminare la pressione del pulsante dal rimbalzo tipico di tutti i contatti meccanici. Poi ti serve una if else per eseguire codice in base alla condizione del pulsante.

Ciao.

grazie a tutti anche se non mi è chiara una cosa: sono online e mi segna come offline? come mai

silvia1216:
grazie a tutti anche se non mi è chiara una cosa: sono online e mi segna come offline? come mai

vai nel tuo profilo e attiva la relativa casella e sarai “online” anche tu :slight_smile: