Note the 0.1 ?F bypass capacitor on the input. This capacitor should be a ceramic type, have very short leads (surface-mount is preferable), and be located as close as possible in physical proximity to the temperature sensor supply pin. Because these temperature sensors operate on very little supply current and may be exposed to very hostile electrical environments, it is important to minimize the effects of radio frequency interference (RFI) on these devices. The effect of RFI on these temperature sensors specifically and on analog ICs in general is manifested as abnormal dc shifts in the output voltage due to the rectification of the high frequency ambient noise by the IC. When the devices are operated in the presence of high frequency radiated or conducted noise, a large value tantalum capacitor (±2.2 ?F) placed across the 0.1 ?F ceramic capacitor may offer additional noise immunity
Poi questi:
float tempPin = 1; // pin analogico IN temperature sensor
int ledPintemp = 13; // pin led termistore
int outPin = 9; // pin attuatore
li puoi sostituire con dei #define
in merito al condensatore domani provo ma in vari tutorial in giro non lo mettono anche se il datasheet ne parla e funziona tutto alla grande. fista la grandezza della misura sembra non faccia la conversione in celsius.
per quando riguarda float tempPin = 1 non si può vedere, mi sta venendo un dubbio ..... non è che ho assegnato due variabili al pin 1 ????
Probabilmente è anche sbagliata la formula.
Nel datasheet c'è scritto che questo sensore ha un passo di 10mV/°C con un valore di 25 °C a 750 mV e quindi -40 a 100mV e +125 a 1750mV
quindi avremo:
millivolt = 5 * analogRead(pinTemp)/1024 * 1000 = analogRead(pinTemp) * 4.883
temperatura = millivolt/10 - 50
Con un solo passaggio --> Temperatura = analogRead(pinTemp) * 0.4883 -50
// let's get measurin'
sensor = analogRead(0);
voltage = (sensor*5000)/1024; // convert raw sensor value to millivolts
voltage = voltage-500; // remove voltage offset
celsius = voltage/10; // convert millivolts to Celsius
E' lo stesso risultato che ho ottenuto io, ma usando più variabili. In questo modo è più legibile e si capiscono i passaggi ed è meglio debuggabile.
Ma io lo so che scrivo programmi incasinati, quindi metterei:
Prova a includere queste righe e vedi che valori restituisce
// prova con sensor temp 36gz
sensortemp = analogRead(inTemp); //lettura dei dati nel pin analogico 1
Serial.print("Lettura AnalogRead: ";
Serial.println(sensortemp);
voltage = (sensortemp*5000)/1024; // Conversione in millivolt
Serial.print("Millivolt: ";
Serial.println(voltage);
voltage = voltage-500; //elimino offset
Serial.print("Senza OffSet: ";
Serial.println(voltage);
celsius = voltage/10; // converto da millivolt a celsius
Serial.print("Temperatura: ";
Serial.println(celsius);
temp = celsius; // assegno il valore alla variabile intemp
Usando quella formula, la temperatura di 377 C si ottiene col valore di AnalogRead pari a 875 che corrisponde a 4272mV che è fuori specifica perché il sensore dovrebbe erogare massimo 2000mV.
Presumo sia guasto.
peccato che non ci sia il dabugin in linea col l'IDE di arduino, in modo da controllare il valore delle variabile "al volo"
grazie ancora
se ti va di rispondermi vedi il secondo quesito che chiedevo al primo post, riportato qui sotto.
......vorrei portare il progetto in un stabile dove ce un server amministratore che controlla altre stanze con altri PC server che controllano pc client e che qui VOGLIO COLLEGARE L'ARDUINO. se sino a quà vi è tutto chiaro, vengo alla domanda:
come faccio a impostare IP nell'arduino e nel router?
credo che nell'arduino non si debba toccare niente perche basta ricordarsi ip arduino impostato nello sketch che poi ho usato per aprire porta nel router per farlo entrare.
il problema vero e capire come accedere dall'esterno ad arduino e quindi che ip Riassegno nel sito host che mi ha dato un URL: dell'amministratore principale o dei server pc che anche loro hanno diritti di amministratore sui pc client? ............
arduinh3nk3r:
......vorrei portare il progetto in un stabile dove ce un server amministratore che controlla altre stanze con altri PC server che controllano pc client e che qui VOGLIO COLLEGARE L'ARDUINO. se sino a quà vi è tutto chiaro, vengo alla domanda: come faccio a impostare IP nell'arduino e nel router?
credo che nell'Arduino non si debba toccare niente perche basta ricordarsi ip arduino impostato nello sketch che poi ho usato per aprire porta nel router per farlo entrare.
il problema vero e capire come accedere dall'esterno ad arduino e quindi che ip Riassegno nel sito host che mi ha dato un URL: dell'amministratore principale o dei server pc che anche loro hanno diritti di amministratore sui pc client?
In rete locale è semplice: tramite browser digiti l'indirizzo di arduino e lui ti risponde.
Invece, per contattare Arduino da internet devi conoscere l'indirizzo ip del router che effettua il collegamento ad internet e programmarlo affinché rigiri la chiamata all'Arduino.
Quindi nel router dovrai impostare l'ip e la porta utilizzati da Arduino che dovranno essere conformi a quelli utilizzati nella rete locale dove lo installi.
Sul forum si è discusso della cosa in tanti altri post. fai una ricerca.
lui vuole automagicamente aggiornare l'ip in dydns in modo che sia raggiungibile attraverso un URL.
in pratica devi retroingenierizzare il funzionamento di dydns lato PC e simularne il funzionamento via arduino.
Se usa ssh (https o altre connessioni sicure) sei fregato
Non ho capito se lui è l'amministratore del sistema o no.
Nel caso non lo fosse deve chiedere se gli ruotano una porta sull'ip di Arduino (sempre che abbiano un sistema ddns per essere rintracciati via internet).
Nel caso lo fosse deve attivare il DDNS e ruotare una porta sul router.
Per il DDNS su Arduino c'è: http://www.open-electronics.org/arduino-ddns-dynamic-dns/
grazie delle risposte....
@ PaoloP
non sono amministratore della Lan ma non ci sono problemi per farmi dare l'accesso.
@ lesto
si vorrei essere raggiungibile attraverso un URL, ma spero che la procedura di PaoloP di farmi ruotare una porta sull'IP di arduino sia solo una procedura di assegnazione e non di modifica con aggiunta di hardware.
certo è che dovro cambiare IP arduino e internet e sub mask nello sketch perche cambia la rete e quindi:
byte mac[] = { 0x??, 0x??, 0x??, 0x??, 0x??, 0x?? }; // mac Arduino
byte ip[] = { 192, 168, 0, 245 }; // ip arduino internet
byte gateway[] = { 192, 168, 0, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 255 }; //subnet mask
Server server(80); // porta del server
e poi impostare il servizio dydns in rete in modo che reindirizzi al nuovo ip della nuova Lan del mio lavoro.
la soluzione di paoloP è una operazione obbligatoria da fare se possiedi una NAT (cioè al 99% dei casi), e rende l'arduino disponibile in remoto. Se poi il router è sempre acceso E hai un contratto con IP fisso, allora non ti serve nemmeno il servizio e puoi registrare direttamentete un dominio. Se invece hai un IP dinamico allora il link di paoloP per dydns è la soluzione, (ovviamente a piori bisogna settare la NAT)