Il bus CAN spiegato: come controller, BMS e display comunicano
Su una macchina elettrica moderna, i componenti non si limitano a scambiarsi potenza: si scambiano informazioni. Il controller vuole conoscere lo stato della batteria, il display la velocità e le temperature, un secondo controller il setpoint del primo. Il mezzo più diffuso per questo scopo proviene dall'automotive: il bus CAN. Questa guida spiega come funziona e come cablarlo senza errori.
L'essenziale
- Il CAN collega più dispositivi su una stessa coppia di cavi intrecciati, chiamati CAN alto e CAN basso.
- È necessaria una resistenza di 120 ohm a ciascuna delle due estremità del bus, e solo alle estremità.
- Ogni messaggio porta un identificatore che funge anche da priorità: il più importante passa sempre per primo.
- Tutti i dispositivi devono utilizzare la stessa velocità di comunicazione.
Un bus, non un collegamento
Un collegamento seriale classico collega due dispositivi. Il CAN, invece, è un bus: tutti i dispositivi sono collegati sugli stessi due fili e ciascuno può parlare con tutti. Per aggiungere un dispositivo, ci si collega al bus, senza tirare un nuovo cavo fino al controller. Questo è ciò che lo ha imposto nell'automotive, dove decine di centraline condividono poche coppie di fili.
Su un veicolo leggero, si trovano tipicamente uno o più controller, il BMS della batteria, un display, un modulo di telemetria o un caricabatterie.
Due fili, una differenza
Il CAN utilizza una coppia di fili, CAN alto e CAN basso. L'informazione non è portata dalla tensione di un filo rispetto alla massa, ma dalla differenza tra i due:
- a riposo (bit "recessivo"), i due fili sono alla stessa tensione, circa la metà dell'alimentazione del circuito;
- per emettere un bit "dominante", il trasmettitore allontana i due fili: l'alto sale, il basso scende.
Un disturbo elettrico, come quello di un controller che commuta centinaia di ampere, colpisce entrambi i fili allo stesso modo. La loro differenza, invece, rimane intatta. È questo che rende il CAN così robusto in un ambiente elettrico rumoroso, a condizione che i due fili siano intrecciati insieme.
Le resistenze di terminazione
Un bus CAN deve avere una resistenza di 120 ohm tra CAN alto e CAN basso a ciascuna delle sue due estremità fisiche. Impediscono ai segnali di rimbalzare all'estremità del cavo e riportano il bus a riposo.
- Bus ben terminato: misurando tra CAN alto e CAN basso, con i dispositivi spenti, si trovano circa 60 ohm (due volte 120 ohm in parallelo).
- Circa 120 ohm: manca una terminazione.
- Un valore nettamente inferiore a 60 ohm: ci sono troppe terminazioni, spesso perché più dispositivi hanno la propria attivata.
Una terminazione assente o di troppo è la prima causa di comunicazione instabile.
Identificatori e priorità
Ogni messaggio CAN porta un identificatore, un numero che dice di cosa parla (ad esempio "stato della batteria" o "setpoint del motore anteriore"). I dispositivi leggono tutti i messaggi e conservano solo quelli che li interessano.
Quando due dispositivi iniziano a trasmettere contemporaneamente, confrontano i loro identificatori bit per bit, sullo stesso filo. Un bit dominante schiaccia un bit recessivo: chi emette un bit recessivo e legge un bit dominante capisce di aver perso e tace. L'identificatore più piccolo vince sempre, senza che nessun messaggio venga danneggiato. Questo si chiama arbitraggio: i messaggi critici ricevono gli identificatori più piccoli.
Affidabilità integrata
- Ogni messaggio contiene un codice di controllo: un messaggio danneggiato viene rilevato e ritrasmesso.
- Ciascun ricevitore conferma la corretta ricezione con un bit di riscontro.
- Un dispositivo che accumula errori si ritira autonomamente per non bloccare l'intero bus.
La velocità del bus
Tutti i dispositivi su un bus devono utilizzare la stessa velocità. I valori più comuni sono 250 e 500 kilobit al secondo, a volte 1 megabit. Più il bus è veloce, più la sua lunghezza massima è breve, ma su un veicolo leggero, di pochi metri al massimo, la lunghezza non è mai un limite. Una versione più recente, il CAN FD, trasporta più dati per messaggio a velocità più elevate.
Esempio: due controller collegati
Su un monopattino a doppio motore, due controller collegati tramite CAN si comportano come uno solo: quello che riceve l'acceleratore trasmette il setpoint all'altro, e un unico software di configurazione li vede entrambi. È il caso dei controller VESC, presentati nella nostra guida il VESC spiegato semplicemente.
Il consiglio dell'officina
Intrecciate sempre insieme CAN alto e CAN basso, teneteli lontani dai cavi di fase e verificate i 60 ohm con il multimetro prima della prima accensione. Cinque minuti di controllo evitano ore di ricerca di comunicazione intermittente.
Domande frequenti
Il CAN trasporta corrente per alimentare i dispositivi?
No, la coppia CAN trasporta solo informazioni. I dispositivi hanno la propria alimentazione, a volte fornita da altri fili dello stesso cavo.
Perché la mia comunicazione CAN funziona in modo intermittente?
Le cause più frequenti sono una terminazione assente o di troppo, fili non intrecciati che passano vicino ai cavi di potenza, un connettore usurato o due dispositivi che non hanno la stessa velocità di bus.
È possibile collegare insieme qualsiasi dispositivo CAN?
Elettricamente sì, se condividono la velocità del bus. Ma perché si capiscano, devono parlare la stessa "lingua": stessi identificatori e stesso contenuto dei messaggi. Due marchi diversi non si comprendono senza adattamento.