[RISOLTO]Per più di 3 anni tutto ok ed ora... interferenze

Per quello che tu chiami interrupt e cioè l'ingresso anemometro, ti consiglio di far apparire un asterisco (*) in alto a dx oppure a sx del LCD per vedere come e quando lampeggia in tempo reale (se non hai già messo un led, ma non lo vedo) così puoi regolare la tua resistenza di pull-up in modo da tagliare tutti disturbi, anche drasticamente con una resistenza bassa!

Ciao steve,

Perché ti concentri sull'anemomentro? L'interrupt che si attiva alla rotazione dei motori è quello che gestisce il sensore Ir....

Oggi ho fatto un'altra prova... ho disattivato l'interrupt, (con detachinterrupt) all'avvio del comando srotolamento tenda... e cmq l'arduino mi si riavviava anche cosi...

Quello che credevo è che disattivando l'interrupt incriminato non avrebbe piu' aptato più il disturbo... quwsto mi avrebbe permesso di identificare da dove cavolo entrano sti disturbi...

Ad oggi con tutte le prove fatte e le esclusioni a step di tutto non ho ancora capito da dove arrivano... comincio a sospettare xhe siano EMI irradiate e la prossima prova(facile e dirsi ma non a farsi) e schermare con alluminio tutto l'arduino....

Anche con filtri emi a monte di arduino e tende non ho risolto...

Ti propongo un' altra prova : scollega tutto e lascia solo arduino collegato e vedi cosa succede. Se va bene comincia a collegare un dispositivo alla volta finché non si presenta il problema. Tieni presente che a mio parere tutti i cavi più lunghi di 10cm dovrebbero essere schermati.

Ciao Nello,

Prova fatta... sembrerebbe essere il cablaggio dell'i2c che gestisce il display 20x4 a 10metri... la prova è stata fatta staccando tutto e metrendo un display a 10 cm da arduino e a 10 metri come da configurazione di 3 anni a questa parte.

Indiziati a questo punto sarebbero:

I2c extender:come verificare se hanno perso efficenza? Funzionano quondo danneggiati non sono...

Pull up eaterna da 4k7 è un valore corretto? Quella interna se non ho letto male è da 20k, ha senso abbassarla ancora di piu? Quella interna è stata ovviamente disattivata.

Si possono filtrare i segnali sda e scl in qualche modo?

Ricablare 10metri di cavo facendo passare i cavi non vicino a quelli dei motori( come ultima spiaggia visto che significherebbe rivedere un tutto l'impianto...)

Grazie

La massa del cavi i2c NON farla passare attraverso Arduino ma collegala fuori a monte verso l'alimentatore.

Ciao Claudio... purtoppo il problema persiste...

per queste ultime domande?

Pull up eaterna da 4k7 è un valore corretto? Quella interna se non ho letto male è da 20k, ha senso abbassarla ancora di piu? Quella interna è stata ovviamente disattivata.

Si possono filtrare i segnali sda e scl in qualche modo?

poi mi chiedevo, sfruttando il cablaggio attuale esistono protocci diversi dall'i2c che mi permetta di far funzionare il display nelle condizioni di oggi?

EDIT:

leggevo del protocollo RS485, e ragionando potrebbe essere utilizzabile nel mio caso solo se potrei sfruttare due dei quattro cavi disponibili già cablati al quale collegherei un arduino nano portandogli i 7,5v e gnd che si trovano a 10m di distanza e che cmq passano vicino i cavi della 220v... e gli altri due per la comunicazione vera e propria... poi l'arduino nano mi farebbe vedere su display quello che il mega gli invia... fattibile secondo voi? oppure me la sconsigliate? altro modo per portare i 7,5 volt all'arduino nano non lo avrei...

Si, puoi comunicare in seriale con un Arduino remoto. Il 485 è solo un tipo di collegamento fisico, come RS232 o current loop, non un protocollo vero e proprio, quello che ci viaggia su in tutti questi casi è sempre una normale comunicazione seriale.

Il fatto è che il problema potrebbe ripresentarsi tale e quale (se non ho capito male si tratta sia di dati errati verso il display che di blocchi/reset di Arduino).

Siamo in presenza di quattro fili soggetti ad accoppiamento induttivo/capacitivo, quindi secondo me vanno disaccoppiati il più possibile dalle logiche tramite optoisolatori, e l'alimentazione (che è comunque galvanicamente non isolata) va filtrata con un filtro di modo comune, preceduto eventualmente da condensatori di fuga verso terra.

Qualcosa del genere:

Alternativa puoi provare con il bluetooth.

Grazie ad entrambi!

Valuto l'impatto di entrambe le proposte.. grazie mille!!!!

Beh, si, la RS-485 viene usata in ambiti industriali dove hai bisogno di collegare torni, frese, centri di lavoro e tanta altra "roba disturbosa" :grinning_face_with_smiling_eyes:
. Arriva fino a 1 km e lavora sull'opposizione dei due segnali A e B, quindi se A è positivo B è negativo e viceversa. In questo caso capisci che se entra un disturbo è quasi impossibile che faccia danni. Io la sto usando adesso per leggere umidità/temperatura che prima leggevo su DHT22 (perfette, ma in alcuni casi entravano disturbi che non sapevi come togliere). Le sonde che adesso uso sono RS485 e non ho più avuto problemi.
Non so poi se si debba usare obbligatoriamente con la libreria e quindi usare Master e Slave oppure si può usare direttamente con gli stessi comandi della Software.serial (questo mi interesserebbe)

Poi, visto che siamo su disturbi che sembrano PESANTI, prova a mettere a negativo TUTTI gli ingressi che non usi. Non ti costa nulla e almeno sai che non entrano da li !

Ciao Steve,
Non so onestamente, sto ancora valutando cosa fare.. la bella stagione aiuta nel valutare con calma il tutto dato che le tende sono sempre aperte...

Il fatto dell' RS485 mi intriga ma il feedback di Claudio mi ha lasciato un po di preoccupazione, perché non mi ha escluso dalla possibilità che la situazione resti invariata rispetto ad ora oltre a dover fare altre modifiche hardware... e nn poche...

Per mettere a negativo intendi semplicemente collegare il pin inutilizzato a gnd e basta?

Esatto. Chiudi tutti i pin aperti con il negativo.

Ah ok grazie. Ma esistono cavetti corti appositi? I dupont più corti sono da 10cm... mi sembrano un po eccessivi no!?

Ad esempio potresti vedere cosa succede lasciando collegato solo il filo di massa di quei 10 metri. Se Ardu si blocca ancora allora passare al 485 non servirebbe a nulla. Poi solo il filo Vcc o sia massa che Vcc, in pratica capire se è il cablaggio fisico di base dell'alimentazione a portare dentro qualcosa.

Per i dupont, di solito si usano per la prototipazione, poi uno i cavetti lunghi giusti definitivi (magari saldati) se li costruisce.

Ho fatto un'ultima prova e ed è stata esaustiva a capire finalmente da dove arrivano i disturbi... ho provato a passare un cavo sul pavimento(alla buona quindi) e cosi facendo il problema è sparito.... quindi i disturbi passano attraverso i cavi dell'i2c...

Per la prova fatta ho messo tutti i pin utilizzati nel progetto a massa e ho fatto una prova con questa configurazione e una prova con il vecchio cablaggio sempre con i pin a massa.... purtroppo dopo 3 anni il cablaggio che passa insieme ai cavi della 220v da problemi di interferenza... mah saranno come dite i motori che ora mandano piu disturbi perché usurati....sono quindi a piedi... che palle!!! :smiley:

L'errore è stato in origine, l' uscita I2C è connessa direttamente ai pin del processore ed è un hardware progettato per connettere dispositivi dislocati su uno stesso pcb. Portarlo al di fuori della scheda per 10mt è fuori da ogni logica, mi meraviglio che ha funzionato per 3 anni, sei stato molto fortunato.

... difatti, se leggi bene, al post #47 dice di aver usato degli I2C extender, immagino P82B715 o simili, che permettono distanze ben superiori ai 10 mt ... certo che, per non avere problemi, non basta prenderli e montarli, tocca studiarsi bene tutto il datasheet che da le varie formule per calcolare tutti i passivi che compongono la rete !

Guglielmo

Ciao di nuovo a tutti...

Sono riuscito a farmi prestare un'oscilloscopio... questo nel link di seguito....o meglio me lo presterebbe un mio collega hobbysta come me ma non ho idea di come si usi... se mi aiutate me lo faccio prestare... qualcosa mi ha spiegato, ma ha poca esperienza come me... mi ha anche detto che è poco più di un giocattolo....ma perché nn provare?

Qualche guida da leggere per i primi utilizzi?

Edit:

Ripensandoci potrei anche comprarmelo se nn menlo sconsigliate

Ho fatto qualche prova per capire come funziona e come usarlo... sono riuscito a rilevare gli andamenti del bus i2c ad esempio...

Ma qui ora mi occorrerebbe qualche consiglio pratico su dove e come indagare evitando prove a manella rischiando di danneggiare i motori delle tende...

Tre le prove iniziali su dove secondo me mi dovrei concentrare:

  1. bus i2c:
  • nello specifico il cavo di 10m che collega i due extender --》 l'oscilloscopio dove lo devo collegare? Secondo me in parallelo tra l'extender e e il cavo...
  1. cavo che collega il sensore che uso come rilevatore di puoggia
  • dato che l'interferenza mi attiva l'interrupt del pin al quale è collegato questo sensore oltre a riavviarsi arduino, mi verrebbe da dire in parallallo al sensore
  1. l'alimentazione di arduino post filtraggio... qui ho provato a collegare l'oscilloscopio ma non sono riuscitoca rilevare nulla...

Fatti u collegamenti ovviamente avvierei i motori e ossevando il display dovrei notare dei picchi inusuali e quello che dovrei segnarmi sono quali paramentri?

Poi se possibile una mano nell'interpretare cosa significo i valori a display...

Come sempre ringrazio