Vai al contenuto
PLC Forum


PIC16F628: reset indesiderati


bit

Messaggi consigliati

Salve a tutti.

Mi si è manifestato un problema su una scheda con un micro PIC16F628. Nel caso specifico la scheda è un timer per bromobrafo, del tutto simile ai progettini che si trovano in rete per questa applicazione.

La scheda pilota l'accensione di alcuni tubi al neon, ma alla chiusura del relè che comanda i tubi, a volte il micro si resetta e il programma riparte da zero.

Stesso inconveniente si manifesta se vicino alla scheda accendo e spengo un carico induttivo, tipo un motore elettrico (la pompa a vuoto del bromografo, comandata da un normale interruttore).

Volendo capire di più sulla causa del reset, ho inserito nel programma alcune istruzioni di test, come specificato anche nel datasheet del micro, testando i bit POR e BOD del registro PCON.

In pratica a inizio programma prelevo questi due bit e li visualizzo sul display della scheda. In seguito li setto a 1 per permettere di monitorare eventuali altri reset (i bit sono attivi bassi).

Quando accendo il circuito la prima volta, i bit sono entrambi a zero, come deve essere (il bit POR a zero segnala il reset iniziale, il bit BOD è indeterminato).

Se tolgo e rimetto velocemente alimentazione alla scheda trovo il bit POR a 1 e il bit BOR a zero (mi viene segnalato un brown out detect, dovuto al momentaneo calo della tensione di alimentazione, il POR non si attiva e resta a 1). e anche questo è giusto.

Se simulo il distrubo, accendendo le lampade o un altro carico, dopo il reset trovo entrambi i bit POR e BOD a 1, condizione verificabile solo dopo un reset da WDT o da MCLR. Purtroppo però queste due ultime condizioni di reset non sono nel mio caso abilitate (il WDT non è selezionato e il pin MCLR è usato come normale ingresso/uscita) dalla config word.

Preciso che sono sicuro che è avvenuto il reset del micro poichè la visualizzazione del valore dei bit POR e BOD è presente solo a inizio programma e non viene più ripetuta. Il programma principale utilizza il display per altre visualizzazioni, facilmente distinguibili.

Come posso trovare la causa del reset?

Quali misure o testo possono essere utili per capire il problema?

Se non sono stato preciso provvederò a darvi tutte le ulteriori informazioni che mi chiederete per aiutarmi a risolvere il problema.

Grazie e ciao a tutti!

Link al commento
Condividi su altri siti


Il problema è chiarissimo e noto, meno il modo per emendarlo.

E' solare che il reset è causato dai disturbi genearati dalle variazionidic arico sulla rete (lampade o carico induttivo). BIsogna però stabilire da dave entrano i disturbi. Questi possono essere condotti o irradiati o entrambi i modi.

Se sono condotti possono entrare o dall'alimentazione, o dai collegamenti ai carichi esterni, o dalle masse, oppure da una combinazione di tuttq queste vie.

Non sapendo come è configurato il layout del sistema non so dirti se ci sono errori macroscopici.

Io partirei dall'alimentazione e dal giro di masse. Metti dei filtri L-C prima del regolatore a 5V e dopo il regolatore praticamente all'ingresso della scheda.

Link al commento
Condividi su altri siti

Uhmm.. si, mi torna. Il regolatore è montato direttamente sulla scheda, come il trasformatore, il ponte e i condensatori di livello. La tensione di 5 V alimenta solo il PIC e il display a led. Tutto il circuito è isolato da terra (forse la massa andrebbe collegata a terra?) dal trasformatore di alimentazione. L'alimentatore è composto da trasformatore 12 V 3 VA, ponte raddrizzatore, elettrolitico da 1000 uF, stabilizzatore L7805 con i 2 condensatori poliestere 100 nF in ingresso e in uscita, elettorlitico da 47 uF e poliestere da 100 nF in prossimità dei pin di alimentazione degli integrati. Tutto il percorso di alimentazione non è più lungo di 5-6 cm.

Mi lascia in dubbio un calo di tensione all'accensione delle lampade, la tensione all'ingresso del regolatore è abbondantemente sovradimensionata (ho 13-14 V per ottenere 5 V in uscita) e mi sembrerebbe strano che potesse scendere fuori range per il PIC.

Inoltre tale causa dovrebbe essermi segnalata dall'attivazione del bit BOD (Brown out detect) del PIC e ciò non avviene.

Ritengo più probabile il distrubo captato da qualche pista, ma che tipo di reset avviene all'interno del PIC? Il registro PCON segnala un reset da MCLR o da WDT, entrambi disabilitati....

Link al commento
Condividi su altri siti

Non è un calo di tensione (tra l'altro 13v-14v per ottenerne 5 sembra esagerata), sembra dovuto a spikes. Per questo che i soli condensatori non bastano. E' indispensabile mettere un induttore di filtro prima del regolatore.

Prova a convertire il dwg in PDF (quasi tutti i CAD supportano la conversione) e magari si può avere un'idea su eventuali problemi di layout

Link al commento
Condividi su altri siti

Grazie della disponibilità!

Sono d'accordo che 13-14 V per ottenerne 5 sono anche troppi, ma mi permettevano di utilizzare un trasformatore standard da 12 V. Comunque la corrente assorbita dal circuito non è molta e lo stabilizzatore non dissipa troppo.

Eventuali spike che riuscissero a superare i condensatori di livello e il regolatore non creerebbero un buco di tensione sul microprocessore? E in tal caso non mi dovrebbe essere segnalato un reset da Brown out?

Per il layout sono riuscito a effettuare la conversione in pdf, ma i file sono troppo grossi (circa 800 k l'uno) per essere accettati come allegato nella risposta...

Ho preparato anche i formati jpg e bmp, ma non mi vengono accettati...

Link al commento
Condividi su altri siti

Per esperienza diretta sono convinto che non agiscono sul reset tramite "buco", ma la cosa capita in maniera diversa. In pratica il programma va per ranocchie e, dopo qualche ms, ripassa dal reset.

Per i disegni in .pdf, prova azipparli ed a mettere su qualche servizio host gratuito, poi alleghi il link al tuo messaggio

Link al commento
Condividi su altri siti

Quindi non sembrerebbe un reset compreso tra quelli contemplati dal pic stesso, ma solamente uno scavallamento di programma... in pratica il pic capita in una locazione di memoria vuota oltre la fine del programma e esegue istruzioni senza senso fino a quando il program counter lo riporta alla locazione 000 reiniziando il programma. Di fatto è un reset poichè si incontrano le istruzioni di iniziazione del programma.

Ho caricato i file in pdf del disegno della scheda lato componenti e lato saldature. Non ho ancora lo schema pronto (magari lo preparo) ma si dovrebbe seguire lo stesso. Il pic è l'integrato a 18 pin, l'altro è la decodifica per i display, pilotati in multiplexing.

http://xoomer.alice.it/bit79/files/timer%20saldature.PDF

http://xoomer.alice.it/bit79/files/timer%20componenti.PDF

Grazie ancora della disponibilità!!!

Link al commento
Condividi su altri siti

Ciao ,

forse non e´il tuo caso , ma a me ha dato non pochi problemi il Low voltage programming.

Prova a vedere se nei tuoi fuse lo hai abilitato.

io avevo lo stesso problema di reset casuali , appena disabilitata questa opzione e´parito il problema.

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...