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.