Indholdsfortegnelse:
- Trin 1: Hvad er CANBUS
- Trin 2: Om CAN -kommunikation
- Trin 3: Rammer
- Trin 4: Hastighed og afstand
- Trin 5: Hardware
- Trin 6: Tilslutning
- Trin 7: Kode
- Trin 8: Vis
Video: En simpel vejledning til CANBUS: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Jeg har studeret CAN i tre uger, og nu har jeg afsluttet nogle ansøgninger til validering af mine læringsresultater. I denne vejledning lærer du, hvordan du bruger Arduino til at implementere CANBUS -kommunikation. Hvis du har forslag, er du velkommen til at efterlade en besked.
Tilbehør:
Hardware:
- Maduino Zero CANBUS
- DHT11 temperatur- og luftfugtighedsmodul
- 1,3 "I2C OLED 128x64- Blå
- DB9 til DB9 kabel (hun til hun)
- Dupont Line
Software:
Arduino IDE
Trin 1: Hvad er CANBUS
Om CAN
CAN (Controller Area Network) er et serielt kommunikationsnetværk, der kan realisere distribueret realtidskontrol. Det er udviklet til bilindustrien til at erstatte det komplekse ledningsnet med en totrådsbus.
CAN -protokol definerer datalinklaget og en del af det fysiske lag i OSI -modellen.
CAN -protokollen er ISO -standardiseret med ISO11898 og ISO11519. ISO11898 er CAN højhastigheds kommunikationsstandarden med en kommunikationshastighed på 125 kbps-1 Mbps. ISO11519 er CAN lavhastigheds kommunikationsstandarden med en kommunikationshastighed på mindre end 125 kbps.
Her fokuserer vi på højhastigheds-CAN.
ISO-11898 beskriver, hvordan information videregives mellem enheder på et netværk og er i overensstemmelse med Open Systems Interconnection-modellen (OSI), der er defineret i form af lag. Den faktiske kommunikation mellem enheder forbundet med det fysiske medium er defineret af modellens fysiske lag
- Hver CAN -enhed, der er forbundet til bussen, kan kaldes en knude. Alle CAN -enheder er forbundet til en bus, der er afsluttet i hver ende med 120 Ω modstande for at danne et netværk. Bussen består af CAN_H og CAN_L linjer. CAN -controlleren bestemmer busniveauet baseret på forskellen i effektniveauet på begge ledninger. Busniveauer er opdelt i dominerende og recessive niveauer, som skal være et af dem. Afsenderen sender beskeden til modtageren ved at foretage en ændring på busniveau. Når den logiske linje "og" udføres på bussen, er det dominerende niveau "0", og det recessive niveau er "1".
- I den dominerende tilstand er spændingen for CAN_H omkring 3,5V og spændingen for CAN_L er omkring 1,5V. I recessiv tilstand er spændingen på begge linjer omkring 2,5V.
- Signalet er differentielt, og derfor udleder CAN sin robuste støjimmunitet og fejltolerance. Balanceret differentialesignal reducerer støjkobling og giver mulighed for høje signalhastigheder over snoet kabel. Strømmen i hver signallinje er ens, men i den modsatte retning og resulterer i en feltreducerende effekt, der er nøglen til lave støjemissioner. Brugen af afbalancerede differentielle modtagere og snoede par-kabler forbedrer common-mode afvisning og høj støjimmunitet i en CAN-bus.
CAN Transceiver
CAN -transceiveren er ansvarlig for konverteringen mellem det logiske niveau og det fysiske signal. Konverter et logisk signal til et differentielt niveau eller et fysisk signal til et logisk niveau.
CAN -controller
CAN -controlleren er kernekomponenten i CAN, som realiserer alle funktionerne i datalinklaget i CAN -protokollen og automatisk kan løse CAN -protokollen.
MCU
MCU'en er ansvarlig for styringen af funktionskredsløbet og CAN -controlleren. F.eks. Initialiseres CAN -controllerparametrene, når noden starter, CAN -rammen læses og sendes via CAN -controlleren osv.
Trin 2: Om CAN -kommunikation
Når bussen er inaktiv, kan alle noder begynde at sende meddelelser (multi-master kontrol). Den knude, der først får adgang til bussen, får ret til at sende (CSMA/CA -tilstand). Når flere noder begynder at sende på samme tid, får den node, der sender id -beskeden med høj prioritet, ret til at sende.
I CAN -protokollen sendes alle meddelelser i et fast format. Når bussen er inaktiv, kan alle enheder, der er forbundet til bussen, begynde at sende nye meddelelser. Når mere end to celler begynder at sende meddelelser på samme tid, bestemmes prioriteten baseret på identifikatoren. ID'et repræsenterer ikke afsenderens destinationsadresse, men snarere prioriteten for meddelelsen, der får adgang til bussen. Når mere end to celler begynder at sende meddelelser på samme tid, arbitreres hver bit af det rentefrie ID en efter en. Enheden, der vinder voldgiften, kan fortsætte med at sende meddelelser, og den enhed, der taber voldgiften, stopper straks med at sende og modtager arbejdet.
CAN -bussen er en broadcast -type bus. Det betyder, at alle noder kan 'høre' alle transmissioner. alle noder vil altid opfange al trafik. CAN -hardware giver lokal filtrering, så hver node kun reagerer på de interessante meddelelser.
Trin 3: Rammer
CAN -enheder sender data på tværs af CAN -netværket i pakker kaldet frames. CAN har fire rammetyper:
- Dataramme: en ramme, der indeholder nodedata til transmission
- Fjernramme: en ramme, der anmoder om transmission af en bestemt identifikator
- Fejlramme: en ramme transmitteret af enhver knude, der registrerer en fejl
- Overload frame: en ramme til at injicere en forsinkelse mellem data eller fjernramme
Dataramme
Der er to typer datarammer, standard og udvidet.
Betydningen af bitfelterne i figuren er:
- SOF - Den enkelt dominerende start af frame (SOF) bit markerer starten på meddelelsen og bruges til at synkronisere knuderne på en bus efter at have været inaktiv.
- Identifier-Standard CAN 11-bit identifikatoren fastlægger meddelelsens prioritet. Jo lavere binær værdi, jo højere prioritet.
- RTR - RTR -bit (single remote transmission request)
- IDE - En dominerende single ID -udvidelse (IDE) bit betyder, at en standard CAN -identifikator uden udvidelse transmitteres.
- R0 - Reserveret bit (til mulig brug ved fremtidig standardændring).
- DLC-4-bit datalængdekoden (DLC) indeholder antallet af bytes data, der overføres.
- Data - Op til 64 bit applikationsdata kan overføres.
- CRC-16-bit (15 bit plus afgrænsning) cyklisk redundanskontrol (CRC) indeholder kontrolsummen (antal bit overført) af de foregående applikationsdata til fejldetektering.
- ACK – ACK er 2 bit, den ene er kvitteringsbiten, og den anden er en afgrænsning.
- EOF-Denne ende-af-frame (EOF), 7-bit felt markerer afslutningen på en CAN-ramme (meddelelse) og deaktiverer bitstuffing, hvilket angiver en fyldningsfejl, når den er dominerende. Når 5 bits af det samme logiske niveau forekommer efter hinanden under normal drift, fyldes lidt af det modsatte logiske niveau i dataene.
- IFS-Dette 7-bit interframe-rum (IFS) indeholder den tid, som controlleren tager for at flytte en korrekt modtaget ramme til sin korrekte position i et meddelelsesbufferområde.
Voldgift
I busens inaktiv tilstand får den enhed, der begynder at sende meddelelsen, først afsendelsesretten. Når flere enheder begynder at sende på samme tid, starter hver afsendelsesenhed ved den første bit af voldgiftssegmentet. Enheden med det største antal kontinuerlige output dominerende niveauer kan fortsat sende.
Trin 4: Hastighed og afstand
CAN -bussen er en bus, der forbinder flere enheder på samme tid. Der er teoretisk set ingen grænse for det samlede antal enheder, der kan tilsluttes. I praksis er antallet af enheder, der kan tilsluttes, imidlertid begrænset af tidsforsinkelsen på bussen og den elektriske belastning. Reducer kommunikationshastigheden, øg antallet af enheder, der kan tilsluttes, og øg kommunikationshastigheden, antallet af enheder, der kan tilsluttes, falder.
Kommunikationsafstanden er omvendt relateret til kommunikationshastigheden, og jo længere kommunikationsafstanden er, jo mindre er kommunikationshastigheden. Den længere afstand kan være 1 km eller mere, men hastigheden er mindre end 40 kps.
Trin 5: Hardware
Maduino Zero CAN-BUS-modul er et værktøj udviklet af Makerfabs til CANbus-kommunikation-det er baseret på Arduino med CAN-controlleren og CAN-transceiveren til at oprette en klar CAN-busport.
- MCP2515 er en enkeltstående CAN-controller, der implementerer CAN-specifikationen. Det er i stand til at transmittere og modtage både standard og udvidede data og eksterne rammer.
- MAX3051 grænseflader mellem CAN -protokolstyringen og de fysiske ledninger på buslinjerne i et controller -område netværk (CAN). MAX3051 giver mulighed for differentiel overførsel til bussen og differentiel modtagelse til CAN -controlleren.
Trin 6: Tilslutning
Tilslut DHT11-modulet til Maduino Zero CAN-BUS-modulet med ledninger, der skal bruges som et instrument til understøttelse af CAN-kommunikation. Tilslut på samme måde skærmen til modulet for at modtage dataene og vise dem.
Forbindelsen mellem Maduino Zero CANBUS og DHT11:
Maduino Zero CANBUS - DHT11
3v3 ------ VCC GND ------ GND D10 ------ DATA
Forbindelsen mellem Maduino Zero CANBUS og OLED:
Maduino Zero CANBUS - OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
Brug et DB9 -kabel til at forbinde de to Maduino Zero CANBUS -moduler.
Trin 7: Kode
MAX3051 fuldender konverteringen af differentialniveauer til logiske signaler. MCP2515 fuldender CAN -funktion såsom datakodning og dekodning. MCU'en behøver kun at initialisere controlleren og sende og modtage data.
- Github:
- Efter installeret Arduino er der ingen pakke til understøttelse af kortet (Arduino zero), der skal installeres.
- Vælg værktøjer -> Board -> Board Manager, søg "Arduino zero" og installer "Arduino SAMD Boards".
- Vælg Værktøjer -> Kort -> Arduino Zero (Native USB -port), vælg Værktøjer -> Port -> kom …
- Når du har hentet programmet fra GitHub, skal du sikre dig, at alle filer er i projektmappen, som indeholder biblioteksfiler, der understøtter CANBUS.
- Installer DHT -sensorbiblioteket fra Adafruit, som bruges til at drive DHT11 for at opnå temperatur og fugtighed.
- Brug forskellige adresser til at sende temperatur og fugtighed separat i koden Test_DHT11.ino.
CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);
forsinkelse (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); forsinkelse (500);
"0x10" betyder meddelelses -ID, "0" er standardramme, "stmp1.length ()" betyder meddelelsens længde, "stmp_send1" er de data, der sendes.
- I koden Test_OLED.ino modtages alle meddelelser på CANBUS ved forespørgsel, og de nødvendige oplysninger vises på OLED.
- Upload programmet Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino til det modul, der er forbundet til sensoren, og Upload programmet Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino til et andet modul, der er forbundet til OLED.
Trin 8: Vis
Tænd for de to moduler, temperatur og fugtighed vises på displayet.
Anbefalede:
Sådan oprettes en simpel webside ved hjælp af parenteser til begyndere: 14 trin
Sådan opretter du en simpel webside ved hjælp af parenteser til begyndere: Introduktion Følgende instruktioner giver trin for trin vejledning til at oprette en webside ved hjælp af parenteser. Brackets er en kildekode -editor med et primært fokus på webudvikling. Oprettet af Adobe Systems, er det gratis og open-source software licenseret
Sådan laver du en simpel Spiderbot til Halloween: 4 trin (med billeder)
Sådan laver du en simpel Spiderbot til Halloween: Dette er en simpel, sjov børstehare til Halloween! Bristlebots er gode startprojekter for folk, der lærer det grundlæggende i kredsløb og robotkonstruktion. Brug af hovedet på en tandbørste til kroppen, en lille motor til at give bevægelsen og et batteri
Udskiftning af batteri til iPhone 6 Plus: Vejledning til udskiftning af det interne batteri: 12 trin (med billeder)
Udskiftning af batteri til iPhone 6 Plus: Vejledning i udskiftning af det interne batteri: Hej fyre, jeg lavede en iPhone 6 -batteri til udskiftning af batterier for noget tid siden, og det syntes at have hjulpet mange mennesker, så her er en vejledning til iPhone 6+. IPhone 6 og 6+ har stort set den samme konstruktion bortset fra den indlysende størrelsesforskel. Der er
En simpel trykmålingsenhed til uddannelsesformål: 4 trin
En simpel trykmålingsenhed til uddannelsesformål: Nedenfor finder du byggevejledninger til en meget enkel og let at bygge enhed til at lege med trykmålinger. Det kan være brugbart til skoler eller andre STEM -relaterede projekter om gaslove, men kan også tilpasses til at blive integreret i anden enhed
Sådan skriver du en simpel drivlinje til FRC (Java): 12 trin (med billeder)
Sådan skriver du et simpelt drivværk til FRC (Java): Dette er en vejledning i, hvordan du laver et simpelt drivværk til en FRC -robot. Denne vejledning forudsætter, at du ved, at det grundlæggende i java, eclipse og allerede har wpilib installeret, samt CTRE -biblioteker