Layout PCB segnale misto per PSoC


16

Sto sviluppando un PCB per un'applicazione di rilevamento analogico. Utilizza l'ADC interno su una PSoC3. Come al solito, l'applicazione è molto limitata nello spazio (11 mm x 21 mm), quindi ho dovuto scendere a compromessi nel layout del PCB, cosa che non avrei fatto su un PCB più grande.

PCB PSoC

La scheda è fornita da 6 V regolati e contiene due regolatori lineari da 5 V. Un MCP1702 per l'alimentazione digitale e un MIC5205 per l'alimentazione analogica. La scheda rileva cinque sensori ad effetto Hall A1324 . Ogni segnale di uscita ad effetto Hall è filtrato da un filtro RC 100nF + 1k. Un sensore si trova sul PCB stesso (in basso a destra). Gli altri 4 si collegano al connettore a 6 pin destro.

Il chip agisce come uno slave SPI, ma i campioni ADC vengono sempre presi tra transazioni SPI, quindi l'SPI non dovrebbe interferire con i segnali analogici.

Purtroppo, sto ancora vedendo del rumore (circa 1,5 LSB a 12 bit) sui segnali analogici, e mi chiedo se ci sia qualcosa che avrei potuto fare diversamente nel layout per migliorarlo.

Layout PSoC

Apri l'immagine in una nuova scheda per vederla con una risoluzione più elevata.


Inserito il:

Altri progetti di PCB che ho fatto utilizzando l' MCP3208 e gli stessi doppi alimentatori a 5 v , gli stessi sensori e gli stessi filtri RC non hanno prodotto alcun rumore evidente a 12 bit.

L'ADC su PSoC3 è di tipo delta sigma. Questa versione di PSoC è limitata a 12 bit, ma un altro numero di parte ha un ADC a 16 bit (sebbene con una frequenza di campionamento inferiore).

Mi interessa il rumore e vorrei davvero spingerlo un po 'più avanti verso 12 ENOB. Il motivo non è la precisione, ma la misurazione della velocità. Attualmente questo livello di rumore sta rendendo impossibile eseguire un controllo accurato della posizione e della velocità su un robot.


Inserito il:

Schematico. Mi dispiace che sia un po 'angusto, ma puoi leggere i valori.

Schema PSoC


1
Inoltre, smettere di usare le etichette NET! Il tuo circuito non è affatto abbastanza complesso da richiederli e, non mostrando effettivamente le connessioni, rendi molto più difficile tracciare le connessioni. Ancora una volta, lo scopo dello schema è quello di rendere visivamente visibili la funzione e la funzionalità previste del circuito . Quindi lasci che il computer traduca la rappresentazione visiva nell'attuale layout fisico dei dispositivi (che è qualcosa in cui i computer sono molto bravi).
Connor Wolf,

1
@Rocketmagnet - Sono sicuramente utili per la persona che disegna il circuito . Sono assolutamente abominevoli per tutti gli altri .
Connor Wolf,

1
Inoltre, se si verificano problemi con la necessità di instradare i cavi a causa di vincoli di spazio, è necessario cercare disperatamente le funzioni di scambio di pin in Altium. Fondamentalmente, è possibile specificare pin che sono funzionalmente scambiabili nella definizione del componente (IE vari pin IO), quindi quando si esegue il routing del PCB, è possibile eseguire le tracce su uno qualsiasi dei pin che funzionerebbero, piuttosto che solo quello hai specificato nello schema. Quindi, è possibile sincronizzare lo schema scelto nel PCB allo schema.
Connor Wolf,

1
@FakeName, mentre il collegamento con le etichette potrebbe rendere più difficile seguire un circuito, ridisegnare ogni simbolo per creare uno schema puro e pulito con belle linee rette potrebbe facilmente quadruplicare il tempo per fare un ingresso schematico. Mi piacerebbe vedere uno schema perfetto, non sono sicuro che sia realistico richiederne uno.
The Photon,

1
@Rocketmagnet, Avere un'area pcb molto piccola non significa che non è possibile disegnare lo schema su carta di formato D.
The Photon,

Risposte:


13

Avrai sempre del rumore su un ADC, in particolare i tipi SA (Successive Approximation) sul die del microcontrollore. Sigma-delta ha prestazioni migliori per il rumore gaussiano, poiché lo integrano. Non aspettarti 12 ENOB da un ADC a 12 bit.

Il rumore del controller è un motivo per cui la maggior parte dei microcontrollori non offre una risoluzione superiore a 10 bit e l'AVR offre la possibilità di arrestare il microcontrollore durante l'acquisizione dell'ADC, il che dovrebbe confermare che almeno parte del rumore proviene dal controller .

Ma la domanda è: ti importa? 1,5 bit di rumore su un ADC a 12 bit lascia ancora più di 10 bit, o meglio dello 0,1%. Quanto è preciso il tuo sensore Hall? Altri componenti nel circuito?

modificare
Sembra che tu usi l'oscillatore interno del PSoC, poiché non vedo alcun cristallo sullo schema. Sembra OK: hai il disaccoppiamento corretto. A parte l'orologio interno, l'unica parte ad alta velocità nel circuito sembra essere la SPI, ma tu dici che questo sarà silenzioso durante le misurazioni. Il resto della scheda è DC o probabilmente relativamente basso come i sensori ad effetto Hall. Ed è un Damn Small ™, che aiuta anche: tracce più brevi assorbiranno meno rumore. Certo, potrei puntualizzare MCP1702, che ruoterei di 90 ° in senso antiorario in modo che il condensatore di uscita possa essere posizionato ancora più vicino ai pin, ma ciò non risolverà i problemi.

Vedo solo un cambiamento nel layout che potrebbe migliorare il tuo rapporto S / N:

inserisci qui la descrizione dell'immagine

Nella scheda tecnica sono suggeriti i piani di massa analogici e digitali divisi per "Prestazioni analogiche ottimali" (pagina 10).

Per il resto: è una piccola tavola come ho detto, che significa brevi tracce e disaccoppiamento in pochi mm. Quindi vorrei dare un'altra occhiata alla fonte del rumore. Il principale sospettato è l'orologio del PSoC. Il PSoC può funzionare con una tensione di alimentazione molto bassa e ciò ridurrebbe il rumore. Naturalmente sarebbe di grande aiuto se anche VDDA dovesse essere abbassato, ma non ho letto da nessuna parte nel foglio dati che VDDA non dovrebbe essere più alto di VDDD.

Successivamente, l'ADC. A pagina 55 del foglio dati dice 66 dB SINAD, ovvero 11 bit, vicino a quello che ottieni ora. Il datasheet A1324 ci fornisce un rumore di 7 mVpp con una tensione di riposo di 2,5 V. Questo è anche molto meno del rapporto S / N di 72 dB che 12 bit potrebbe darti. Puoi migliorarlo un po 'con un filtro aggiuntivo.

Lei menziona le migliori prestazioni dell'MCP3208, ma questo è un ADC lontano dal microcontrollore e ciò può spiegare come un ADC SA può fare meglio di un sigma-delta con la stessa risoluzione.

Quindi, le opzioni che vedo: abbassare la tensione di alimentazione digitale e dividere i motivi analogici e digitali.


Questa è un'idea molto interessante sull'abbassamento della tensione di alimentazione digitale del PSoC. VDDA sicuramente può essere superiore a VDDD.
Rocketmagnet,

Quindi, pensi che dovrei disconnettere VSSA dal pad termico? In realtà ho pubblicato questo come una domanda completamente nuova .
Rocketmagnet,

2

Sono d'accordo con quanto sopra. 1,5LSB di rumore sono abbastanza ragionevoli. http://www.cypress.com/?docID=39346 mostra un SINAD minimo di 66 dB in modalità 12 bit, suggerendo ENOB = 10.7.

So che questa non è una risposta diretta alla tua domanda, ma ho intenzione di interpretare la domanda come "come posso risolvere i miei problemi con il controllo della velocità?" e non "Come posso ottenere più di 10.5 ENOB?".

Come stai differenziando? Hai abbastanza quadranti di orologio per fare qualcosa di più liscio di una differenza centrale a due punti? Forse elaborare qualcosa di 5 campioni di larghezza, ottimizzato in Matlab?

Inoltre, potrebbe sembrare un po 'divertente, ma il rumore della velocità peggiora man mano che si campiona più velocemente

1LSBΔt
diventa più grande mentre il delta diventa più piccolo). Prova a campionare solo il più velocemente possibile, non il più velocemente possibile.

Non per essere offensivo, ma dai anche una rapida occhiata per assicurarti che non stia succedendo niente di stupido nel tuo controllo di velocità, come problemi con le conversioni tra numeri interi con o senza segno, e assicurati che i tuoi numeri siano abbastanza ampi da evitare errori di overflow quando fai la differenziazione . Le mie equazioni di controllo spesso diventano abbastanza complicate che a volte lancio esplicitamente ogni operazione.

Infine, anche se forse molto probabilmente, stai perdendo bit efficaci dalla parte superiore non amplificando a fondo scala? In tal caso, puoi amplificare o forse fornire un Vref più piccolo.


Stiamo calcolando la posizione e la velocità utilizzando un filtro Alpha Beta . Capisco che il rumore della velocità aumenta all'aumentare della frequenza di campionamento se fatto ingenuamente. Sono sicuro che il rumore della velocità non è dovuto a un errore di segno. E siamo già quasi al fondo scala, quindi non c'è più amplificazione che posso fare senza rischiare di colpire la parte superiore o inferiore della gamma.
Rocketmagnet,

Diresti che non ci sono miglioramenti che posso apportare al layout?
Rocketmagnet,

Non riesco ancora a vedere nulla. Come stai amplificando i sensori hall? Hai effettivamente esaminato l'output dei filtri AB e controllato gli eqns come un controllo di realtà? Sbirciato il rumore dalle uscite del regolatore? Potrebbe essere illuminante fare un bilancio del rumore formale per l'intero sistema
Scott Seidman,

1
Ma! L'altro vantaggio della modalità differenziale è che mi consente di aumentare la frequenza di campionamento di 4x, quindi posso eseguire il sovracampionamento. Ciò dovrebbe ridurre leggermente il rumore.
Rocketmagnet,

1
Forse un cappuccio di bypass su Vref (non sono sicuro di come farlo, è nel foglio dati). A parte questo, penso che tu sia estremamente vicino, se non a, l'ENOB ideale per l'ADC PSOC 3 a 12 bit, quindi hai fatto il meglio che potevi!
Scott Seidman,
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.