Sommario:
- Passaggio 1: cos'è CANBUS?
- Passaggio 2: informazioni sulle comunicazioni CAN
- Passaggio 3: cornici
- Passaggio 4: velocità e distanza
- Passaggio 5: hardware
- Passaggio 6: connessione
- Passaggio 7: codice
- Passaggio 8: mostra
Video: Un semplice tutorial per CANBUS: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Ho studiato CAN per tre settimane e ora ho completato alcune applicazioni per convalidare i miei risultati di apprendimento. In questo tutorial imparerai come utilizzare Arduino per implementare la comunicazione CANBUS. Se avete suggerimenti, benvenuti a lasciare un messaggio.
Forniture:
Hardware:
- Maduino Zero CANBUS
- Modulo temperatura e umidità DHT11
- 1.3" I2C OLED 128x64- Blu
- Cavo da DB9 a DB9 (da femmina a femmina)
- Linea Dupont
Software:
Arduino IDE
Passaggio 1: cos'è CANBUS?
Informazioni su CAN
CAN (Controller Area Network) è una rete di comunicazione seriale in grado di realizzare un controllo distribuito in tempo reale. È stato sviluppato per l'industria automobilistica per sostituire il complesso cablaggio con un bus a due fili.
Il protocollo CAN definisce il Data Link Layer e parte del Physical Layer nel modello OSI.
Il protocollo CAN è standardizzato ISO con ISO11898 e ISO11519. ISO11898 è lo standard di comunicazione CAN ad alta velocità con una velocità di comunicazione di 125 kbps-1 Mbps. ISO11519 è lo standard di comunicazione CAN a bassa velocità con una velocità di comunicazione inferiore a 125 kbps.
Qui ci concentriamo sul CAN ad alta velocità.
ISO-11898 descrive come le informazioni vengono passate tra i dispositivi su una rete ed è conforme al modello Open Systems Interconnection (OSI) che è definito in termini di livelli. La comunicazione effettiva tra i dispositivi collegati dal supporto fisico è definita dal livello fisico del modello
- Ogni unità CAN collegata al bus può essere chiamata nodo. Tutte le unità CAN sono collegate a un bus terminato a ciascuna estremità con resistori da 120 per formare una rete. Il bus è composto dalle linee CAN_H e CAN_L. Il controller CAN determina il livello del bus in base alla differenza del livello di potenza su entrambi i fili. I livelli degli autobus sono divisi in livelli dominanti e recessivi, che devono essere uno di questi. Il mittente invia il messaggio al destinatario apportando una modifica a livello di bus. Quando sul bus viene eseguita la riga logica "e", il livello dominante è "0" e il livello recessivo è "1".
- Nello stato dominante, la tensione di CAN_H è di circa 3,5 V e la tensione di CAN_L è di circa 1,5 V. Nello stato recessivo, la tensione di entrambe le linee è di circa 2,5V.
- Il segnale è differenziale, ecco perché CAN deriva la sua robusta immunità al rumore e tolleranza ai guasti. Il segnale differenziale bilanciato riduce l'accoppiamento del rumore e consente velocità di segnalazione elevate su cavo a doppino intrecciato. La corrente in ciascuna linea di segnale è uguale ma nella direzione opposta e si traduce in un effetto di cancellazione del campo fondamentale per basse emissioni di rumore. L'uso di ricevitori differenziali bilanciati e cavi a doppino intrecciato migliora la reiezione di modo comune e l'elevata immunità ai disturbi di un bus CAN.
CAN ricetrasmettitore
Il CAN Transceiver è responsabile della conversione tra il livello logico e il segnale fisico. Converti un segnale logico in un livello differenziale o un segnale fisico in un livello logico.
CAN Controller
Il controller CAN è il componente principale di CAN, che realizza tutte le funzioni del livello di collegamento dati nel protocollo CAN e può risolvere automaticamente il protocollo CAN.
MCU
L'MCU è responsabile del controllo del circuito funzionale e del controller CAN. Ad esempio, i parametri del controller CAN vengono inizializzati all'avvio del nodo, il frame CAN viene letto e inviato tramite il controller CAN, ecc.
Passaggio 2: informazioni sulle comunicazioni CAN
Quando il bus è inattivo, tutti i nodi possono iniziare a inviare messaggi (controllo multi-master). Il nodo che per primo accede al bus ottiene il diritto di inviare (modalità CSMA/CA). Quando più nodi iniziano a inviare contemporaneamente, il nodo che invia il messaggio ID ad alta priorità ottiene il diritto di inviare.
Nel protocollo CAN, tutti i messaggi vengono inviati in un formato fisso. Quando il bus è inattivo, tutte le unità collegate al bus possono iniziare a inviare nuovi messaggi. Quando più di due celle iniziano a inviare messaggi contemporaneamente, la priorità viene determinata in base all'identificatore. L'ID non rappresenta l'indirizzo di destinazione dell'invio, ma piuttosto la priorità del messaggio che accede al bus. Quando più di due celle iniziano a inviare messaggi contemporaneamente, ogni bit dell'ID senza interessi viene arbitrato uno per uno. L'unità che vince l'arbitrato può continuare a inviare messaggi e l'unità che perde l'arbitrato interrompe immediatamente l'invio e riceve il lavoro.
Il bus CAN è un tipo di bus broadcast. Ciò significa che tutti i nodi possono "sentire" tutte le trasmissioni. tutti i nodi raccolgono invariabilmente tutto il traffico. L'hardware CAN fornisce un filtraggio locale in modo che ogni nodo possa reagire solo ai messaggi interessanti.
Passaggio 3: cornici
I dispositivi CAN inviano dati attraverso la rete CAN in pacchetti chiamati frame. CAN ha quattro tipi di frame:
- Data frame: un frame contenente i dati del nodo per la trasmissione
- Frame remoto: un frame che richiede la trasmissione di un identificatore specifico
- Frame di errore: un frame trasmesso da qualsiasi nodo che rileva un errore
- Frame di sovraccarico: un frame per iniettare un ritardo tra i dati o il frame remoto
Cornice dati
Esistono due tipi di frame di dati, standard ed estesi.
Il significato dei campi di bit della figura è:
- SOF: il singolo bit dominante di inizio del frame (SOF) segna l'inizio del messaggio e viene utilizzato per sincronizzare i nodi su un bus dopo essere stati inattivi.
- Identificatore: l'identificatore standard CAN a 11 bit stabilisce la priorità del messaggio. Più basso è il valore binario, maggiore è la sua priorità.
- RTR–Il singolo bit di richiesta di trasmissione remota (RTR)
- IDE: un bit di estensione dell'identificatore singolo dominante (IDE) indica che viene trasmesso un identificatore CAN standard senza estensione.
- R0–Bit riservato (per l'eventuale utilizzo da futuri emendamenti alla norma).
- DLC: il codice della lunghezza dei dati a 4 bit (DLC) contiene il numero di byte di dati trasmessi.
- Dati: possono essere trasmessi fino a 64 bit di dati dell'applicazione.
- CRC: il controllo di ridondanza ciclica (CRC) a 16 bit (15 bit più delimitatore) contiene il checksum (numero di bit trasmessi) dei dati dell'applicazione precedente per il rilevamento degli errori.
- ACK–ACK è di 2 bit, uno è il bit di riconoscimento e il secondo è un delimitatore.
- EOF: questo campo di fine frame (EOF), a 7 bit, segna la fine di un frame CAN (messaggio) e disabilita il bitstuffing, indicando un errore di riempimento quando dominante. Quando 5 bit dello stesso livello logico si verificano in successione durante il normale funzionamento, nei dati viene inserito un bit del livello logico opposto.
- IFS: questo spazio interframe a 7 bit (IFS) contiene il tempo necessario al controller per spostare un frame correttamente ricevuto nella posizione corretta in un'area del buffer dei messaggi.
Arbitrato
Nello stato di inattività del bus, l'unità che inizia a inviare il messaggio per prima ottiene l'invio corretto. Quando più unità iniziano a inviare contemporaneamente, ciascuna unità di invio inizia dal primo bit del segmento di arbitrato. L'unità con il maggior numero di livelli dominanti di uscita continua può continuare a inviare.
Passaggio 4: velocità e distanza
Il bus CAN è un bus che collega più unità contemporaneamente. In teoria non c'è limite al numero totale di unità collegabili. In pratica, però, il numero di unità collegabili è limitato dalla temporizzazione sul bus e dal carico elettrico. Ridurre la velocità di comunicazione, aumentare il numero di unità collegabili e aumentare la velocità di comunicazione, diminuisce il numero di unità collegabili.
La distanza di comunicazione è inversamente proporzionale alla velocità di comunicazione e maggiore è la distanza di comunicazione, minore è la velocità di comunicazione. La distanza maggiore può essere di 1 km o più, ma la velocità è inferiore a 40 km/s.
Passaggio 5: hardware
Il modulo Maduino Zero CAN-BUS è uno strumento sviluppato da Makerfabs per la comunicazione CANbus, è basato su Arduino, con il controller CAN e il ricetrasmettitore CAN, per creare una porta CAN-bus pronta all'uso.
- MCP2515 è un controller CAN autonomo che implementa le specifiche CAN. È in grado di trasmettere e ricevere dati sia standard che estesi e frame remoti.
- Il MAX3051 si interfaccia tra il controller del protocollo CAN e i fili fisici delle linee bus in una controller area network (CAN). Il MAX3051 fornisce capacità di trasmissione differenziale al bus e capacità di ricezione differenziale al controller CAN.
Passaggio 6: connessione
Collegare il modulo DHT11 al modulo CAN-BUS Maduino Zero con fili da utilizzare come strumento per supportare la comunicazione CAN. Allo stesso modo, collegare il display al modulo per ricevere i dati e visualizzarli.
La connessione tra Maduino Zero CANBUS e DHT11:
Maduino Zero CANBUS -- DHT11
3v3 ------ VCC GND ------ GND D10 ------ DATI
La connessione tra Maduino Zero CANBUS e OLED:
Maduino Zero CANBUS -- OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
Utilizzare un cavo DB9 per collegare i due moduli CANBUS Maduino Zero.
Passaggio 7: codice
Il MAX3051 completa la conversione dei livelli differenziali in segnali logici. L'MCP2515 completa la funzione CAN come la codifica e la decodifica dei dati. L'MCU deve solo inizializzare il controller e inviare e ricevere dati.
- Github:
- Dopo aver installato Arduino, non esiste alcun pacchetto per supportare la scheda (Arduino zero) necessaria per l'installazione.
- Seleziona strumenti -> Scheda -> Gestione schede, cerca "Arduino zero" e installa "Schede Arduino SAMD".
- Seleziona Strumenti -> Scheda -> Arduino Zero (porta USB nativa), seleziona Strumenti -> Porta -> com…
- Dopo aver ottenuto il programma da GitHub, è necessario assicurarsi che tutti i file si trovino nella directory del progetto, che contiene file di libreria che supportano CANBUS.
- Installa la libreria di sensori DHT di Adafruit, che viene utilizzata per guidare il DHT11 per ottenere temperatura e umidità.
- Utilizzare indirizzi diversi per inviare separatamente temperatura e umidità nel codice Test_DHT11.ino.
CAN.sendMsgBuf(0x10, 0, stmp1.length(), stmp_send1);
ritardo (500); CAN.sendMsgBuf(0x11, 0, stmp2.length(), stmp_send2); ritardo (500);
"0x10" è l'ID del messaggio, "0" è il frame standard medio, "stmp1.length()" è la lunghezza del messaggio, "stmp_send1" è il dato inviato.
- Nel codice Test_OLED.ino, tutti i messaggi sul CANBUS vengono ricevuti su richiesta e le informazioni richieste vengono visualizzate sull'OLED.
- Carica il programma Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino sul modulo collegato al sensore e Carica il programma Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino su un altro modulo collegato all'OLED.
Passaggio 8: mostra
Accendere i due moduli, temperatura e umidità verranno visualizzate sul display.
Consigliato:
Il modo più semplice per creare un robot per il controllo dei gesti: 7 passaggi (con immagini)
Il modo più semplice per creare un robot per il controllo dei gesti: controlla i giocattoli come un supereroe. Scopri come creare un'auto controllata dai gesti.Questo è su come creare un'auto controllata dai gesti da solo. Fondamentalmente questa è una semplice applicazione del giroscopio a 3 assi MPU-6050, accelerometro. Puoi fare molte più cose
Supporto per cellulare di emergenza e molto semplice per un treppiede: 4 passaggi (con immagini)
Supporto per cellulare di emergenza e molto semplice per un treppiede: non riuscivo a trovare il supporto per cellulare che avevo realizzato prima e avevo solo un paio d'ore per arrivare dove volevo fare un video, quindi ho pensato a questo. I materiali sono semplici: Un appendiabiti in metallo o un filo metallico abbastanza rigido Un dado 1/4"-NC 20 (o
Come Realizzare una Semplice Custodia per il Trasporto per l'Asus Eee: 7 Passaggi
Come realizzare una semplice custodia per il trasporto dell'Asus Eee: è da un po' che bramo l'Asus Eee e finalmente ne ho comprato uno. Poiché è così piccolo, non voglio (e non ho bisogno di) portarlo in giro in una custodia per laptop tradizionale. La custodia fornita con l'Eee è carina se la metti in
Supporto per laptop semplice e facile per le tue ginocchia: 4 passaggi
Supporto per laptop semplice e facile per le tue ginocchia: ho guardato intorno a una moltitudine di negozi per un supporto per laptop che porta il flusso d'aria al laptop, ma uno in cui potrei effettivamente usarlo sulle ginocchia. Non ho trovato nulla che fosse quello che volevo, quindi ho deciso di crearne uno mio
Supporto semplice per iPhone/iPod Touch da 2 clip per raccoglitori: 4 passaggi
Semplice supporto per iPhone/iPod Touch da 2 clip per raccoglitori: in tutto circa 5 secondi puoi creare un supporto bello e robusto per il tuo gadget elettronico preferito. Questa è una versione notevolmente semplificata dell'istruzione di Petrov che pensavo fosse intelligente ma troppo fantasiosa