Salve, ho un problema con il collegamento di un Arduino Mega ad un secondo Arduino Mega attraverso il modulo nRF24L01 e un potenziometro 4231 usando il protocollo SPI.
Ho collegato i due dispositivi al bus SPI utilizzando i pin CS 46 e 47 per il modulo nRF24L01 e 53 per il potenziometro.
La parte trasmissione funziona perfettamente mentre il potenziometro lavora solo se scollego il modulo di trasmissione.
E’ possibile che ci sia un conflitto sul bus anche se i CS sono alti?
Grazie
Non si capisce cosa hai fatto.
Puoi collegare piú dispositivi al bus SPI ma solo se uno é master (uno dei Arduini) e gli altri sono slave (l'altro arduino e il nRF24L01)
Gammon Forum : Electronics : Microprocessors : SPI - Serial Peripheral Interface - for Arduino ("How to make an SPI slave")
Ciao Uwe
Si, mi sono spiegato male, al bus SPI di un Arduino collego il modulo nRF24L01 e il potenziometro 4231 e all'altro Arduino un secondo modulo nRF24L01.
Proprio stamattina ho risolto il problema: il cavo tra Arduino e il modulo nRF24L01 era troppo lungo e probabilmente captava dei segnali che disturbavano il bus SPI.
Accorciato il cavo tutto funziona regolarmente.
Mi rimane un problema che non so come risolvere:
Ho realizzato questo dispositivo per aggiungere e controllare un sistema di accumulo al mio impianto fotovoltaico.
Prelevo i dati di produzione e di consumo e gestisco la carica delle batterie e della fornitura di alimentazione all'impianto di illuminazione di casa e del giardino ed inoltre trasmetto in casa, ad un altro Arduino, tutti i dati( produzione, consumo, tensione, corrente, ecc).
Quando inserisco il connettore USB per il collegamento al computer tutti i dati si modificano come se avessi modificato le tarature e non ho più i valori corretti.
Ho provato con alimentazioni separate per non appesantire l'alimentazione di Arduino ma non riesco a trovare una soluzione.
Saluti albvac
Come fai le misure? Con sensori analogici? Se si forse uno dei due alimentatori, pc o arduino ha leggera dispersione, prova con portatile a batteria, a me ha aiutato. Però non capisco, al pc avevo inteso che collegarvi un solo arduino, quello che riceve i dati, la misure le fa l'altro, che non è collegato al pc, ho capito male?
I sensori di produzione, consumo( CT Sensors - Interfacing with an Arduino — OpenEnergyMonitor 0.0.1 documentation) e corrente sono ad effetto Hall mentre effettuo la misura della tensioni con partitori resistivi.
Collego il pc ad entrambi i dispositivi solo per scaricare aggiornamenti del codice o per monitorare alcuni dati ma normalmente non è collegato.
Ho notato che inserendo il connettore USB la tensione varia di qualche centesimo e probabilmente influisce sulla misura e questo non mi va bene quando voglio monitorare i dati.
E' un dispositivo che funzione da parecchio tempo ma continuo ad aggiornarlo.
Magari attaccare usb cambia il riferimento dello adc, sarebbe da provare una connessione isolata dal power
albvac:
Ho notato che inserendo il connettore USB la tensione varia di qualche centesimo e probabilmente influisce sulla misura e questo non mi va bene quando voglio monitorare i dati.
Non probabilmente ma sicuramente.
La misura ADC usa di default la tensione di alimentazione come riferimento. Se quella non é precisamente il valore posto nello Sketch la misura é erata.
Ciao Uwe
albvac:
Ho notato che inserendo il connettore USB la tensione varia di qualche centesimo e probabilmente influisce sulla misura ...
Mmmm ... ricordiamo che sulle schede "originali" c'è un MOSFET che, commuta le alimentazioni tra Vusb e Vin. Se si collega la Vusb con la Vin collegata, il MOSFET protegge la porta USB staccando la sua alimentazione mentre, se non c'è presenza di Vin, l'alimentazone automaticamente commuta su Vusb.
Sui "cloni" Cinesi spesso questa cosa funziona male (o non funziona affatto ... ho visto "fumare" un regolatore per questo motivo ...) e quindi, collegando la Vusb con la Vin inserita può provocare strani effetti sull'alimentazione.
In ogni caso, anche per evitare possibili strani ritorni di massa ... il consiglio sarebbe quello di alimentare o da una parte o dall'altra.
Quando alimenti da Vin/jack/pin 5V hai una alimentazione e Aref usa quella, quando usi la USB hai un'altra alimentazione e Aref usa quest'ultima. Dato che ovviamnete è molto improbabile che le due alimentazioni siano identiche o nel caso una interferisca sull'altra ... il valore di Aref sballa e sballano le misure.
SE ti serve fare cose di preciso, devi mettere un chip generatore di tensione costante (di quelli calibrati) sull'ingresso Aref e usare quello (indipendete quindi da dove alimenti) come riferimento.
Guglielmo
Grazie Guglielmo, mi hai chiarito molto bene il problema.
Anch'io pensavo che inserendo il connettere USB si variava il riferimento di tensione ma non conosco internamente la scheda.
Pensavo che AREF, che ho visto collegato con AVCC(20,21) , fosse solo un uscita alimentazione.
Ho notato che si consiglia di interporre una resistenza di 5K per non danneggiare il microcontrollore.
Quindi, mi confermi, devo creare un alimentazione stabilizzata esterna a 5 V e inserire la seguente istruzione in setup:
analogReference(EXTERNAL);
Alberto
albvac:
Quindi, mi confermi, devo creare un alimentazione stabilizzata esterna a 5 V e inserire la seguente istruzione in setup:
analogReference(EXTERNAL);
Può anche NON essere a 5V ... 5V è un massimo, ma se tu devi misurare valori che non arrivano mai a 5V puoi selezionare un valore di Aref più basso in modo che ciascuno dei suoi 1024 punti sia più preciso.
La cosa importante è che sia una sorgente di tensione molto stabile (... come già detto, ci sono chip apposta da utilizzare per tali scopi, ove è richiesta una notevole stabilità).
Guglielmo
Pensavo di usare un LM 317 e regolarlo a 4,5 V regolando i trimmer dei partitori per la misura della tensione batteria e rete.
Anche se la misura si allontana leggermente dalla reale non cambia molto, l'importante che sia costante ai valori rilevati.
Se il risultato non sarà soddisfacente passerò a chip più precisi.
Ti ringrazio ancora per l'aiuto.
Se qualcuno è interessato a questo dispositivo sono disponibile a fornirgli tutte le informazioni necessarie per realizzarlo e accetto consigli per migliorarlo.
Grazie
Alberto
Dai anche una letta a QUESTO interessante documento
Guglielmo
Ho fatto la prova AREF mettendo un LM 317, in cascata ai 7 V di alimentazione, a 4,5 V che al voltmetro appaiono stabili ma oltre ad avere le solite differenze quando inserisco il connettore USB ho una maggiore instabilità nella lettura dei dati.
Probabilmente devo capire meglio il funzionamento AREF.
Continuo.
Ripeto ... strani ritorni di massa? Hai il PC collegato con la massa alla terra? ... perché non è normale :
Guglielmo
Non ho mai controllato i valori di resistenza ma l'impianto è collegato a terra e tutte le prese sono collegate.
Domani faccio una prova col portatile per vedere se c'è differenza.
Sto usando un secondo dispositivo che uso come simulatore di prova per non interferire con quello installato e non creare problemi in casa.
Sono convinto anch'io che sia un problema di disturbi( vedi cavo di trasmissione) ma facendo il collegamento con AREF non dovrebbe più sentire il collegamento USB e non dovrebbero variare i valori.
Domani continuo.
Saluti
Alberto
Scusami Standardoil non capisco cosa devo guardare nel codice per il mio problema.
Alberto
Ho sbagliato io, alla grande, il post era per un'altro topic, ma mi sono incasinato tra la tprta di mele che bruciava e la scrittura, adesso lo rimuovo, scusatemi tutti
Invece a te volevo scrivere che oltre al vedere bene la AREF, ti conviene provare con un portatile a batteria dalla mia esperienza viene utile
albvac:
Pensavo di usare un LM 317 e regolarlo a 4,5 V regolando i trimmer dei partitori per la misura della tensione batteria e rete.
Anche se la misura si allontana leggermente dalla reale non cambia molto, l'importante che sia costante ai valori rilevati.
Se il risultato non sarà soddisfacente passerò a chip più precisi.
Ti ringrazio ancora per l'aiuto.Se qualcuno è interessato a questo dispositivo sono disponibile a fornirgli tutte le informazioni necessarie per realizzarlo e accetto consigli per migliorarlo.
Grazie
Alberto
Un LM317 ha bisogno di almeno una tensione di 1,2 V maggiore all uscita. Se lo metti a 4,5V non ti funziona alimentato a 5V.
Devi usare un dispositivo di tensione di rigferimento diverso e settare la tensione piú bassa per essere sicuro che a una tensione di alimentazione di 4,5V funzioni ancora bene. Non tutte le prese USB danno 5V precise ma anche solo fino a 4,5V.
Ciao Uwe
Ciao Uwe, scusa la risposta in ritardo.
Alimento LM 317 con i 7 V con cui alimento Arduino ma non è sufficiente perchè ho visto qualche piccola variazione di tensione.
Devo usare un chip di tensione di riferimento come dice Guglielmo.
Comunque ho abbastanza risolto il problema alimentando la scheda dal pin 5V.
La tensione è molto vicina alla tensione USB e le differenze sono minime..
Il problema sta sicuramente nel regolatore 1117 della scheda che fornisce una tensione intorno ai 4,5 V quindi più bassa di quella USB.
Prima o poi proverò a sostituirlo con un 7805, lavoro complicato visto che è a saldatura superficiale ma ne avevo già sostituito uno danneggiato con risultato positivo.
Alberto