Ci sono tre componenti principali in un nodo CAN-bus:
Il controllore CAN-bus implementa tutte le caratteristiche di basso livello del protocollo di rete, ISO 11898–1, mentre il trasmettitore comunica con lo strato fisico. Sono necessari trasmettitori diversi per diversi strati fisici, come can ad alta velocità, can a bassa velocità tollerante ai guasti o can ad alta velocità con velocità dati variabile.
In un'implementazione tipica, il controllore CAN-bus e il microprocessore sono unificati in un microcontrollore abilitato CAN. Sul mercato sono disponibili controllori CAN-bus esterni con interfaccia SPI, principalmente prodotti da Microchip, ma spesso possono aggiungere costi e complessità non necessari.
In questo articolo, daremo un'occhiata alla progettazione del circuito dal trasmettitore al connettore can-bus. È il momento di sporcarsi le mani e progettare la nostra circuiteria CAN-bus!
Tutti i trasmettitori CAN-bus operano in modo simile, poiché si collocano tra il microcontrollore (o FPGA) che implementa il controllore CAN-bus e il CAN-bus stesso. Tuttavia, ci sono alcune differenze che dovresti considerare attentamente.
Una rapida ricerca nella categoria Octopart appropriata rivela che i principali produttori di trasmettitori CAN-bus sono, in ordine decrescente per il numero di IC offerti, NXP Semiconductors, Microchip, Texas Instruments, Maxim Integrated, Analog Devices e ST Microelectronics.
Tutti questi trasmettitori sembrano simili, ma differiscono nelle loro caratteristiche e prestazioni.
I primi trasmettitori CAN-bus sul mercato includevano pochissima protezione dagli eventi di ESD (Scarica Elettrostatica). Richiedevano che tutta la protezione I/O fosse implementata con componenti esterni.
Fortunatamente, questo non è più il caso. Ecco alcuni IC casuali e la loro tolleranza ESD HBM (Human Body Model) sui pin del bus:
Numero di Parte |
Produttore |
Tolleranza ESD HBM |
ST Microelectronics |
6kV |
|
Infineon |
6kV |
|
NXP Semiconductor |
8kV |
|
Linear Technology |
25kV |
|
Maxim Integrated |
22kV |
Una maggiore tolleranza all'ESD può permetterti di risparmiare sulla protezione esterna, ma dovresti essere consapevole che spendere qualche centesimo in più per diodi TVS di qualità può migliorare drasticamente l'affidabilità.
Se la tua applicazione ha limitazioni di spazio e non devi gestire molta ESD, allora la soluzione tutto-in-uno è quella giusta. Nel mio caso, ho optato per un TVS esterno e un trasmettitore più economico.
La maggior parte dei trasmettitori sul mercato opera a 5V, ma i circuiti integrati progettati per 3.3V sono estremamente popolari così. Tensioni di alimentazione inferiori non sono possibili senza ricorrere all'uso di convertitori dc-dc. Alcuni circuiti integrati, come il MAX14883E di Maxim Integrated, includono un ingresso di alimentazione a livello logico che consente l'interoperabilità con dispositivi a 1.8V indipendentemente dall'alimentazione del trasmettitore.
Nel mio caso, il mio MCU opera a 3.3V, quindi sceglierò anche questa tensione per i trasmettitori CAN-bus.
Tutti i trasmettitori CAN-bus ad alta velocità possono operare fino a 1Mbps su reti piccole. I trasmettitori CAN-FD possono operare fino a 5Mbps, ma molti di essi sono limitati a velocità inferiori, come 2Mbps.
Il data-rate finale del sistema sarà limitato dalla capacità del bus, dall'allocazione degli identificatori CAN-bus e dal tipo di frame CAN trasmessi. Lo scenario peggiore è solitamente un baud rate effettivo di un terzo del massimo.
Un trasmettitore CAN-bus isolato può essere necessario per requisiti di sicurezza. Ad esempio, introdurre un isolamento galvanico può proteggere la parte a bassa tensione dei tuoi circuiti nel caso in cui il bus venga in contatto con tensioni pericolose. Lo stesso isolamento può anche migliorare la comunicazione interrompendo i loop di terra e consentendo differenze più sostanziali nel potenziale di terra tra i nodi.
Ovviamente, i trasmettitori CAN-bus isolati richiederanno un'alimentazione altrettanto isolata.
Molti trasmettitori includono un ingresso per la selezione della modalità che può essere utilizzato per mettere l'IC a basso consumo energetico e spegnere il trasmettitore. Tipicamente, il ricevitore rimane attivo e il pin RXD può essere utilizzato per attivare un'interruzione di risveglio nel microcontrollore.
L'ingresso per la selezione della modalità a volte funge anche da controllo della pendenza quando viene tirato alto o basso attraverso una resistenza di almeno alcuni kOhm. Ridurre la pendenza del segnale, anche se può limitare la larghezza di banda, consente al trasmettitore di limitare la quantità di interferenza elettromagnetica che produce.
Tutti i trasmettitori conformi a ISO 11898-2 devono essere in grado di sopportare tensioni continue su CANH e CANL tra -3V e +32V rispetto al terreno senza rompersi, sopportare transienti da -150V a 100V, e essere in grado di operare con una tensione del bus in modalità comune tra -2V e +7V.
Praticamente tutti i circuiti integrati sul mercato superano questi requisiti, con una gara informale su chi può mostrare i numeri più significativi che si svolge in background.
Ecco alcuni esempi:
Numero di Parte |
Produttore |
Tensione continua su CANH e CANL |
ST Microelectronics |
-5V a +36V |
|
Infineon |
-40V a +40V |
|
NXP Semiconductor |
-58V a +58V |
|
Linear Technology |
+60V a +60V |
|
Maxim Integrated |
+63V a +63V |
Tensioni superiori a 50V sono ora standard, poiché molti veicoli presentano catene cinematiche ibride che operano a 48V, e il trasmettitore dovrebbe essere in grado di sopportare un cortocircuito del bus alla rotaia di alimentazione di tensione più alta del sistema.
Non ci sono regole precise e immutabili su quanti nodi si possono inserire in una rete, ma uno dei parametri più critici sarà l'impedenza di ingresso tra CANH e CANL sul tuo trasmettitore.
Un'alta impedenza di ingresso avrà un'influenza marginale sul bus e consentirà un numero maggiore di nodi.
Alcuni trasmettitori implementano ampie funzionalità di protezione, come:
La maggior parte dei trasmettitori CAN-bus include una modalità solo ascolto che riporta il TXD al RXD senza effettivamente guidare il bus. Questa funzionalità è spesso utilizzata per determinare automaticamente il baud rate del bus.
Nel mio progetto, ho scelto un TJA1051, principalmente perché sono parsimonioso, ed è uno dei circuiti integrati più economici sul mercato. La pagina del prodotto può essere trovata qui.
Utilizzando il pannello "Ricerca Parti del Produttore", ho immediatamente trovato i modelli dei componenti, completi di footprint e 3D, e li ho posizionati nello schema. Il modello è stato automaticamente scaricato dalle librerie cloud di Altium 365™.
Non devo mica menzionare che avremo bisogno di condensatori di bypass locali, vero?
Inoltre, alcuni condensatori aggiuntivi di piccoli valori, tipicamente da 40 a 100pF sulle linee CANH e CANL e connessi a terra, possono aiutare ad assorbire l'energia ESD e migliorare la resilienza EMI. Come sempre, con l'aumento della capacità del bus si ha una diminuzione della velocità del bus, un aumento del carico sulla fase di uscita del trasmettitore e un aumento del consumo di energia.
Il bus CAN dovrebbe essere terminato ad entrambe le estremità con una resistenza da 120 ohm. Naturalmente, potremmo calcolare correttamente la potenza (standard da 1/4W, 1/2W se siamo paranoici), posizionare la nostra graziosa piccola resistenza e chiamarla una giornata. Ma perché semplificare le cose?
Una tecnica più sofisticata, adottata in quasi tutte le schede CAN-bus provate nell'industria che ho visto finora, è la terminazione divisa.
Nella terminazione divisa, si utilizzano due resistori da 60 ohm in serie, per un totale di 120 ohm. Il nodo elettrico tra i due resistori è collegato a terra attraverso un condensatore, solitamente di 4.7nF.
Il valore del condensatore è stato calcolato per ottenere una frequenza di taglio di -3db alla frequenza fondamentale della rete.
Nel mio caso, la rete dovrebbe avere una velocità di trasmissione di 1mbit/s. Assumendo lo scenario peggiore, quando la rete trasmette una sequenza di bit alternati (01010101) il segnale sarà un'onda quadra di frequenza 500kHz, ovvero pari alla metà della velocità di trasmissione.
Conoscendo la resistenza a 60 ohm, possiamo quindi calcolare il condensatore.
Se dobbiamo approssimare il valore del nostro condensatore, uno leggermente più piccolo interferirà meno con il nostro prezioso segnale. Di conseguenza, 4.7nF, che è il valore più ampiamente adottato.
Se avete bisogno di una libreria di componenti passivi, raccomando vivamente la Celestial Library di Mark Harris. È gratuita, estesa e accuratamente curata.
Se il tuo sistema non è soggetto a forti scariche elettrostatiche (ESD), la protezione inclusa nel circuito integrato del trasmettitore potrebbe essere tutto ciò che serve.
I diodi TVS (Transient Voltage Suppressor) sono una scelta comune a causa della loro bassa capacità equivalente parallela.
Altri dispositivi di protezione da sovratensioni, come i MOV, spesso presentano un'alta capacità parassita che può limitare le velocità di trasmissione dei dati sul bus, specialmente per bus con molti nodi.
Sul mercato sono disponibili diversi diodi TVS progettati appositamente per il CAN-bus, per esempio, NUP2105L di ON Semiconductor, che ho deciso di impiegare in questo progetto.
Per quanto riguarda il trasmettitore, ho posizionato il modello con un clic dalle librerie di Altium 365 utilizzando il pannello di ricerca dei componenti del produttore, senza dover disegnare il simbolo schematico e l'impronta.
Se il tuo circuito fosse senza protezione, tutta la corrente EMI andrebbe direttamente nel tuo trasmettitore dal tuo connettore, e poi di nuovo attraverso il piano di massa. Questo è ciò che la corrente vuole fare perché quella è la via di minore impedenza.
Tutti i componenti di protezione dovrebbero essere il più vicino possibile a quel percorso per evitare di aumentare l'area del loop. Inoltre, tutta la protezione dovrebbe essere il più vicino possibile al connettore e al bordo della scheda per prevenire l'accoppiamento del rumore con il resto del circuito.
Naturalmente, non è possibile stipare tutto in prossimità diretta del connettore, quindi dobbiamo stabilire delle priorità. La regola generale è posizionare per primo il componente che deve affrontare l'aggressore EMI "peggiore".
Nel nostro caso, diodi TVS devono gestire eventi ad alta velocità e ad alta corrente. Poiché gli impulsi veloci sono ricchi di componenti ad alta frequenza, se lasciati liberi di muoversi sulle nostre schede, si accoppieranno con ogni traccia disponibile e interromperanno il funzionamento.
Quindi il TVS va per primo.
Se non avessimo le resistenze di terminazione in mezzo, il filtro a modo comune andrebbe al secondo posto.
Nel nostro esempio di PCB, c'è ancora spazio per miglioramenti. Il diodo TVS potrebbe essere ruotato di 180 gradi per ridurre ulteriormente l'area del loop ESD. Anche i condensatori C5 e C6 potrebbero essere ruotati di 180 gradi e spostati un po' a destra.
Ogni guida per il layout dei PCB contiene scritti del tipo "piani di massa questo" o "piani di massa quello", e se vuoi tenere l'EMI lontano dal ventre morbido delle tue schede, non c'è scampo.
Deve esserci un piano di massa proprio sotto al segnale che stai collegando a massa per mantenere il percorso di minore impedenza il più corto possibile. I tuoi diodi TVS dovrebbero scaricare gli impulsi direttamente al piano di massa, collegati allo schermo del cavo (se disponibile) attraverso una connessione a bassa induttanza.
Non ha molto senso spendere tutti i nostri sudati soldi in condensatori se il loro effetto verrà annullato dall'induttanza delle tracce di massa.
In questo progetto, ho utilizzato vie ai margini del pad. A differenza della tecnica via-in-pad, non richiede un passaggio aggiuntivo nella fabbricazione del PCB e quindi non aumenta il costo. La via deve essere coperta; altrimenti, la pasta saldante fluirà all'interno, e il pad non sarebbe adeguatamente bagnato.
Puoi trovare documentazione sulle proprietà delle vie in Altium Designer qui.
Diciamo che abbiamo ora trascorso ore a leggere articoli scritti da figure dubbie, a ricercare trasmettitori, a testare e validare il nostro perfetto sottocircuito CAN-bus. E ora?
Il primo passo è progettare il tuo circuito in un unico documento schematico, utilizzando porte per input e output, similmente a quanto faresti per un design gerarchico.
Utilizzando il pannello esplora, crea una nuova cartella "Managed Schematic Sheets".
Una volta creata la tua cartella, tutti gli utenti all'interno della tua organizzazione avranno accesso ad essa, e potrai procedere a caricare il foglio schematico.
Ora puoi posizionare il tuo foglio schematico gestito in qualsiasi progetto.
Il tuo nuovo foglio schematico gestito sarà differenziato dal simbolo verde "reuse".
Se ti piacerebbe sapere perché tutto è blu invece che giallo e rosso, controlla il mio articolo precedente sullo stile di progettazione.
Una terminazione "debole" opzionale, per esempio 1.3 kOhm, può aiutare a migliorare la resilienza EMI dei nodi con una lunga distanza del rametto. La stessa resistenza, tuttavia, contribuisce a caricare la rete, riducendo il numero di nodi, diminuendo l'impedenza nominale finale del bus e riducendo la velocità massima.
Se non sei limitato dal costo e la protezione degli ingressi è fondamentale per te, dovresti considerare l'aggiunta di un secondo livello di protezione:
Un MOV (Varistore a Ossido Metallico) o GDT (Tubo a Scarica di Gas) per "assorbire" energia maggiore rispetto a quella che il TVS può gestire.
Un dispositivo di limitazione della corrente tra il MOV/GDT e il trasmettitore, come un resistore ad alta impulso, un varistore o un TBU® (un varistore a semiconduttore di fascia alta venduto da Bourns).
Dovresti sempre tenere a mente, tuttavia, che questi dispositivi possono aumentare la tua capacità equivalente del bus e ridurre le tue velocità di trasmissione dati e aumentare il consumo di corrente.
I filtri di modo comune sono il tipo più comune di filtro utilizzato sul CAN-Bus, e funzionano benissimo, ma hanno alcuni svantaggi che dovresti considerare.
Le bobine a modo comune possono creare risonanze con la capacità parassita del bus CAN-bus, portando ad un aumento del rumore in alcune specifiche bande di frequenza. Questo effetto può rendere le proprietà EMI dei dispositivi CAN-bus imprevedibili, poiché l'induttanza nelle bobine a modo comune è raramente specificata con precisione, e la capacità parassita può variare enormemente con la lunghezza dei cavi. Se viene utilizzato un cavo non schermato, la capacità può variare a seconda della prossimità del cavo alle superfici metalliche collegate a terra.
Come tutti sappiamo, gli induttori a modo comune si comportano come induttori in modo comune. Ovviamente. Alcune condizioni di guasto, come un cortocircuito verso l'alimentazione o la terra, possono causare alte correnti transitorie in modo comune. In alcuni casi, la sovratensione creata dall'induttanza della bobina a modo comune può danneggiare i trasmettitori CAN-bus. Queste sovratensioni possono essere piuttosto difficili da diagnosticare, poiché si creano dopo la protezione da sovratensione, che è tipicamente posizionata al bordo della scheda.
Il terzo svantaggio delle bobine... possono essere costose. I segnali differenziali ad alta velocità richiedono una perdita di corrente molto bassa.
Alcuni produttori di IC, in particolare Texas Instruments, stanno promuovendo dispositivi isolati e altamente tolleranti agli EMI per reti CAN-bus "senza bobine".
Mi piacciono molto, quindi ho deciso di optare per un filtro a modo comune specificamente progettato per applicazioni CAN-bus.
Devo essere innamorato del CAN-bus. Tra la sua infinita flessibilità e l'estrema resistenza alle interferenze elettromagnetiche, è senza dubbio uno degli standard più eccitanti al mondo.
Con Altium Concord Pro puoi condividere senza problemi i tuoi schemi all'interno della tua organizzazione, consentendo il riutilizzo del design e riducendo al minimo lo sforzo ingegneristico per lanciare nuovi prodotti.
Hai altre domande? Chiama un esperto di Altium.