
Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-23 15:10

Unë kam studiuar CAN për tre javë, dhe tani kam përfunduar disa aplikacione për të vërtetuar rezultatet e mia të të mësuarit. Në këtë tutorial, do të mësoni se si të përdorni Arduino për të zbatuar komunikimin CANBUS. Nëse keni ndonjë sugjerim, mirëpriteni të lini një mesazh.
Furnizimet:
Hardware:
- Maduino Zero CANBUS
- Moduli i Temperaturës dhe Lagështisë DHT11
- 1.3 "I2C OLED 128x64- Blu
- Kabllo DB9 në DB9 (femër në femër)
- Dupont Line
Softuer:
Arduino IDE
Hapi 1: Çfarë është CANBUS


Rreth CAN
CAN (Controller Area Network) është një rrjet komunikimi serik që mund të realizojë kontroll të shpërndarë në kohë reale. Shtë zhvilluar për industrinë e automobilave për të zëvendësuar parzmore komplekse të telave me një autobus me dy tela.
Protokolli CAN përcakton Shtresën e Lidhjes së të Dhënave dhe një pjesë të Shtresës Fizike në modelin OSI.
Protokolli CAN është i standardizuar ISO me ISO11898 dhe ISO11519. ISO11898 është standardi i komunikimit CAN me shpejtësi të lartë me një shpejtësi komunikimi prej 125kbps-1Mbps. ISO11519 është standardi i komunikimit CAN me shpejtësi të ulët me një shpejtësi komunikimi më të vogël se 125kbps.
Këtu ne fokusohemi në CAN me shpejtësi të lartë.
ISO-11898 përshkruan se si transmetohet informacioni midis pajisjeve në një rrjet dhe përputhet me modelin e Ndërlidhjes të Sistemeve të Hapura (OSI) që përcaktohet në terma të shtresave. Komunikimi aktual midis pajisjeve të lidhura nga mjedisi fizik përcaktohet nga shtresa fizike e modelit
- Çdo njësi CAN e lidhur me autobusin mund të quhet nyje. Të gjitha njësitë CAN janë të lidhura me një autobus të përfunduar në secilin fund me rezistorë 120 Ω për të formuar një rrjet. Autobusi përbëhet nga linjat CAN_H dhe CAN_L. Kontrolluesi CAN përcakton nivelin e autobusit bazuar në ndryshimin në nivelin e fuqisë në të dy telat. Nivelet e autobusëve ndahen në nivele dominuese dhe recesive, të cilat duhet të jenë një prej tyre. Dërguesi i dërgon mesazhin marrësit duke bërë një ndryshim në nivelin e autobusit. Kur vija logjike "dhe" ekzekutohet në autobus, niveli dominues është "0" dhe niveli recesiv është "1".
- Në gjendjen dominuese, tensioni i CAN_H është rreth 3.5V dhe tensioni i CAN_L është rreth 1.5V. Në gjendjen recesive, tensioni i të dy linjave është rreth 2.5V.
- Sinjali është diferencial, kjo është arsyeja pse CAN nxjerr imunitetin e tij të fortë ndaj zhurmës dhe tolerancën ndaj gabimeve. Sinjali diferencial i ekuilibruar zvogëlon bashkimin e zhurmës dhe lejon shkallë të larta sinjalizimi mbi kabllon me çift të përdredhur. Rryma në secilën linjë sinjali është e barabartë, por në drejtim të kundërt dhe rezulton në një efekt anulimi të fushës që është çelësi për emetimet e ulëta të zhurmës. Përdorimi i marrësve diferencialë të balancuar dhe kabllove me çift të përdredhur rrit refuzimin e mënyrës së zakonshme dhe imunitetin e lartë të zhurmës të një autobusi CAN.
CAN transmetues
Transmetuesi CAN është përgjegjës për shndërrimin midis nivelit logjik dhe sinjalit fizik. Shndërroni një sinjal logjik në një nivel diferencial ose një sinjal fizik në një nivel logjik.
Kontrolluesi CAN
Kontrolluesi CAN është komponenti kryesor i CAN, i cili realizon të gjitha funksionet e shtresës së lidhjes së të dhënave në protokollin CAN dhe mund të zgjidhë automatikisht protokollin CAN.
MCU
MCU është përgjegjës për kontrollin e qarkut të funksionit dhe kontrolluesin CAN. Për shembull, parametrat e kontrolluesit CAN inicializohen kur nyja fillon, korniza CAN lexohet dhe dërgohet përmes kontrolluesit CAN, etj.
Hapi 2: Rreth Komunikimeve CAN
Kur autobusi është i papunë, të gjitha nyjet mund të fillojnë të dërgojnë mesazhe (kontroll multi-master). Nyja që së pari hyn në autobus merr të drejtën e dërgimit (modaliteti CSMA/CA). Kur nyjet e shumta fillojnë të dërgojnë në të njëjtën kohë, nyja që dërgon mesazhin e ID me përparësi të lartë merr të drejtën për të dërguar.
Në protokollin CAN, të gjitha mesazhet dërgohen në një format fiks. Kur autobusi është i papunë, të gjitha njësitë e lidhura me autobusin mund të fillojnë të dërgojnë mesazhe të reja. Kur më shumë se dy qeliza fillojnë të dërgojnë mesazhe në të njëjtën kohë, përparësia përcaktohet bazuar në identifikuesin. ID nuk përfaqëson adresën e destinacionit të dërguesit, por përparësinë e mesazhit që hyn në autobus. Kur më shumë se dy qeliza fillojnë të dërgojnë mesazhe në të njëjtën kohë, secila pjesë e ID-së pa interes arbitrohet një nga një. Njësia që fiton arbitrimin mund të vazhdojë të dërgojë mesazhe, dhe njësia që humbet arbitrazhin ndalon menjëherë dërgimin dhe merr punën.
Autobusi CAN është një lloj autobusi transmetues. Kjo do të thotë që të gjitha nyjet mund të "dëgjojnë" të gjitha transmetimet. të gjitha nyjet do të kapin pa ndryshim të gjithë trafikun. Pajisja CAN siguron filtrim lokal në mënyrë që secila nyje të reagojë vetëm ndaj mesazheve interesante.
Hapi 3: Kornizat

Pajisjet CAN dërgojnë të dhëna në të gjithë rrjetin CAN në pako të quajtura korniza. CAN ka katër lloje kornizash:
- Korniza e të dhënave: një kornizë që përmban të dhëna nyje për transmetim
- Korniza në distancë: një kornizë që kërkon transmetimin e një identifikuesi specifik
- Korniza e gabimit: një kornizë e transmetuar nga çdo nyje që zbulon një gabim
- Korniza e mbingarkesës: një kornizë për të injektuar një vonesë midis të dhënave ose kornizës në distancë
Korniza e të dhënave
Ekzistojnë dy lloje të kornizave të të dhënave, standarde dhe të zgjeruara.
Kuptimi i fushave bit të Figurës janë:
- SOF - Bit -i i vetëm dominues i kornizës (SOF) shënon fillimin e mesazhit dhe përdoret për të sinkronizuar nyjet në një autobus pasi të jetë i papunë.
- Identifikuesi-Identifikuesi Standard CAN 11-bit përcakton përparësinë e mesazhit. Sa më e ulët vlera binare, aq më i lartë është përparësia e saj.
- RTR - Biti i vetëm i kërkesës për transmetim në distancë (RTR)
- IDE - Një bit dominues i zgjerimit të identifikuesit të vetëm (IDE) do të thotë që një identifikues standard CAN pa shtrirje po transmetohet.
- R0 - Bit i rezervuar (për përdorim të mundshëm nga ndryshimet standarde të ardhshme).
- DLC-Kodi i gjatësisë së të dhënave 4-bit (DLC) përmban numrin e bajtëve të të dhënave që transmetohen.
- Të dhëna - Mund të transmetohen deri në 64 bit të të dhënave të aplikacionit.
- CRC-Kontrolli ciklik i tepricës 16-bit (15 bit plus delimiter) i tepërt (CRC) përmban grupin kontrollues (numrin e bitëve të transmetuar) të të dhënave të aplikacionit të mëparshëm për zbulimin e gabimit.
- ACK – ACK është 2 bit, njëra është biti i njohjes dhe i dyti është një kufizues.
- EOF-Kjo fushë e fundit e kornizës (EOF), 7-bit shënon fundin e një kornize CAN (mesazh) dhe çaktivizon mbushjen e bitit, duke treguar një gabim të mbushjes kur është dominues. Kur 5 bit të të njëjtit nivel logjike ndodhin njëra pas tjetrës gjatë funksionimit normal, pak nga niveli logjik i kundërt futet në të dhëna.
- IFS-Kjo hapësirë ndër-kornizë 7-bit (IFS) përmban kohën e kërkuar nga kontrolluesi për të lëvizur një kornizë të marrë saktë në pozicionin e tij të duhur në një zonë tampon mesazhesh.
Arbitrazhi
Në gjendjen boshe të autobusit, njësia që fillon të dërgojë mesazhin së pari merr të drejtën e dërgimit. Kur njësi të shumta fillojnë të dërgojnë në të njëjtën kohë, secila njësi dërguese fillon në pjesën e parë të segmentit të arbitrazhit. Njësia me numrin më të madh të niveleve dominuese të prodhimit të vazhdueshëm mund të vazhdojë të dërgojë.
Hapi 4: Shpejtësia dhe Distanca

Autobusi CAN është një autobus që lidh njësi të shumta në të njëjtën kohë. Teorikisht nuk ka kufi për numrin e përgjithshëm të njësive që mund të lidhen. Sidoqoftë, në praktikë, numri i njësive që mund të lidhen është i kufizuar nga vonesa kohore në autobus dhe ngarkesa elektrike. Ulja e shpejtësisë së komunikimit, rritja e numrit të njësive që mund të lidhen dhe rritja e shpejtësisë së komunikimit, numri i njësive që mund të lidhen zvogëlohet.
Distanca e komunikimit lidhet në mënyrë të kundërt me shpejtësinë e komunikimit, dhe sa më larg distanca e komunikimit, aq më e vogël është shpejtësia e komunikimit. Distanca më e gjatë mund të jetë 1km ose më shumë, por shpejtësia është më pak se 40kps.
Hapi 5: Pajisje kompjuterike

Moduli Maduino Zero CAN-BUS është një mjet i zhvilluar nga Makerfabs për komunikimin CANbus-është i bazuar në Arduino, me kontrolluesin CAN dhe transmetuesin CAN, për të krijuar një port CAN-bus të gatshëm për përdorim.
- MCP2515 është një kontrollues CAN i vetëm që zbaton specifikimet CAN. Shtë i aftë të transmetojë dhe të marrë të dhëna standarde dhe të zgjeruara dhe korniza të largëta.
- MAX3051 ndërfaqet midis kontrolluesit të protokollit CAN dhe telave fizikë të linjave të autobusëve në një rrjet të zonës së kontrolluesit (CAN). MAX3051 siguron aftësi diferenciale të transmetimit në autobus dhe aftësi diferenciale të marrjes në kontrolluesin CAN.
Hapi 6: Lidhja

Lidhni modulin DHT11 me modulin Maduino Zero CAN-BUS me tela për t'u përdorur si një instrument për të mbështetur komunikimin CAN. Në mënyrë të ngjashme, lidhni ekranin me modulin për të marrë të dhënat dhe për t'i shfaqur ato.
Lidhja midis Maduino Zero CANBUS dhe DHT11
Maduino Zero CANBUS - DHT11
3v3 ------ VCC GND ------ GND D10 ------ T D DHNA
Lidhja midis Maduino Zero CANBUS dhe OLED
Maduino Zero CANBUS - OLED
3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA
Përdorni një kabllo DB9 për të lidhur dy modulet Maduino Zero CANBUS.
Hapi 7: Kodi
MAX3051 përfundon shndërrimin e niveleve diferenciale në sinjale logjike. MCP2515 përfundon funksionin CAN siç është kodimi dhe dekodimi i të dhënave. MCU duhet vetëm të inicializojë kontrolluesin dhe të dërgojë dhe të marrë të dhëna.
- Github:
- Pas instalimit të Arduino, nuk ka paketë për të mbështetur bordin (Arduino zero) që nevojitet për t'u instaluar.
- Zgjidhni mjetet -> Bordi -> Menaxheri i Bordit, kërkoni "Arduino zero" dhe instaloni "Arduino SAMD Boards".
- Zgjidhni Mjetet -> Bordi -> Arduino Zero (Porti Native USB), zgjidhni Mjetet -> Porti -> com…
- Pasi të keni marrë programin nga GitHub, duhet të siguroheni që të gjithë skedarët janë në drejtorinë e projektit, e cila përmban skedarë bibliotekash që mbështesin CANBUS.
- Instaloni bibliotekën e sensorit DHT nga Adafruit, e cila përdoret për të drejtuar DHT11 për të marrë temperaturën dhe lagështinë.
- Përdorni adresa të ndryshme për të dërguar temperaturën dhe lagështinë veç e veç në kodin Test_DHT11.ino.
CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);
vonesë (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); vonesë (500);
"0x10" nënkupton ID -në e mesazhit, "0" është kornizë standarde mesatare, "stmp1.length ()" nënkupton gjatësinë e mesazhit, "stmp_send1" janë të dhënat e dërguara.
- Në kodin Test_OLED.ino, të gjitha mesazhet në CANBUS merren me pyetje dhe informacioni i kërkuar shfaqet në OLED.
- Ngarko programin Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino në modulin që lidhet me sensorin, dhe Ngarko programin Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino në një modul tjetër.
Hapi 8: Trego


Fuqia në dy modulet, temperatura dhe lagështia do të shfaqen në ekran.
Recommended:
Altoparlantët HiFi - një udhëzues për një ndërtim të klasit të parë: 8 hapa (me fotografi)

Altoparlantët HiFi - një udhëzues për një ndërtim të klasit të parë: Vendosa ta shkruaj këtë Instructable pasi shpenzova shumë kohë duke u përpjekur për të gjetur informacion të cilësisë së mirë, të plotë për ndërtimin e dollapëve të altoparlantëve HiFi që nuk merrnin përvojë ose ekspertizë të gjerë. Ka disa udhëzime të shkëlqyera alrea
Udhëzues i thjeshtë për RIPARIMIN e kufjeve të thyera BOSE QC25 - JO Zë nga një vesh: 5 hapa (me fotografi)

Udhëzues i thjeshtë për RIPARIMIN e Kufjeve të Thyera BOSE QC25 - JO Zë Nga Një Vesh: Bose është i mirënjohur për kufjet e tyre, dhe veçanërisht për formacionin e tyre aktiv të anulimit të zhurmës. Herën e parë që vendosa një palë QuietComfort 35 në një dyqan elektronik, u mahnita nga heshtja që ata mund të krijojnë. Megjithatë, unë kisha shumë gënjeshtra
Një udhëzues i thjeshtë për fotografinë: 4 hapa

Një udhëzues i thjeshtë për fotografinë: Sot do të flasim për disa nga cilësimet kryesore në një aparat dslr që duhet të dini. Nëse e dini këtë, mund t'i çoni fotot tona në nivelin tjetër duke përdorur modalitetin manual
Udhëzues: Si të bëni një sensor të thjeshtë të temperaturës duke përdorur DS18B20 dhe Arduino UNO: 3 hapa

Udhëzues: Si të bëni një sensor të thjeshtë të temperaturës duke përdorur DS18B20 dhe Arduino UNO: Përshkrimi: Ky udhëzues do t'ju tregojë disa hapa të thjeshtë se si ta bëni sensorin e temperaturës funksionale. Duhen vetëm disa minuta për ta bërë të vërtetë në projektin tuaj. Paç fat ! Termometri dixhital DS18B20 siguron tempera 9-bit deri në 12-bit Celsius
MakeyMakey - Udhëzues i thjeshtë dhe si funksionon! Marrja e një Piano !: 6 hapa

MakeyMakey - Tutorial i lehtë dhe si funksionon! Marrja e një Piano !: * Paralajmërim paraprakisht * Unë i bëra fotografitë me telefonin tim dhe pastaj fotografova telefonin tim me kompjuterin tim, më falni paraprakisht për cilësinë e tmerrshme të fotografisë: Projekti i prezantimit të MakeyMakey, së bashku me mënyrën se si funksionon disa prej tyre Me Duke bërë një piano nga