Taula de continguts:

Un tutorial senzill per a CANBUS: 8 passos
Un tutorial senzill per a CANBUS: 8 passos

Vídeo: Un tutorial senzill per a CANBUS: 8 passos

Vídeo: Un tutorial senzill per a CANBUS: 8 passos
Vídeo: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Juliol
Anonim
Un tutorial senzill per a CANBUS
Un tutorial senzill per a CANBUS

He estat estudiant CAN des de fa tres setmanes i ara he completat algunes sol·licituds per validar els meus resultats d’aprenentatge. En aquest tutorial, aprendreu a utilitzar Arduino per implementar la comunicació CANBUS. Si teniu algun suggeriment, podeu deixar un missatge.

Subministraments:

Maquinari:

  • Maduino Zero CANBUS
  • Mòdul de temperatura i humitat DHT11
  • 1.3 "I2C OLED 128x64- Blau
  • Cable DB9 a DB9 (femella a femella)
  • Línia Dupont

Programari:

IDE Arduino

Pas 1: què és CANBUS

Què és CANBUS
Què és CANBUS
Què és CANBUS
Què és CANBUS

Quant a CAN

CAN (Controller Area Network) és una xarxa de comunicació en sèrie que pot realitzar un control distribuït en temps real. Està desenvolupat per a la indústria de l'automòbil per substituir el complex cablejat per un bus de dos fils.

El protocol CAN defineix la capa d’enllaç de dades i una part de la capa física al model OSI.

El protocol CAN està normalitzat ISO amb ISO11898 i ISO11519. ISO11898 és l'estàndard de comunicació d'alta velocitat CAN amb una velocitat de comunicació de 125 kbps-1 Mbps. ISO11519 és l'estàndard de comunicació CAN de baixa velocitat amb una velocitat de comunicació inferior a 125 kbps.

Aquí ens centrem en el CAN d'alta velocitat.

La norma ISO-11898 descriu com es transmet la informació entre dispositius d’una xarxa i s’ajusta al model d’interconnexió de sistemes oberts (OSI) que es defineix en termes de capes. La comunicació real entre els dispositius connectats pel mitjà físic es defineix per la capa física del model

  • Cada unitat CAN connectada al bus es pot anomenar node. Totes les unitats CAN estan connectades a un bus finalitzat a cada extrem amb resistències de 120 Ω per formar una xarxa. El bus consta de línies CAN_H i CAN_L. El controlador CAN determina el nivell del bus en funció de la diferència en el nivell de potència dels dos cables. Els nivells d’autobús es divideixen en nivells dominants i recessius, que n’han de ser un. El remitent envia el missatge al receptor fent un canvi al nivell del bus. Quan la línia lògica "i" s'executa al bus, el nivell dominant és "0" i el nivell recessiu és "1".
  • En l'estat dominant, el voltatge de CAN_H és d'uns 3,5 V i el voltatge de CAN_L és d'uns 1,5 V. En estat recessiu, la tensió d’ambdues línies ronda els 2,5V.
  • El senyal és diferencial, és per això que CAN obté la seva robusta immunitat al soroll i la seva tolerància a fallades. El senyal diferencial equilibrat redueix l’acoblament del soroll i permet elevades taxes de senyalització per cable de parell trenat. El corrent en cada línia de senyal és igual, però en la direcció oposada i resulta en un efecte de cancel·lació de camp que és clau per a les baixes emissions de soroll. L’ús de receptors diferencials equilibrats i un cablejat de parell trenat millora el rebuig en mode comú i l’alta immunitat al soroll d’un bus CAN.

Transceptor CAN

El transceptor CAN és responsable de la conversió entre el nivell lògic i el senyal físic. Converteix un senyal lògic a un nivell diferencial o un senyal físic a un nivell lògic.

Controlador CAN

El controlador CAN és el component principal de CAN, que realitza totes les funcions de la capa d’enllaç de dades del protocol CAN i pot resoldre automàticament el protocol CAN.

MCU

La MCU és responsable del control del circuit de funcions i del controlador CAN. Per exemple, els paràmetres del controlador CAN s’inicialitzen quan s’inicia el node, la trama CAN es llegeix i s’envia a través del controlador CAN, etc.

Pas 2: Quant a les comunicacions de CAN

Quan el bus està inactiu, tots els nodes poden començar a enviar missatges (control multimestre). El node que accedeix primer al bus té dret a enviar (mode CSMA / CA). Quan diversos nodes comencen a enviar-se al mateix temps, el node que envia el missatge d'identificació d'alta prioritat té dret a enviar-lo.

Al protocol CAN, tots els missatges s’envien en un format fix. Quan el bus està inactiu, totes les unitats connectades al bus poden començar a enviar missatges nous. Quan més de dues cel·les comencen a enviar missatges alhora, la prioritat es determina en funció de l’identificador. L'identificador no representa l'adreça de destinació de l'enviament, sinó la prioritat del missatge que accedeix al bus. Quan més de dues cel·les comencen a enviar missatges al mateix temps, cada bit de la identificació sense interessos s’arbitra una per una. La unitat que guanya l'arbitratge pot continuar enviant missatges i la unitat que perd l'arbitratge deixa d'enviar immediatament i rep l'obra.

El bus CAN és un tipus de bus de transmissió. Això significa que tots els nodes poden "escoltar" totes les transmissions. tots els nodes capturaran invariablement tot el trànsit. El maquinari CAN proporciona un filtrat local perquè cada node reaccioni només als missatges interessants.

Pas 3: marcs

Marcs
Marcs

Els dispositius CAN envien dades a través de la xarxa CAN en paquets anomenats fotogrames. CAN té quatre tipus de marcs:

  • Marc de dades: un marc que conté dades de nodes per a la transmissió
  • Trama remota: una trama que sol·licita la transmissió d’un identificador específic
  • Fotograma d'error: un fotograma transmès per qualsevol node que detecta un error
  • Fotograma de sobrecàrrega: un fotograma per injectar un retard entre les dades o el fotograma remot

Marc de dades

Hi ha dos tipus de marcs de dades, estàndard i ampliat.

El significat dels camps de bits de la figura és:

  • SOF – El bit d’inici de trama únic dominant (SOF) marca l’inici del missatge i s’utilitza per sincronitzar els nodes d’un bus després d’estar inactiu.
  • Identificador: l’identificador CAN de 11 bits estàndard estableix la prioritat del missatge. Com més baix sigui el valor binari, més alta serà la seva prioritat.
  • RTR: bit de sol·licitud de transmissió remota única (RTR)
  • IDE: un bit d'extensió d'identificador únic dominant (IDE) significa que es transmet un identificador CAN estàndard sense extensió.
  • R0 – Bit reservat (per a un possible ús en futures modificacions estàndard).
  • DLC: el codi de longitud de dades de 4 bits (DLC) conté el nombre de bytes de dades que es transmeten.
  • Dades: es poden transmetre fins a 64 bits de dades de l'aplicació.
  • CRC – La comprovació de redundància cíclica (CRC) de 16 bits (15 bits més delimitador) conté la suma de comprovació (nombre de bits transmesos) de les dades de l'aplicació precedents per a la detecció d'errors.
  • ACK – ACK té 2 bits, un és el bit de confirmació i el segon és un delimitador.
  • EOF: aquest camp de 7 bits de final de fotograma (EOF) marca el final d'un fotograma CAN (missatge) i desactiva el farciment de bits, indicant un error de farciment quan és dominant. Quan es produeixen 5 bits del mateix nivell lògic successivament durant el funcionament normal, s'introdueix una mica del nivell lògic oposat a les dades.
  • IFS: aquest espai interframe de 7 bits (IFS) conté el temps requerit pel controlador per moure una trama rebuda correctament a la seva posició correcta en una àrea de memòria intermèdia de missatges.

Arbitratge

En estat inactiu del bus, la unitat que comença a enviar el missatge primer obté el dret d’enviament. Quan diverses unitats comencen a enviar-se al mateix temps, cada unitat d’enviament comença al primer bit del segment d’arbitratge. La unitat amb el major nombre de nivells dominants de sortida contínua pot continuar enviant.

Pas 4: velocitat i distància

Velocitat i distància
Velocitat i distància

El bus CAN és un bus que connecta diverses unitats alhora. Teòricament no hi ha límit al nombre total d’unitats que es poden connectar. A la pràctica, però, el nombre d'unitats que es poden connectar està limitat pel retard del bus i la càrrega elèctrica. Reduïu la velocitat de comunicació, augmenteu el nombre d’unitats que es poden connectar i augmenteu la velocitat de comunicació; disminueix el nombre d’unitats que es poden connectar.

La distància de comunicació està inversament relacionada amb la velocitat de comunicació i, com més lluny és, menor serà la velocitat de comunicació. La distància més llarga pot ser d’1 km o més, però la velocitat és inferior a 40kps.

Pas 5: maquinari

Maquinari
Maquinari

El mòdul CAN-BUS Maduino Zero és una eina desenvolupada per Makerfabs per a la comunicació CANbus; es basa en Arduino, amb el controlador CAN i l’emissor-receptor CAN, per crear un port CAN-bus llest per utilitzar.

  • MCP2515 és un controlador CAN autònom que implementa l'especificació CAN. És capaç de transmetre i rebre tant estàndard com ampliat de dades i fotogrames remots.
  • Les interfícies MAX3051 entre el controlador de protocol CAN i els cables físics de les línies de bus d'una xarxa d'àrea de controlador (CAN). El MAX3051 proporciona capacitat de transmissió diferencial al bus i capacitat de recepció diferencial al controlador CAN.

Pas 6: connexió

Connexió
Connexió

Connecteu el mòdul DHT11 al mòdul CAN-BUS Maduino Zero amb cables per utilitzar-lo com a instrument de suport a la comunicació CAN. De la mateixa manera, connecteu la pantalla al mòdul per rebre les dades i mostrar-les.

La connexió entre Maduino Zero CANBUS i DHT11 :

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DADES

La connexió entre Maduino Zero CANBUS i OLED :

Maduino Zero CANBUS - OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Utilitzeu un cable DB9 per connectar els dos mòduls Maduino Zero CANBUS.

Pas 7: Codi

El MAX3051 completa la conversió de nivells diferencials a senyals lògics. El MCP2515 completa la funció CAN, com ara la codificació i descodificació de dades. La MCU només ha d’inicialitzar el controlador i enviar i rebre dades.

  • Github:
  • Després d’instal·lar Arduino, no hi ha cap paquet que admeti la placa (Arduino zero) que calgui per instal·lar.
  • Seleccioneu eines -> Tauler -> Gestor de taules, cerqueu "Arduino zero" i instal·leu "Arduino SAMD Boards".
  • Seleccioneu Eines -> Tauler -> Arduino Zero (port USB natiu), seleccioneu Eines -> Port -> com …
  • Després d'obtenir el programa de GitHub, heu d'assegurar-vos que tots els fitxers es trobin al directori del projecte, que conté fitxers de biblioteca que admeten CANBUS.
  • Instal·leu la biblioteca de sensors DHT d’Adafruit, que s’utilitza per conduir el DHT11 per obtenir temperatura i humitat.
  • Utilitzeu diferents adreces per enviar temperatura i humitat per separat al codi Test_DHT11.ino.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

retard (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); retard (500);

"0x10" significa l'identificador del missatge, "0" és el marc estàndard mitjà, "stmp1.length ()" significa la longitud del missatge, "stmp_send1" són les dades enviades.

  • Al codi Test_OLED.ino, tots els missatges del CANBUS es reben per consulta i la informació requerida es mostra a l'OLED.
  • Carregueu el programa Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_DHT11 / Test_DHT11.ino al mòdul que s’ha connectat al sensor i Carregueu el programa Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_OLED / Test_OLED.ino a un altre mòdul connectat a l’OLED.

Pas 8: mostra

Espectacle
Espectacle
Espectacle
Espectacle

L'alimentació dels dos mòduls, la temperatura i la humitat es mostraran a la pantalla.

Recomanat: