XBee Shield

Salve a tutti,

(anticipo: vengo dalla informatica e non dall'eletronica) dopo una pausa molto lunga ho di nuovo iniziato a lavorare al mio hexapod.
Ieri mi sono arrivati i componenti xbee.

Ecco la mia domanda:

Ho un componente LM3552 per la temperatura, e funziona molto bene.
Appena aggiungo il xbee Shield e il LM3552 e attaccato alla PIN 0 la temperatura e di 3 gradi piu alta.
Tolgo il shield e tutto torna a funzionare.

Cosa spaglio o mi sono dimenticato?

Grazie
Marco

Il pin 0 e 1 digitale viene usato dal XBee per la comunicarione seriale. Devi spostare il sensore di temparatura.
Ciao Uwe

Ciao Uwe,

mi sono dimenticato il Pin 0 "analogico"

saluti

cioppino:
Ho un componente LM3552 per la temperatura, e funziona molto bene.
Appena aggiungo il xbee Shield e il LM3552 e attaccato alla PIN 0 la temperatura e di 3 gradi piu alta.
Tolgo il shield e tutto torna a funzionare.

Immagino che in realtà il sensore sia un LM35, il 3552 è un driver per led, e che l'hai collegato su A0 e non sul pin 0, dato che non esiste un solo tipo di Xbee shield sarebbe il caso che ci dici quale hai esattamente, potrebbe essere che A0 è collegato ad un pin del Xbee e questo falsa le letture del sensore.

Dopo una telefonata con cioppino:
Presumo che il problema sia una minima variazione dei 5V quando aggiungi il XBee perché consuma un bel po di corrente. Il LM335 da 10mV per Kelvin e un errore di 3 Kelvin corrisponono a 30mV variazione su Aref. Questa variazione puó essere data dalla perdita di tensione sul cavo USB, sul fusibile o sul transistore di Arduino quando la corrente é piú alta.
Soluzioni:

  • usare una tensione di riferimento esterna prodotta con un diodo zener (3,9V o 3,6V)
  • misurare la tension su uno Zener (3,9 o 4,7V) con un entrata analogica libera e calcolare da questo dato la variazione dei 5 V usati come riferimento dal ADC.
  • usare i 1,1V ref interna non é opportuno viste che i valori da misurare sono intorno ai 3V e la previsione di misurare altre tensioni di simile valore.

Ciao Uwe

uwefed:
Presumo che il problema sia una minima variazione dei 5V quando aggiungi il XBee perché consuma un bel po di corrente. Il LM335 da 10mV per Kelvin e un errore di 3 Kelvin corrisponono a 30mV variazione su Aref. Questa variazione puó essere data dalla perdita di tensione sul cavo USB, sul fusibile o sul transistore di Arduino quando la corrente é piú alta.

Potrebbe essere, però Aref deve cambiare molto di più di di 30mV per ottenere questo errore sul ADC.
Facciamo un semplice conto, partiamo da Aref a 5V esatti e con Ta 25° abbiamo 250 mV in uscita dal LM35 (10 mV/C°), l'ADC ha una risoluzione di 5/1024 = 4.88 mV per ogni count, 250 mV corrispondono a 250/4.88 = 51.2 count, ovviamente il decimale si perde e si ottiene una lettura reale di 51 count oscillante di +/- 1 count nel tempo.
Una temperatura di 28°, cioè +3°, corrisponde a 280 mV che sono 57.4 count con Vcc 5V, per ottenere questo valore mantenendo costante l'uscita del sensore a 250 mV (25°) la tensione di riferimento deve variare notevolmente, 250/57 * 1024 = 4.49 V, che mi sembra decisamente troppo per un assorbimento aggiuntivo di 50 mA, ma anche se sono 200 mA (Xbee pro in trasmissione) 0.5V di calo sono sempre tanti, un valore realistico è un calo di 50-100 mV con correnti di qualche centinaio di mA.
La cosa è facilmente verificabile misurando la tensione su Aref con un multimetro sia senza Shield che con la Shield, se cala realmente di circa 0.5V c'è sicuramente un problema con l'alimentazione di Arduino.

Astrobeed, in parte hai ragione; ho sbagliato la grandezza del errore sulla tensione di riferimento.
Il sensore é un LM335 che da una uscita di 10mV per K e percui a 25 gradi 2,98V
Per avere una lettura errata di 30mV devo avere un cambia di tensione di riferimento non di 30mV ma di ca 50mV.
Ciao Uwe

uwefed:
Il sensore é un LM335 che da una uscita di 10mV per K e percui a 25 gradi 2,98V
Per avere una lettura errata di 30mV devo avere un cambia di tensione di riferimento non di 30mV ma di ca 50mV.

Se il sensore è il 335 allora si bastano solo 50 mV di variazione sulla Aref per produrre l'errore, ed è un valore compatibile con il calo dovuto alla variazione di carico.
Nel post iniziale il sensore era stato dichiarato come LM3552, che è un driver per led, da qui l'ipotesi che si trattasse di un LM35 e tutto il relativo ragionamento sul possibile errore, ragionamento che comunque è utile per capire come mai a volte si ottengono valori sbagliati dal ADC anche se tutto sembra a posto.

@ astrobeed
In efetti il codice del sensore temperatura era sbagliato.
Avevo telefonato a cioppino prima di rispondere e ha chiarito che il sensore é un LM335.
Ciao Uwe