[RISOLTO] MCP23017 - arduino yun, problemi di comunicazione

Salve a tutti.

Ho notato alcuni problemi di comunicazione tra il modulo di espansione MCP23017 e arduino yun.
Il problema che si verifica è che dopo alcune operazioni sembra che il modulino non riceva più le informazioni, all'inizio tutto ok, il problema si verifica dopo un po'..

Ho collegato due pulsanti alla scheda di arduino, e due relativi led al modulo MCP, inizialmente tutto procede secondo il codice, ad esempio pulsante 1 accende led 1, pulsante 2 accende led 2 ecc ecc..
dopo qualche secondo sembra che il sistema si blocchi, ovvero qualche led rimane sempre acceso o spento e non risponde più al comando.

Non credo sia un problema di codice perché testato tutto su scheda arduino senza l'MCP funziona tutto alla perfezione, i problemi sorgono quando collego i led all'MCP.

I collegamenti credo siano corretti, ho seguito i numerosi schemi che si trovano..
qualcuno ha avuto problemi simili con questo integrato? come potrei risolvere?

grazie mille!

Almax

Hai messo i pull-up?

si pullup impostati da codice..

pinMode(1, INPUT_PULLUP); //
pinMode(2, INPUT_PULLUP); //

ricordo che i pulsanti sono collegati ad arduino mentre i led all'MCP

la resistenza interna la devo attivare ad arduino essendo collegati li i pulsanti giusto?

grazie infinite..

Intendevo i pull-up su SDA e SCL, quelli del bus i2c.

>almax85: Nonostante è un po' che tu sei qui sul forum, NON riesco a trovare il tuo post di presentazione :confused: , per cui ...

... nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

SukkoPera i pull-up intendi le resistenze da 4,7k tra SDA SCL e pin reset dell'MCP?
quello non l'ho fatto perché adesso non possiedo tali resistenze, però ho collegato il pin reset al +5v attraverso una resistenza da 10k come da schema..

almax85:
SukkoPera i pull-up intendi le resistenze da 4,7k tra SDA SCL e pin reset dell'MCP?

NO, intende le resistenze da 4.7K tra SCL ed SDA e il +Vcc che sono obbligatorie per il funzionamento del bus I2C (... è un open-drain, equivalente del open-collector nei BJT).

Tutorial sul bus I2c QUI e QUI.

Guglielmo

perfetto, grazie mille..

scusate ma per caso è possibile attivarle internamente o è necessario farlo fisicamente?
nel caso2 i valori devono essere obbligatoriamente 4,7k?

Devi metterle esternamente ... il loro valore è funzione della lunghezza e capacità dei cavi, 4.7K è un valore medio che normalmente va ... puoi magari scendere a 3.3K o salire a 6.8K ... a seconda di ciò che hai a disposizione.

Guglielmo

Se hai delle 10k puoi comunque provarle o, al limite, metterne 2 in parallelo, così diventano 5k.

Ho seguito i vostri consigli, in particolare quello di sukko con il parallelo delle 10k andando così a 5k. Purtroppo però il problema si ripresenta :sob:

Nel codice devo inserire qualcosa riguardo al pull up di sda scl?

grazie ancora

Nel codice devo inserire qualcosa riguardo al pull up di sda scl?

No, basta collegare delle resistenze tra i pin SDA / SCL e il Vcc

Ma i cavetti di collegamento quanto sono lunghi ?

saranno circa 15cm.. 15cm da sda scl a resistenza e altri 15 da resistenza a vcc.

Non vi ho detto che quando carico il codice nella scheda esce questo messaggio in arancio: Cartella spuria .github nella libreria 'Adafruit MCP23017 Arduino Library'

non se incide

grazie!

Uhm, ma come le hai messe queste resistenze? Fai una foto.

adesso l'expander addirittura sembra non dare più segni di vita.. non accende i led, spero di non aver bruciato l'integrato o ancor peggio i pin SDA SCL :frowning:

le resistenze sono collegate in parallelo, due e due da 10k. il pin sda va ai due capi delle due resistenze così come il pin scl, e anche ai corrispettivi scl sda dell expander pin 12 e 13. alle altre due estremità delle resistenze in parallelo vado al +vcc, tutto montato su breadboard. adesso non posso farvi foto perché nel frattempo ho smontato tutto riprovo più tardi.

non capisco perché nelle ultime prove fatte l'expander sembra non reagire proprio

grazie

Ti è già stato chiesto ...

  1. Fai una foto al circuito

  2. Metti lo schema esatto che stai usando (va bene anche un dosegno leggibile fatto a mano)

Guglielmo

OK, ma ci vogliono 2 resistenze separate: una tra SDA e Vcc, e una tra SCL e Vcc.

Mettendone due da 10k in parallelo, ce ne vogliono ovviamente 4.

Esattamente, 4 resistenze..

questo è lo schema, scusate ma prima ero impossibilitato, spero sia chiaro come ho collegato

ancora grazie

Su che indirizzo I2C lo stai cercando? Hai fatto girare lo scanner I2C per vedere se viene rilevato ?

Guglielmo

No Gugli, sinceramente questa operazione non la consideravo, scusa l'ignoranza.. Io ho semplicemente caricato le librerie, assegnato il nome al expander e fatto collegamenti, non ho cercato nessun indirizzo I2C e tanto meno fatto scansioni.
Potresti delucidarmi in merito? te ne sarei grato..

grazie