Arduino Temperatura + LCD

Ciao a tutti, ho provato a collegare uno schermo LCD e un sensore di temperatura per visualizzare la temperatura sullo schermo LCD, però sto avendo qualche problema perchè la temperatura non è giusta, vi spiego, se eseguo un semplice codice senza schermo LCD solo con attaccato all'arduino il sensore di temperatura il TMP36 e guardo la temperatura su un Serial Monitor, tutto funziona bene, quando invece collego lo schermo LCD, e non stampo la temperatura sullo schermo ma solo una stringa tipo Hello World, e la temperatura la continuo a controllare con il Serial Monitor la temperatura è più alta di 5-6 gradi. qualcuno mi può spiegare perchè?...adesso posto il codice e lo schema...

P.S. nello schema si vede un transistor ma è un sensore di temperatura sempre a 3 piedini...

Codice:

//include the libray lcd
#include <LiquidCrystal.h>

//inizzializzo la libreria con i numeri scelti ai pin
LiquidCrystal lcd(12,11,5,4,3,2);

//TMP36 Pin Variables
int temperaturePin = 0; //the analog pin the TMP36's Vout (sense) pin is connected to
//the resolution is 10 mV / degree centigrade
//(500 mV offset) to make negative temperatures an option

/*

  • setup() - this function runs once when you turn your Arduino on
  • We initialize the serial connection with the computer
    */
    void setup()
    {
    Serial.begin(9600); //Start the serial connection with the copmuter
    //to view the result open the serial monitor
    //last button beneath the file bar (looks like a box with an antenae)
    lcd.begin(16,2);
    lcd.print("hello, World");
    }

void loop() // run over and over again
{
float temperature = getVoltage(temperaturePin); //getting the voltage reading from the temperature sensor
temperature = (temperature - .5) * 100; //converting from 10 mv per degree wit 500 mV offset
//to degrees ((volatge - 500mV) times 100)
Serial.println(temperature); //printing the result
delay(1000); //waiting a second
}

/*

  • getVoltage() - returns the voltage on the analog input defined by
  • pin
    */
    float getVoltage(int pin){
    return (analogRead(pin) * .004882814); //converting from a 0 to 1024 digital range
    // to 0 to 5 volts (each 1 reading equals ~ 5 millivolts
    }

Quindi quando lo schermo LCD è scollegato tutto ok, quando lo attacco e scrivo anche solo una stringa e la temperatura la continuo a vedere dal serial monitor la temp è completamente diversa...facendo altre prove ho notato 2 gradi di differenza...tutto questo quando collego lo schermo LCD...

ma come alimentazione cosa usi?

l'arduino a 5V...

Usb, batteria esterna o alimentatore?

USB...

Allora usando il multimetro credo di avere capito il problema...forse...se collego il backlight la retro illuminazione allo schermo LCD e con il multimetro vado a misurare i volt ai capi del TMP36 ho 4.79V, mentre se scollego la retroilluminazione e vado a rifare la misura ho 4.92V, quindi credo sia questo il problema, ma come è risolvibile?...sempre considerato che il problema si questo...

hai provato ad abbassare al minimo leggibile la luminosità del display per vedere se le due letture si avvicinano?
o ad alimentare il tutto con un'alimentazione esterna?

ho risposto brain sopra :D...come faccio a risolvere?

"Allora usando il multimetro credo di avere capito il problema...forse...se collego il backlight la retro illuminazione allo schermo LCD e con il multimetro vado a misurare i volt ai capi del TMP36 ho 4.79V, mentre se scollego la retroilluminazione e vado a rifare la misura ho 4.92V, quindi credo sia questo il problema, ma come è risolvibile?...sempre considerato che il problema si questo... "

usa una alimentazione separata per l'lcd (non dimenticare di collegare le masse insieme).

non cè altra soluzione?:(...e se uso una batteria da 9V per alimentare tutto collegandolo ad arduino con l'adattatore per una batteria da 9 volt funzionerà bene?

dipende da quanto assorbe il display.

e come faccio a sapere quanto assorbe il display?...scusami se ti rompo però non ho tanto capito quanta roba posso attaccare ad arduino, qual'è il suo limite...

Cercati il datasheet del display, per saperne le caratteristiche.
Per arduino invece guarda qui:

ok grazie, cmq ho trovato il datasheet del display ma non riesco a capire quanto sia il voltaggio, ecco:

http://www.adrirobot.it/datasheet/LCD/PDF/C216x01xxW00_REV1.pdf

mi puoi dire quanto è e in che pagina l'hai trovato?

Potrei anche, ma se hai difficoltà a capire la differenza fra tensione e corrente con il datasheet davanti forse sarebbe inutile... ::slight_smile:

no...so benissimo differenziare corrente e tensione...ma un datasheet non l'ho mai visto, quindi non ho capito dove devo guardare, ci sono tante tensioni e correnti...e cmq se non cè nessuno che te lo spiego non lo capirò mai...se sei così gentile da spiegarmelo...poi sono un elettrotecnico, e queste cose le ho studiate, ma ti ripeto un data sheet non l'ho mai visto, cmq il mio LCD ha la retroilluminazione yellow green...grazie...

Ogni porta usb dovrebbe riuscire ad erogare 500mA, che dovrebbero essere più che sufficienti per quello che stai facendo.
Però se è proprio un problema di alimentazione allora prova a scollegare l'alimentazione al backlight del display, che tra tutto (Arduino escluso) è quella che ciuccia di più e non è proprio indispensabile (almeno nelle prove).

ciao si ho già provato, e come ho scritto qualche post prima, il risultato va bene senza backlight...

e allora...fai 2+2

a pagina 4 del datasheet ci sono anche scritti i consumi delle varie tipologie di retroilluminazione...chiaro chiaro

quindi se ho capito leggendo consuma 5V con illuminazione?