Buongiorno a tutti, da qualche settimana sto lavorando ad un progetto con il mio arduino uno rev.3, ho letto fin ora tutti i valori tramite porta seriale.
Stamattina mi è arrivata finalmente l'ethernet shield w5100.
Per prima cosa ho scollegato tutte le connessioni che andavano ai sensori partendo dal mio arduino uno rev.3 per montare l'ethernet shield.
Una volta montata l'ethernet shield ho rimesso esattamente ogni cavo proveniente dai sensori nello stesso posto su quale erano messi nel arduino ma direttamente sul ethernet shield.
Risultato= Tutti i valori che leggo con lo stesso sketch perfettamente configurato e che mi dava valori precisi, una volta eseguita la lettura sempre tramite seriale ma con i cavetti collegati su ethernet shield, mi da tutti valori molto diversi. cosa può essere? ho fatto la contro-prova togliendo la shield w5100 e ricollegare tutti i sensori direttamente all'arduino e i valori tornano alla normalità.
Se quella ethernet shield è un clone, è possibile che ne hai beccato una fatta in maniera discutibile Sicuro comunque che hai inserito la ethernet shield in modo corretto nel tuo Arduino? Alimenti tutto via USB? hai tanta roba collegata oppure solo qualche sensore?
si ho inserito la scheda ethernet in modo corretto, mi sono preoccupato di fare coincidere tutte le diciture di pin della ethernet shield con quelli del arduino. ho provato sia con tutti i sensori sia con un solo sensore. il problema non cambia. sempre valori più alti ho nella lettura, rispetto la lettura direttamente soltanto con arduino uno rev.3
si alimento la scheda tramite usb, ma anche se alimento con il suo alimentatore il risultato non cambia: sempre valori più alti. di contro posso dire che la ethernet shield funziona in quando ho fatto un piccolo webserver per comandare un relay e me lo accende e spegnere perfettamente ad ogni comando. saluti
se cerchi sul forum e su google ci sono svariati argomenti su come stabilizzare le letture analogiche, usando aref, ripetendo varie misure calcolandone la media, usando un buon alimentatore, un giusto hardware dei sensori, ecc
Ho preso arduino uno e collegato soltanto all'usb, senza nessun sensore ed ho fatto una lettura tramite analogread su tutte e 4 le entrate analogiche alle quali collegherò il pin dei sensori ed i valori partono tutti quasi dallo stesso valore.
poi ho preso l'ethernet shield e l' ho collegata all'arduino, sempre senza collegare nessun sensore e guardate un po' tutti i valori, sembrano impazziti.
Se non colleghi nulla alle porte di Arduino ottieni valori senza senso ...
... tutte le porte di Arduino sono ad alta impedenza e, se lasciate sconnesse, captano qualsiasi disturbo !
Quindi, se nulla è attaccato a quelle porte, il test NON ha alcun senso.
Inoltre, ANCHE se colleghi i sensori, cosa non è chiaro nella spiegazione di @Pablos, riguardo al fatto che i pin analogici (senza rference) sono influenzati da quanto viene assorbito dal tutto ?
Arduino senza shield e con shield assorbe correnti diverse.
L'adc impiega 0,1 ms per leggere un ingresso, magari non farli leggere tutti consecutivamente, montare un C da 100 nF sull'alimentazione del sensore può essere un accorgimento, l'USB non è un buon metodo per alimentare arduino e avere letture stabili.
Scusate la mia ignoranza, quindi mi sembra di capire che per stabilizzare i valori devo usare analogReference() e che i valori inserendo la shield ethernet impazziscono perché la scheda ethernet assorbe più corrente che quindi fa andare fuori taratura la lettura dei sensori? Inoltre mi fate un esempio pratico partendo dal mio sketch su come usare analogReference()
Guarda che si tratta di una semplice riga di codice nel setup E nel link di pablos ci sono scritti i vari tipi di riferimenti che puoi usare, a seconda del modello di Arduino anche.
E' ovvio che se usi quella interna, tutto quello che sarà sopra 1.1V verrà letto come 1023
Pablos parla anche di un condensatore, non dovrebbe essere male come idea, l'avevo usato una volta per una serie di pulsanti che avevo collegati agli ingressi analogici