Taula de continguts:
- Pas 1: què és CANBUS
- Pas 2: Quant a les comunicacions de CAN
- Pas 3: marcs
- Pas 4: velocitat i distància
- Pas 5: maquinari
- Pas 6: connexió
- Pas 7: Codi
- Pas 8: mostra
Vídeo: Un tutorial senzill per a CANBUS: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
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
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
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
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
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ó
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
L'alimentació dels dos mòduls, la temperatura i la humitat es mostraran a la pantalla.
Recomanat:
Un suport senzill per a un levitador acústic MiniLev: 12 passos (amb imatges)
Un suport senzill per a un levitador acústic MiniLev: aquest projecte no seria possible amb el sorprenent projecte que va crear el Dr. Asier Marzo. https://www.instructables.com/Acoustic-Levitator/ Com tots els bons projectes, aquest va començar de manera senzilla i va créixer a mesura que passava el temps. Després de llegir el doctor Marzo intracta
LED USB senzill (i altres coses) de bricolatge senzill i senzill: 16 passos
LED USB (s) senzills i senzills de bricolatge barats (i altres coses): Hola i benvinguts a la meva primera instrucció :) Aposto a que estem configurant i repoblant els espais dels nostres creadors una vegada més després del virus, així que crec que ja és hora que els creadors tots hem après a fabricar els nostres propis USB en lloc de dependre de bateries fàcilment esgotables
Tutorial: Com fer un sensor de temperatura senzill mitjançant DS18B20 i Arduino UNO: 3 passos
Tutorial: Com fer un sensor de temperatura simple mitjançant DS18B20 i Arduino UNO: Descripció: Aquest tutorial us mostrarà uns quants passos senzills sobre com fer que el sensor de temperatura funcioni. Només trigareu uns minuts a fer-vos realitat al vostre projecte. Bona sort ! El termòmetre digital DS18B20 proporciona una temperatura Celsius de 9 a 12 bits
Resistor de detecció de força (FSR) Arduino Tutorial senzill: 8 passos
Resistor de detecció de força (FSR) Arduino Tutorial simple: En aquest tutorial aprendrem com detectar la força aplicada a la resistència de detecció de força (FSR) i mostrar-la a la pantalla OLED + establirem els límits amb un LED verd i un vermell .Mira un vídeo de demostració
Fons de pantalla senzill amb fotografia i barreja de capes - Tutorial de Photoshop: 5 passos
Fons de pantalla senzill amb fotografia i barreja de capes: tutorial de Photoshop: feu un fons de pantalla visualment impressionant amb una tècnica senzilla a Photoshop. Qualsevol persona pot fer un fons de pantalla tan bo i és molt més fàcil del que es podria pensar. Per tant, primer heu d'anar a File > Nou Configureu l'amplada i l'alçada a píxels i configureu-los a th