Problema con sensore temperatura e luminosità

Ciao a tutti,

mi chiamo Emanuele e mi sono avvicinato ad arduino da un paio di mesi. Sono all'inizio, di elettronica ricordo molto poco degli studi passati (tecnico industriale), ed ora dopo dieci anni circa vorrei riprendere a sperimentare un po'.

L'idea che ho è di progettare una "mini serra" con controllo di temperatura, umidità dell'aria e del terreno e luminosità (e magari altro).

Come detto prima, sto partendo proprio dalle basi, e lavoro su breadboard.

Sto utilizzando un sensore di temperatura LM35, un sensore di luminosità "precision light sensor" della Phidgets ed un display 4x20 seriale, tutto con arduino 2009.

Riesco a misurare la temperatura e visualizzarla correttamente sul display, ma se collego anche il sensore di luminosità ho questo problema:

all'aumentare della luminosità letta dal sensore, la misura di temperatura si abbassa, e viceversa.

Per far aumentare la misura di luminosità semplicemente porto il sensore sotto una luce della scrivania, mentre per farla diminuire ci metto un dito sopra.
Il sensore di temperatura rimane sempre ben lontano dalla lampadina (difatti se scollego il segnale dal sensore di luminosità la temperatura rimane costante).

L'LM35 è collegato ad un ingresso analogico ed il sensore di luminosità ad un altro ingresso analogico.

Non ho al momento a disposizione il codice che ho usato, lo posso postare stasera.

Spero di avervi fornito dati sufficienti, altrimenti chiedete che mi segno tutto e stasera posto!

Grazie a tutti!

purtroppo non hai ancora fornito abbastanza informazioni.
Sarebbe necessario sapere come hai collegato i 2 dispositivi al arduino, ci hai messo una resistenza o altro?
Il sensore ottico hai collegato la massa; i 5V ai rispettivi pin e l' usicta direttamente al Arduino?
La stessa cosa per il LM35?
Hai aggiunto delle resistenze?
Ciao Uwe

Ciao uwe,

non ho aggiunto resistenze, sono entrambe collegati direttamente ad un pin analogico di input....

il ground è in comune, è quello della basetta (parte superiore con i collegamente in orizzontale) che è collegata al ground di arduino. Stessa cosa per il vcc.

E' grave???? :slight_smile: :slight_smile: :slight_smile: :slight_smile:

sí é grave perché moooooollllllto misterioso.
Ci penso e ci sentiamo
Ciao Uwe

Il problema del crosstalk sulle entrate analogiche è dovuto al multiplexing sull'adc di arduino, e si manifesta quando si collega ai pin roba ad alta impedenza...
In verità non ci sono 6 adc separati...
se sul Aref non c'è attaccato niente, prova a mettergli un condensatore da 0.1 uF e vedi se le letture impazziscono uguale...

ecco il codice:

#define tempPin 0
#define lucePin 2
#define ledPin 7
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

float temperatura = 0;
float luce = 0;

void setup() 
{
  lcd.begin(16, 4);
  pinMode(ledPin, OUTPUT);
  pinMode(tempPin, INPUT);
  Serial.begin(9600);
}

void loop() {
  temperatura = analogRead(tempPin);
  temperatura = (5.0 * temperatura * 100.) / 1024.0;
  luce = analogRead(lucePin);
  luce = (5.0* luce * 200.0) / 1024.0;
  
  Serial.println(temperatura);
  Serial.println();
  lcd.setCursor(0,0);
  lcd.print("T = ");
  lcd.setCursor(4,0);
  lcd.print(temperatura);
  lcd.setCursor(10,0);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("L = ");
  lcd.setCursor(4,1);
  lcd.print(luce);
  lcd.setCursor(10,1);
  lcd.print("lux");
  
  if (temperatura > 25) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
  
  delay(1000);
}

@brain: Aref sarebbe il pin del segnale del sensore di luminosita'? :-[
Se e' cosi' metto un condensatore fra il sensore e l'ingresso ad arduino, giusto?

Aref non è il pin dove devi collegare il sensore di luminosità ! Aref è il riferimento per gli ingressi analogici. Se per esempio metti Aref a +2 V collegando un sensore otterrai un valore di 1023 quando sull'ingresso saranno presenti 2 volt, 512 quando sull'ingresso sarà presente 1 volt e così via ... Se su Aref non colleghi niente il riferimento è di 5V, cioè otterrai 1023 con un ingresso di 5 Volt, 512 con un ingresso di 2,5 Volt, 102 con un ingresso di 0,5 volt.

Per maggiori info leggi qui:

Scusa ma stavo guardando il tuo codice è ho notato che quando dichiari i pin analogici li chiami senplicemente 0 e 2, non si dovrebbero chiamare A0 e A2 ? Se no come fa a distinguerli dagli ingressi digitali ? Magari non centra niente, ma vedo che nei reference usano sempre A0, A1 A2 ...

prova prima a mettere un condensatore da 10uF in parallelo alle linee dati.
se non funge provi fra aref e massa.

grazie a tutti per le informazioni, stasera proverò a mettere il condensatore in parallelo fra i due segnali in ingresso (giusto?).

Un altro problema riscontrato ieri sera:

sempre per sperimentare ho aggiunto sulla breadboard un potenziometro con il quale muovere un servo digitale hitech. Ho preso spunto da un esempio sul sito di arduino.

Il servo si muove correttamente, solo che ad ogni movimento si abbassava drasticamente la luminosità del LCD (retroilluminato). Ho pensato fosse normale magari a causa dell'assorbimento di corrente del servo che la sottrae al LCD. Ho cercato un alimentatore da 5V ma non l'ho trovato e quindi non ho potuto utilizzare una alimentazione esterna.

Voi che dite, è normale?

no, il condensatore da ciascun entrata a massa.
Sí il Servo potrebbe asorbire troppo e fare abbassare la tensione del alimentatore.
Procurati un alimentatore piú potente.
Ciao Uwe

quoto in totale uwefed

Ok,
stasera metto i condensatori sui due ingressi, se non cambia nulla ne metto uno tra Aref e ground.

Dite che l'alimentazione potrebbe essere la causa anche di queste letture sballate?

Si, potrebbe essere...
Prova a costruirti un piccolo alimentatore a parte,
Leggi qui:

grazie Brainbooster, molto bello il tuo sito, lo avevo già adocchiato!

Grazie, anche se non è il mio sito :slight_smile:

Bene!

Ho messo un condensatore da 10uF in parallelo ad ognuno dei due ingressi e funziona! Ora la temperatura rimane costante mentre la luminosita' si muove correttamente. Ho anche usato un alimentatore stabilizzato da 9V, ma senza condensatori mi dava lo stesso problema.

Nel ringraziarvi vorrei chiedere magari se si trovano delle spiegazioni a questo fenomeno per me misterioso!
Vorrei iniziare a studiare un po' sul serio, quindi magari indirizzatemi a qualche lettura online o qualche libro.

Se sono testi tecnici va bene lo stesso, anzi essendo ingegnere quasi quasi li preferisco (pero' non sono ingegnere elettronico, non so se si era capito ;D ;D ;D ;D)

Intanto cerco un po' in rete...

Grazie ancora!
Emanuele.

Non so di preciso, hai provato di misurare in alternata l' alimentazione e le uscite dei sensori?
Cioa Uwe

No non ho provato, vedo di farlo prossimamente.

In ogni caso l'importante è che funzioni!

Ora volevo iniziare ad implementare altre funzioni, ma casomai apro un topic apposta.

Grazie!

Emanuele.

Ottimo! vedo che sei riuscito a far funzionare tutto!
Allora buon proseguimento con gli esperimenti :slight_smile: