Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 02 dicembre 18, 10:40   #31 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
Citazione:
Originalmente inviato da Minestrone Visualizza messaggio
Capisco. L'errore di salita e discesa però dovrebbe compensarsi, almeno in parte. O no?

Inviato dal mio Mi A1 utilizzando Tapatalk
Su tempi di ciclo anche brevissimi l'errore introdotto dai tempi di salita e discesa dell'oscilloscopio che l'istruzione del micro è trascurabile ai fini della misura.

__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Vecchio 10 maggio 19, 10:29   #32 (permalink)  Top
User
 
L'avatar di Minestrone
 
Data registr.: 13-09-2012
Messaggi: 4.686
Rispolvero la discussione perché, dopo aver accantonato per qualche mese il progetto, lo sto riprendendo in mano.
Alla fine avevo creato uno sketch che sfruttava i dmp interni dei due MPU6050. Al bus i2c sono collegati i due sensori e un cristalli liquidi.
Avevo imbastito un buon 80% del programma con i menù e un' autocalibrazione che, provato a pezzi, funzionava. Alla fine ho cablato il tutto, messo assieme il codice e non funzionava più nulla.
Adesso stò riprendendo in mano l'accrocchio e mi accorgo che probabilmente non funziona nulla a causa dell'eccessiva lunghezza dei cavi che non va d'accordo con il bus I2c.
Avete suggerimenti per far funzionare il tutto?
So che esistono I2c extender ma, forse, piuttosto che mettere 4 I2C extender, conviene mettere due arduino pro mini a fianco dei sensori e trasformare la comunicazione da I2c a seriale. Questa soluzione mi scoccia parecchio perché dovrei mettere mano al codice ma mi permetterebbe di dividere il codice su 3 arduino che, a quel punto lavorerebbero in scioltezza. Considerando che allo stato attuale gira tutto su un arduino nano con flash e EEPROM quasi piene...
Minestrone non è collegato   Rispondi citando
Vecchio 10 maggio 19, 12:13   #33 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
Citazione:
Originalmente inviato da Minestrone Visualizza messaggio
Rispolvero la discussione perché, dopo aver accantonato per qualche mese il progetto, lo sto riprendendo in mano.
Alla fine avevo creato uno sketch che sfruttava i dmp interni dei due MPU6050. Al bus i2c sono collegati i due sensori e un cristalli liquidi.
Avevo imbastito un buon 80% del programma con i menù e un' autocalibrazione che, provato a pezzi, funzionava. Alla fine ho cablato il tutto, messo assieme il codice e non funzionava più nulla.
Adesso stò riprendendo in mano l'accrocchio e mi accorgo che probabilmente non funziona nulla a causa dell'eccessiva lunghezza dei cavi che non va d'accordo con il bus I2c.
Avete suggerimenti per far funzionare il tutto?
So che esistono I2c extender ma, forse, piuttosto che mettere 4 I2C extender, conviene mettere due arduino pro mini a fianco dei sensori e trasformare la comunicazione da I2c a seriale. Questa soluzione mi scoccia parecchio perché dovrei mettere mano al codice ma mi permetterebbe di dividere il codice su 3 arduino che, a quel punto lavorerebbero in scioltezza. Considerando che allo stato attuale gira tutto su un arduino nano con flash e EEPROM quasi piene...
Non ricordo bene tutto, ma che lunghezza hanno i cavi I2C ? in genere non ci sono grossi problemi, io in un progetto che sto portando avanti arrivo a 2,5m di distanza fra master ed ultimo slave ed ho connessi in mezzo fino ad altri 7 slave, il tutto viene annegato in muri di calcestruzzo ed altri materiali edili durante la messa in opera, naturalmente non uso Arduino ma micro STM32xxxx.

Hai usato resistenze di pull-up ai 5V e che cavi usi ? Il bus I2C va a 400kHz o 100kHz ?

__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Vecchio 10 maggio 19, 12:29   #34 (permalink)  Top
User
 
L'avatar di Minestrone
 
Data registr.: 13-09-2012
Messaggi: 4.686
Non ho usato resistenze di pull up affidandomi a quelle integrate nella scheda. Come cavo ho usato un vecchio cavo di rete che avrà certamente alta capacità essendo twistato e i cavi saranno lunghi meno di un metro l'uno.
Se mi dici che utilizzando resistenze di pull up posso risolvere faccio delle prove in quella direzione.
Considera che per me è tutta una esperienza nuova e ogni volta che faccio qualcosa la devo studiare per impararla.
Già l'aver scritto tutto quel codice per me è stato uno sforzo enorme.

Inviato dal mio Mi A1 utilizzando Tapatalk
Minestrone non è collegato   Rispondi citando
Vecchio 10 maggio 19, 14:50   #35 (permalink)  Top
User
 
L'avatar di Minestrone
 
Data registr.: 13-09-2012
Messaggi: 4.686
Piccola precisazione: le resistenze di pull up dovrebbero essere presenti sulla scheda. Proverò ad aggiungerne di più grandi se può fare la differenza ma non so se posso modificare il circuito. Stasera ci guardo
Inviato dal mio Mi A1 utilizzando Tapatalk

Ultima modifica di Minestrone : 10 maggio 19 alle ore 14:54
Minestrone non è collegato   Rispondi citando
Vecchio 10 maggio 19, 15:54   #36 (permalink)  Top
User
 
L'avatar di Minestrone
 
Data registr.: 13-09-2012
Messaggi: 4.686
Spero di non aver detto castronerie.

Inviato dal mio Mi A1 utilizzando Tapatalk
Minestrone non è collegato   Rispondi citando
Vecchio 10 maggio 19, 19:19   #37 (permalink)  Top
User
 
L'avatar di Minestrone
 
Data registr.: 13-09-2012
Messaggi: 4.686
Sono in viaggio e ne ho approfittato per spulciare lo schema della scheda gy 521 contenente il mpu6050 , sembra che siano previste resistenze di pull up da 4.7K. Evidentemente non è quello il problema.
L'unico dubbio è che, siccome la scheda può essere alimentata a 5V ma l'MPU lavora a 3.3 può essere che non sia tollerante ai segnali a 5V provenienti dalla Arduino e dal display. In rete ho visto millemila applicazioni di gy521 collegate direttamente all Arduino.

Inviato dal mio Mi A1 utilizzando Tapatalk
Minestrone non è collegato   Rispondi citando
Vecchio 10 maggio 19, 21:52   #38 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
Per la comunicazione I2C è importante che i livelli del segnale siano congrui, cioè se la MPU prevede sui segnali SCK e SDA un livello di 3,3V anche il micro deve poter funzionare con tali tensioni e le resistenze di pull up vanno connesse al +3,3V e di valore adatto (3,3kohm in genere vanno bene) nel caso ambedue i dispositivi abbiano i pin 5V tollerant è bene mettere le resistenze di pull up (4,7kohm) al +5V.

Altro punto importante è, se possibile, configurare i pin in modo Open Drain e non PushPull; essendo i segnali SDA e SCK non bilanciati non penso sia indicato usare un doppino twistato, meglio un classico flat cable.

__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Vecchio 15 maggio 19, 10:52   #39 (permalink)  Top
User
 
L'avatar di Minestrone
 
Data registr.: 13-09-2012
Messaggi: 4.686
Mi sono procurato uno scatolone di convertitori di livello (me ne serviva uno ma tant'è...) e, effettivamente, sembra andare meglio ma, dopo un po' che l'ambaram funziona, comincia ad impallarsi. Probabilmente una libreria simil wire.h non bloccante potrebbe aiutare ma non può essere quella la soluzione al problema.

Idee?

Gli I2c extender non mi piacciono molto come soluzione. Ne andrebbero usati 4 (due per sensore, o sbaglio?) e allora preferirei mettere un paio di arduini pro micro assieme ai sensori che si occuperebbero di comunicare con i sensori tramite I2C (a breve distanza) e un terzo arduino che si occuperebbe di interfacciarsi con il resto dell'hardware. In questo modo dovrei trasferire gran parte del codice sui due arduini in periferia e sgraverei un po' l'arduino che prima doveva occuparsi di tutto.
Facendo tutto ciò però dovrei comunicare in seriale, purtroppo gli arduino che ho possiedono solo una seriale. Potrei risolvere con un arduino mega (che non ho) o con un arduino due (che ho e che non ho mai usato) ma mi sembra di starmi addentrando parecchio nell'ufficio UCAS.

Se avete idee illuminanti (dal basso della mia esperienza a me ne vengono poche) sono tutt'orecchi.
Minestrone non è collegato   Rispondi citando
Vecchio 15 maggio 19, 13:10   #40 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
Citazione:
Originalmente inviato da Minestrone Visualizza messaggio
Mi sono procurato uno scatolone di convertitori di livello (me ne serviva uno ma tant'è...) e, effettivamente, sembra andare meglio ma, dopo un po' che l'ambaram funziona, comincia ad impallarsi. Probabilmente una libreria simil wire.h non bloccante potrebbe aiutare ma non può essere quella la soluzione al problema.

Idee?

Gli I2c extender non mi piacciono molto come soluzione. Ne andrebbero usati 4 (due per sensore, o sbaglio?) e allora preferirei mettere un paio di arduini pro micro assieme ai sensori che si occuperebbero di comunicare con i sensori tramite I2C (a breve distanza) e un terzo arduino che si occuperebbe di interfacciarsi con il resto dell'hardware. In questo modo dovrei trasferire gran parte del codice sui due arduini in periferia e sgraverei un po' l'arduino che prima doveva occuparsi di tutto.
Facendo tutto ciò però dovrei comunicare in seriale, purtroppo gli arduino che ho possiedono solo una seriale. Potrei risolvere con un arduino mega (che non ho) o con un arduino due (che ho e che non ho mai usato) ma mi sembra di starmi addentrando parecchio nell'ufficio UCAS.

Se avete idee illuminanti (dal basso della mia esperienza a me ne vengono poche) sono tutt'orecchi.
Se ho capito bene devi leggere i dati da due MPU e visualizzarli su un display, tutti e tre i dispositivi sono collegati ad un unico bus I2C e la lunghezza massima del bus è inferiore 1m.

Per prima cosa tutti i dispositivi devono usare la stessa tensione del bus I2C o 3,3V o 5V e quindi un pull-up unico, fare mescola e combina non va bene, se hai bisogno di un convertitore di livello del bus, le resistenze di pull-up vanno messe sia in ingresso che uscita del convertitore.

Altri punti importanti sono:
- gli indirizzi dei dispositivi devono essere tutti differenti.
- la frequenza del bus I2C deve essere la più bassa di quelle accettetata dai dispositivi connessi.
- quando connessi singolarmente i dispositivi devono funzionare in modo affidabile e sicuro.

Se come dici, il sistema per un po funziona e poi si impalla il problema è da ricercare nel fw e non nel hw; probabilmente hai temporizzazioni d'interrogazione errate o routine che interferiscono a vicenda (occhio se usi più di un interrupt).

Come ho scritto per leggere 8 sensori sul bus I2C utilizzo un micro a 32bit, però ho realizzato anche uno strumento "da cantiere" basato su Arduino Mega 2560 che non solo legge i sensori, può programmarne gli indirizzi fa da tester hw, li visualizza su display touch a colori e può anche loggare i dati scrivendoli su una SD, quindi anche il piccol Arduino ce la può fare....







__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
Radiocomando 3 motori DC e 2 sensori di T con Arduino su trenino spraity Radiocomandi 3 09 febbraio 17 14:07



Tutti gli orari sono GMT +2. Adesso sono le 03:56.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002