Livio Orsini Inserita: 2 agosto 2015 Segnala Share Inserita: 2 agosto 2015 Non certo quella dei politici. Significa che, se, ad esempio, avevi programamto le porte come uscite durante l'inizializzazione generale e poi non riesci a leggerle, si è corrotta la programmazione della porta o per disturbi entrati direttamente nello MCP o attraverso la liea I2C. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 2 agosto 2015 Autore Segnala Share Inserita: 2 agosto 2015 quella dei politici non è corruzione ma normale amministrazione e comportamento lecito . Si è quello che succede che ti dicevo .Puo' essere che togliendo e ridando alimentazione si resetta e nonostante il transistor , il condensatore e la resistenza , succede qualcosa ;in teoria il reset dovrebbe influire sullo stato delle uscite e non sul loro settaggio Va be comunque devo lavorare sulla tesi e va benissimo anche cosi , altrimenti rischio di star qua tutto il giorno a caricare programmi e perdere tempo Poi al limite si potrebbe progettare una bella shield di ingressi ed uscite e farla fare come si deve .E' chiaro che tutti i fili , lo stagno , le piste vicine ci sian qualche cosa poco chiaro Link al commento Condividi su altri siti More sharing options...
Wolfy Inserita: 2 agosto 2015 Segnala Share Inserita: 2 agosto 2015 Filtra e scherma bene quegli step down, probabilmente parte dello "schifo" che corrompe i settaggi viene da loro! Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 2 agosto 2015 Autore Segnala Share Inserita: 2 agosto 2015 si in effetti èensavo anche io ai DC-Dc converter ma ormai lo spazio slle schedine .... Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 3 agosto 2015 Autore Segnala Share Inserita: 3 agosto 2015 mi fa ancora lo stesso scherzo , tutto ieri sera l'ha fatto , oggi invece dopo averlo programmato non lo fa piu . Non capisco ....ma credo che ci sia qualcosa nei fili e collegamenti , non ho altre idee Link al commento Condividi su altri siti More sharing options...
Wolfy Inserita: 4 agosto 2015 Segnala Share Inserita: 4 agosto 2015 (modificato) Posso suggerire di controllare le masse? Dalla foto mi pare che tu stia usando la schedina che distribuisce le alimentazioni come "centro-stella" delle masse, prova a rivedere il circuito d' alimentazione, ricordati che quei DC-DC hanno la massa, per così dire, passante, quindi non serve collegarla in uscita, fossi in te cercherei di rendere tutti i collegamenti di alimentazione il più corti possibile usando come centro di massa (sto ripetendo troppo sta parola) lo shield di arduino che hai sopra il due Modificato: 4 agosto 2015 da Wolfy Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 4 agosto 2015 Segnala Share Inserita: 4 agosto 2015 Parlo per esperienza. Devi disaccoppiare il +5V dello MCP tramite un filtri LC; metti un induttore di filtro da circa 220 µHy inn srie al +5V direttamente sul punto d'ingresso della scheda, a valle dell'induttore ci metti un elettrolitico da 22µF al tantalio. Poi bisogna vedere se non ci sono rientri dai vari cablaggi. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 4 agosto 2015 Autore Segnala Share Inserita: 4 agosto 2015 si in effetti le varie schede le ho cablate di corsa , ci possono essere anche dei micro c.c. Livio , la tensione dle MCP la prendo tra l'induttore e il condensatore giusto ? Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 5 agosto 2015 Autore Segnala Share Inserita: 5 agosto 2015 (modificato) dunque, ho mesos in piedi il protocollo di comunicazione WProtocol tra Android e il WShield-Arduino Due Finalmente sono risucito a stabilire una connessione Bluetooth stabile lavorando su diversi threads in multitasking lato android .Lato Arduino lavoro in seriale a 115200baud Android , pur programmandolo in java, è un sistema molto delicato , ci sono motle cose da sapere e capire bene Ovviamente non bado all'estetica grafica , ma punto sulla funzionalità Nel video consigliato , per quanto si possa vedere , stabilisco la connessione con il dispositivo BT , poi entro nella pagina con 4 pusanti on-off per accendere direttamente 4 rele' che chiamo luci per dare un senso pratico I comandi impostano i bit di un vettore che risiede in arduino i quali vengono copiati sui bytes out del dispositivo I2C A breve altre pagine tra cui la pagina delle visualizzazioni dei dati ambientali e una pagina per impsotare tramite pulsanti alcune funzionalità tipo controllo automatico delle luci tramite sensore luce , chiusura tapparelle tramite sensore pioggia , avviamento irrigazione tramite crepuscolare e ora ect ect , ma queste solo logichette che si possono sempre fare piu avanti L'importante è costruire l'architettura e la struttura dei due progetti , programmazione ad oggetti e C/C++ Modificato: 5 agosto 2015 da walterword Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 5 agosto 2015 Autore Segnala Share Inserita: 5 agosto 2015 comunque in settimana sostituisco le due schede rele' con due schedine a led , giusto per finire il progetto di tesi Per i rele' si tratta di gestire la cosa professionalmente con filtri ect che ora non posso proprio inserire per via dei tempi e i relativi costi di modifica Livio , metto due schedine pizza micro output collegate al MCP senza inverter e fine del discorso , sperando che non mi faccia piu lo stesso scherzo .... Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 5 agosto 2015 Segnala Share Inserita: 5 agosto 2015 in teoria il reset dovrebbe influire sullo stato delle uscite e non sul loro settaggio Il reset agisce sul settaggio delle porte, dopo il reset tutte le porte sono settate come ingressi! E' per questo che se togli l'alimentazione all'MCP e poi la riattacchi ti ritrovi le uscite in alta impedenza. Mi sono arrivati gli integrati e domani posso iniziare ad utilizzarli. Ciao. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 E' per questo che se togli l'alimentazione all'MCP e poi la riattacchi ti ritrovi le uscite in alta impedenza. Anche senza togliere tensione si entra in questa configurazione, basta un disturbo sufficientemente potente sulla linea di reset, o sulla stessa alimentazione, per portare lo MCP in configurazione default. Questa è la ragione per cui i dispistivi I2C son comodi come espansori di I/O ma vanno trattati con le dovute precauzioni EMC. Io, quando son costretto ad espansioni per il campo, preferisco usare circuitazioni simili a quelle dei PLC che hanno un bus seriale piuttosto robusto. non sto parlando di busa di campo, ma proprio del busa che collega le esapnsioni di I/O alla CPU. Link al commento Condividi su altri siti More sharing options...
Wolfy Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 Ma hai per caso lasciato il pin di reset flottante? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 No, se ricordo bene c'è un gruppo RC. Però quando fai gli assiemaggi volanti con variesche prototipo e schede su millefori, se cisono relè che commutano è facile che ci siano accoppiamenti sui cablaggi di spikes di discreta energia. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 agosto 2015 Autore Segnala Share Inserita: 6 agosto 2015 sto cablando una scheda con 16 led e lo schigoso MCP23017 Ho gia tolto le due schede rele' ma il problema rimane . Guardando l'uscita seriale che di solito scrive ogni 300mS , noto dei cambiamenti di frequenza trasmissiva Sto verificando uno per uno che i dispositivi I2C funzionino correttamente perche se uno solo di questi e' in rogna mi impesta e rallenta tutto il programma Sembrerebbe che ci sia qualcosa sulla linea I2C che non va bene Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 Prova ad abbassare la velocità di trasmissione I2C, meglio partire lenti e salire. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 agosto 2015 Autore Segnala Share Inserita: 6 agosto 2015 credo sia gia su 100k Ma poi per evitare overload ho impostato le varie letture a tempo , per esempio i sensori di temperatura, pressione e umidità li leggo alternativamente ogni5-10 sec , non serve leggerli ad ogni ciclo programma ... Sto diventando scemo e sto perdendo un sacco di tempo Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 Innanzitutto complimenti per il gran lavoro e per aver condiviso scelte e soluzioni. Vedo che anche tu sei dovuto "uscire dal micro" ormai vale più la app android che tutto il lavoro su micro/arduino e schede varie. Quanto all'I2C, non ho capito bene il problema (mi sembra tu stia ipotizzano qualcosa nella comunicazione). Ti lascio alcuni spunti anche se probabilmente sono strade già esplorate Il driver sw per la porta I2C ha una gestione dell'errore? Cosa succede se qualcosa va storto ? Fronti dei segnali sono dritti o delle banane arrotondate? Io scenderei di molto rispetto i 100K così i fronti son sicuri Se il problema è sporadico io innescherei un "bombardamento" con comunicazione continua su I2C per aumentare la frequenza di ripetizione. Controllerei anche il sw a volte scappa un aggiornamento del buffer del driver I2C mentre non ha ancora terminato la scrittura del buffer precedente e così ti ritrovi a mandare un "messaggio misto" Non ho letto la documentazione del microchip ma se è possibile leggere lo stato delle uscite io per sicurezza realizzaerei la procedura di scrittura in due step scrittura e lettura dello stato delle uscite per controllare se tutto è andato a buon fine. Se va sempre storta dopo due tre volte dai un reset al driver d'uscita. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 Quanto all'I2C, non ho capito bene il problema (mi sembra tu stia ipotizzano qualcosa nella comunicazione). Accacca c'è un primo problema dovuto all'espansore MCP. Quando viene resettato, o per alimentazione iniziale, o per apposito segnale sul pin di reset, l'integrato si autoconfigura nella configurazione di default, ovvero con tutte le porte in configurazione ingresso ad alta inpedenza. Questa configurazione può portare ad avere gli attuatori in condizione non sicura. Ci sono alcuni modi per risplvere il problema all'inizializzazione. La cosa peggiore capita invece quando per disturbi l'espansore viene resettato. Walter ha già messo una pezza scrivendo sempre il comando di configurazione prima della scrittura. poi, fatalmente, bisognerà agire sull'immunità ECM della scheda, però essendo il suo lavoro di tesi per il momento può anche soprassedere. Ora sembra che ci sia un ulteriore problema. Durante la trasmissione-ricezione sembrerebbe che sul bus I2C ci siano delle anomalie. Walter io qualche mese fa ti ho segnaltao un sftware "sniffer" per I2C, te lo ricordo ancora; prova a farlo girare se ci sono errori sulle periferiche te lo segnala sicuramente. Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 Ho provato l'MCP23017 con Arduino Uno, con una uscita collegata al reset. Faccio lampeggiare dei led collegati alla porta A e naturalmente funziona. Confermo che al reset si comporta come ha detto Livio sopra. Per accacca: si possono leggere sia le uscite che il latch associato ed anche i registri di controllo di direzione, se li azzero (porta programmata come uscita) e poi li ritrovo a 0xff vuol dire che il chip si è resettato. Ciao. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 (modificato) Da questo punto di vista è meglio il PCF, dove le porte sono uscite di default e per leggere gli ingressi bisonga prima scrivere tutti "1" Modificato: 6 agosto 2015 da Livio Orsini Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 agosto 2015 Autore Segnala Share Inserita: 6 agosto 2015 tempo fa avevo ipotizzato i PCF , ma anche loro se togli e ridai l'alimentazione vanno in tilt , se ti ricordi Livio ....e da questo avvo deciso per i MCP Nel bus I2C ho anche un traslatore di livello apposito 3V3 <-> 5V . Alcuni dispositivi come RTC , barometro sono nel bus 3V3 mentre altri come MCP sono nel bus 5V si vede bene nel disegno di progetto ..... Devo cercare lo sniffer se lo trovo ..... Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 agosto 2015 Autore Segnala Share Inserita: 6 agosto 2015 ho terminato in questo momento la scheda 16 led con MCp23017 e l'ho inserita al primo colpo non funzionava nulla cosi ho riprogrammato l'arduino ed ora funziona tutto che e' una meraviglia , leggo il barometro , gli ingressi , scrivo sulle uscite ....la seriale come si vede dal les e' veloce Ognitanto se si impalla stacco e riattacco l'alimentazione dello switch principale e qualche volta sembra ripartire correttamente .Adesso lo faccio andare senza toccarlo ....tuca nient ....per vedere cosa fa. Ognitanto a livello di distribuzione enel noto dei cali di tensione , la lampadina si attenua leggermente per 1-2 secondi e poi ritorna a luccicare , questo problema lo hanno diverse persone in questa zona ... Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 6 agosto 2015 Segnala Share Inserita: 6 agosto 2015 void writeOutput(byte dato) { if(readInput(0) == 0xff) configIO(); // se la porta A è programmata come ingresso la riprogrammo. Wire.beginTransmission(device); // seleziono il dispositivo MCP20317 Wire.write(0x12); // seleziono il suo registo GPIOA Wire.write(dato); // scrivo il primo byte sulla porta A Wire.endTransmission(); } Facendo in questo modo il mio circuito riparte correttamente dopo aver tolto e rimesso l'alimentazione del chip.Il reset è collegato ad una resistenza di pull-up. Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 6 agosto 2015 Autore Segnala Share Inserita: 6 agosto 2015 io ho collegato nella nuova scheda a led il reset direttamente ai 5V I oconsidero di default , in base al datasheet del MCP , che in condizioni normali le porte sono settate come ingressi , comunque ora ottimizzo la cosa come hai fatto tu, cioe oltre a settare come uscite le porte del chip 2 faccio che setto sempre come ingressi le porte del chip 2 , ho due chip ....16 ingressi e 16 uscite ...ora sembra funzionare a tutta birra , da piu di un ora ....mah Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora