Progettazione di circuiti con una durata maggiore


11

Ho imparato a conoscere il microcontrollore pic per un periodo di tempo e ho una ragionevole quantità di conoscenze sulla gestione dell'elettronica digitale. Ho lavorato su progetti elettronici di base e ora ho bisogno di lavorare su alcune applicazioni commerciali.

La mia domanda è su come progettare e costruire circuiti affidabili e di lunga durata. Ho creato un circuito di controllo della luce automatico che riceve l'ingresso da un LDR e visualizza il valore della lettura analogica su un pannello a sette segmenti. Quindi esegue alcuni calcoli e controlla una luce attraverso un relè. Questo circuito deve essere acceso permanentemente (24 ore al giorno). I primi mesi il circuito ha funzionato perfettamente, ma dopo circa 6 mesi ha iniziato a funzionare male. Ha mostrato cose insensate sul display a 7 segmenti (ha mostrato solo parti di numeri), quindi accende la lampadina sul LED indicatore ma non sta accendendo il relè. Questo non è il comportamento previsto. Il fatto è che non funzionerà sempre in questo modo. A volte funziona perfettamente. Quindi ricomincia a funzionare male. Non esiste un ordine esatto in cui funziona.

Ora la mia domanda è: perché questi circuiti si comportano in questo modo? Suppongo che ciò avvenga perché funziona tutto il giorno senza intervalli. Questo tipo di applicazione deve funzionare tutto il giorno. Uso PIC perché conosco solo foto. Atmal è più affidabile di Pic? (Ho chiesto perché atmal è utilizzato nella maggior parte delle applicazioni di automazione, più frequentemente di quanto si usi nella foto) Ho bisogno di un consiglio da un esperto di elettronica digitale. Come viene costruito questo tipo di applicazioni industriali? Ci sono delle regole speciali da seguire? Come progettare circuiti più affidabili? Qualsiasi consiglio o guida da parte di un esperto sarà molto apprezzato. Grazie...

MODIFICARE

Come suggerito nelle risposte, modificherò la mia risposta fornendo risorse aggiuntive per aiutare a capire i bug nella progettazione.

Di seguito un'immagine che descrive l'aspetto del circuito dopo la sua creazione. È un trasformatore con attacco centrale da 12 V che fornisce energia al circuito, che viene rettificato utilizzando un raddrizzatore a semionda, quindi regolato utilizzando un IC 7805.

inserisci qui la descrizione dell'immagine

Di seguito è riportato il disegno schematico.

inserisci qui la descrizione dell'immagine

Se sono necessarie ulteriori informazioni, fornirò tutto il necessario. Se è necessario il programma, lo aggiungerò. Il programma è piuttosto lungo e utilizza gli interrupt.


6
Se si utilizza un circuito integrato con le specifiche indicate (vedere la scheda tecnica), quasi tutti i produttori garantiscono una durata di 10 anni. E questo è ad alta temperatura. Puoi incolpare i componenti, ma penso che il problema sia che nel tuo progetto sta succedendo qualcosa di inaspettato. O forse uno dei chip ha sofferto di una scarica ESD e sta emergendo solo ora. È necessario trovare il componente difettoso prima di poter dare un avviso utile.
Bimpelrekkie,

2
Oltre a quanto affermato da FakeMoustache, dubito che il PIC sia la fonte del fallimento. Molto probabilmente si tratta di componenti discreti o relativi alla progettazione del circuito.
DigitalNinja,

1
Ho PIC che lavorano sempre in molti luoghi difficili. Senza problemi. L'unico problema che ho avuto è stata la corrosione nelle spine e un condensatore TFT elettrico forzato fisicamente con un perno rotto.
Szidor,

1
E a proposito immagino che intendi Atmel invece di "atmal". Inoltre, PIC è un microC di MicroChip (MicroChip li rende). Atmel è anche un produttore di microC, che producono i microControllori Atmega. Entrambi sono semplicemente circuiti integrati digitali realizzati in processi di produzione simili e con un'affidabilità simile. Se uno fosse più o meno affidabile dell'altro, nessuno li comprerebbe (ad un prezzo simile a quello che sono).
Bimpelrekkie,

3
Devi pubblicare uno schema, e idealmente una foto del sistema problematico. Dubito anche che i tuoi problemi siano "l'aspettativa di vita", ma piuttosto manca qualcosa di veramente basilare, come la pulizia dell'alimentatore o l'IME.
Techydude,

Risposte:


17

Prima di iniziare a pensare al passaggio, assicurati di avere un buon design solido. Devi iniziare a pensare a tutti i modi in cui potresti avere problemi nella progettazione. Un buon modo per farlo è quello di smettere di pensare a un microprocessore come a una "scatola magica" in cui si inserisce il codice e fa quello che gli si dice e si inizia a pensare a come funziona, a livello di gate e di sistema. Devi rendere felice il tuo microprocessore.

  1. Alimentazione: se l'alimentazione dei microprocessori non è pulita, non funzionerà correttamente. Ciò significa esaminare il design del PCB e assicurarsi di avere un buon percorso di bassa induttanza dall'alimentatore e assicurarsi di avere adeguati tappi di alimentazione vicino al chip. Monitora e misura la potenza su un design che non funziona con un oscilloscopio e un voltmetro, è la potenza? Vedi il problema accadere quando c'è un picco o un calo nel potere? Vedi picchi o avvallamenti sulla tua linea Vcc?
  2. Code \ Clock: c'è un errore nel codice che non lo fa funzionare correttamente? Hai guardato il codice in un'unità intermittente? Verifica (abbina) il codice che hai ora? Stai riscontrando un degrado del flash? E l'orologio? Il potere può effettivamente degradare l'orologio nel tempo . Il tuo orologio è quello che deve essere? Se rallenti l'orologio, il codice smette di funzionare?
  3. Protezione ambientale. Stai utilizzando il microprocessore nelle specifiche per cui è stato progettato? La temperatura è costante nelle unità che falliscono? Sono in una zona con fattori ambientali come polvere, EMI, ESD o temperatura che potrebbero causarne il fallimento. I tuoi input sono protetti verso il mondo esterno, le persone potrebbero zapping sull'unità? Il calore farà cose dannose per l'elettronica nel tempo. Ottieni una termocamera per vedere se tutto è normale

Quello che devi veramente fare è trovare il meccanismo di fallimento, devi sapere perché sta fallendo. Una volta che sai perché non riesce, puoi risolvere il problema. Se non riesci a trovarlo, dovrai rendere invincibile il tuo progetto per evitare che si verifichino problemi. Altrimenti potresti cambiare microprocessore e avere ancora gli stessi problemi. Se si desidera cambiare, ST produce alcuni microprocessori più adatti alle applicazioni industriali.


2
Aggiungi radiazioni all'elenco dei fattori ambientali. Le radiazioni ionizzanti della maggior parte dei tipi (atomiche, fotoniche, ecc.) Possono causare elettronica a SEU o sconvolgimenti a singolo evento che si traducono in un effetto confuso.
rdtsc,

Come hai suggerito, ho aggiornato la mia risposta aggiungendo risorse aggiuntive. il disegno schematico e un'immagine se il circuito. per favore, puoi capire eventuali bug nel design.
Tessitore daniale,

Molte grazie. Ho avuto un'idea e una maggiore conoscenza sulla progettazione di circuiti più affidabili. Devo imparare di più prima di iniziare a costruire applicatuons commerciali. Molte grazie. Accettato come risposta.
Tessitore daniale,

Immagino che la radiazione non sia un fattore, ma se stai gestendo queste cose vicino a una centrale nucleare o un'altra fonte di radiazione (o nello spazio, diventa un problema serio con un MCU commerciale che ha alcuni SEU a settimana, anche Rad i processori duri avranno SEU). Un MCU normale potrebbe avere una SEU ma penso che sarebbe nell'ordine degli anni per la probabilità di ciò in un ambiente normale.
Voltage Spike,

@danial weaber un 7805 non fermerà un calo di potenza con i tappi che hai. Supponiamo che l'assorbimento di corrente dal 5 V reg sia 100 mA massimo (è possibile eseguire questi calcoli se si misura la corrente massima effettiva), che sarebbe come un carico di 50 Ohm. Il tuo limite è 10uf quindi tau = RC -> tau = 50 * 10uf = 0,5msec. Questo è approssimativamente il tempo necessario per avere un problema. Potresti voler comprare una "verruca" cinese a buon mercato per pochi dollari che possono tollerare un po 'di caduta dalla rete CA. Oppure potresti usare un convertitore da CC a CC che potrebbe essere più tollerante. Che aspetto ha la tua messa a terra sul PCB?
Voltage Spike,

7

Dal momento che non dici, mi chiedo come sia fisicamente costruito il circuito travagliato - dal momento che sembra ESATTAMENTE il tipo di problema che si vede in genere quando qualcuno che non salda costruisce un circuito su una breadboard temporanea "push to connect" e lascia per qualche mese.

Se questo ricorda il tuo caso, c'è il tuo problema; in caso contrario, sospetterei ancora connessioni scadenti, ma diventa un problema di "abilità nella saldatura" più che un problema di "mancata saldatura di qualcosa".


3
Aggiungere a questa tecnica di saldatura impropria può produrre giunti con scarsa resistenza meccanica e altri problemi che causano il fallimento del giunto dopo un periodo di tempo molto più breve.
crasico

Molte grazie. Ho aggiornato la mia risposta e se riesci a capire qualsiasi bug nel design sarebbe molto grato.
Tessitore daniale,

Le saldature sembrano buone, nessun effetto si vede nella saldatura. Può essere un problema relativo al programma. Ma poi come funziona bene alla volta
tessitore daniale

... fornire una foto del lato di saldatura? Per quanto riguarda i problemi di programmazione che a volte funzionano, a volte no, sono state già menzionate varie opzioni nei commenti sulla domanda. E c'è il socket in cui si trova l'IC come un potenziale punto di guasto senza saldatura (tra il socket e i pin IC.) I socket sono talvolta una buona idea, ma possono causare problemi. Se i problemi migliorano per un po 'se si rimuove e si sostituisce l'IC, ciò potrebbe far parte del problema. ... inoltre, i condensatori del filtro di alimentazione sembrano un po 'piccoli: tutti 33 pF tra il ponte e l'ingresso del regolatore? Veramente?
Ecnerwal,

5

Non hai un condensatore di disaccoppiamento sull'alimentazione PIC, ma su una piccola scheda come questa probabilmente te la caverai. È inoltre possibile aggiungere una protezione brown-out in modo che il PIC venga ripristinato se la tensione scende al di sotto di una soglia.

Ma guarderei il tuo codice.

Per cominciare, dovresti avere il watchdog abilitato sul micro. Se il codice smette di funzionare correttamente, il watchdog lo riavvierà.

Molto probabilmente, hai un bug da qualche parte. Come ingegnere del software embedded di professione, immagino che sia legato agli interrupt, perché è lì che i principianti spesso commettono errori. Tuttavia, come un principiante, c'è un enorme insieme di errori che puoi commettere nel codice, quindi è solo il primo posto che vorrei cercare. (Non offenderti: ho commesso molti di quegli errori, anche quando avrei dovuto saperlo meglio ;-)


+1 grazie mille. Ora capisco di aver fatto degli errori. Devo imparare molto di più prima di iniziare a creare applicazioni commerciali.
Tessitore daniale,

3

Concordo con i commenti sul fatto che è necessario un buon condensatore di grasso su entrambi i lati del 7805. Soprattutto con un relè lì. Mi aspetto che questo sia il problema principale. Aggiungerei un condensatore di disaccoppiamento anche attraverso le linee di alimentazione del PIC.

Vorrei anche cercare articolazioni asciutte.

Vorrei anche controllare attentamente il mio programma e utilizzare qualsiasi struttura di watchdog.

Ma ecco un paio di parti interessanti della tua domanda:

Mostrava cose insensate sul display a 7 segmenti (mostrava solo parti di numeri)

Proverei a capire cosa è successo. Il PIC si è bloccato per esempio?

Ora, se ho letto correttamente il tuo schema, quindi affinché ciascuno dei 7 display a segmenti mostri qualcosa e qualcosa di diverso e costante su almeno due di essi, allora ognuno di Q1, Q2 e Q3 deve essere ancora girato in sequenza, e le uscite ai segmenti devono essere state corrette. Questo mi direbbe che il tuo PIC sta ancora eseguendo almeno parte del suo codice, ma in qualche modo l'output delle cifre è stato criptato. Ad esempio, forse non è stata data una cifra da 0 a 9 da visualizzare, ma una cifra 17 o simile (per la quale ottiene il layout delle cifre da una posizione di memoria casuale).

Tu dici:

accende la lampadina sul LED indicatore ma non sta accendendo il relè

Guardando lo schema, quindi a meno che l'uscita PIC non sia pulsante o qualcosa del genere (non impossibile poiché si tratta anche di una porta di uscita del timer), questo dovrebbe essere un guasto elettrico (ad es. Giunto a secco), un problema dell'alimentatore (vedere sopra i condensatori) oppure il transistor Q4 non è (forse) completamente saturo. Non ho letto la scheda tecnica PIC, ma un BC547 ha un I C massimo di 100 mA (si spera che sia sufficiente per pilotare il relè e il LED) e un hFE di 120 a quel tipo di livello, quindi avrai bisogno di circa 1mA in. 10k potrebbe quindi essere un po 'troppo. Potrei provare 3k3.

Inoltre, non hai mezzi utili per il debug. Poiché il display è sempre acceso, forse potresti far lampeggiare il punto del punto decimale una volta al secondo (o simile) per indicare che tutto va bene.

Se dovessi fare una pugnalata selvaggia nel buio, immagino che in particolare quando il relè è acceso, il circuito sta assorbendo una corrente significativa. A causa della mancanza di un grande condensatore sul lato di ingresso del 7805, quando la tensione CA attraversa lo zero, il 7805 non fornirà alcuna corrente di uscita (e potrebbe effettivamente scaricare il condensatore stesso) - dalla scheda tecnica del 7805 ' la tensione di ingresso deve rimanere in genere 2,0 V al di sopra della tensione di uscita anche durante il punto basso della tensione di ondulazione di ingresso ' . La tensione sul PIC verrà quindi ridotta, forse abbastanza per arrestarlo. Metti un ambito della linea 5V vicino al PIC e se non vedi altro che una bella linea solida 5V, sai di avere un problema.


+1 grazie mille. Questa risposta mi ha dato una buona idea su come progettare il circuito e alcuni errori che ho fatto. Controllo male addind i capasitors e dire i risultati.
Tessitore daniale,

3

Ogni volta che si verifica un comportamento irregolare in un microprocessore, ci sono due fonti principali per il problema. 1) condensatori "bypass" mancanti o insufficienti, 2) pin del microprocessore "flottante".
Ogni "chip" deve avere un cappuccio di bypass, proprio sul pin del chip collegato a Vcc (+ 5v).
Qualsiasi pin non utilizzato, deve essere legato in alto o in basso, ma non deve mai essere lasciato "flottante".

Sono d'accordo che non stai guidando "abbastanza forte" Q4, raccomando 1K per R12.


+1 grazie nella risposta. Cercherò di aggiungere i capasitor del bipasso. È necessario assegnare valori per i pin che non sto usando nel progetto.
Tessitore daniale,

La parola corretta è "disaccoppiamento" del condensatore, non "bypass". Ha anche convenuto che i perni flottanti possono fare cose divertenti. Aggiungerei una terza fonte principale: brown-out o simili condizioni di ripristino non ottimali. Ma anche in questo caso, quando hai un principiante che fa cose complesse con interruzioni, i miei soldi sono sempre sul software.
Graham,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.