Përmbajtje:

Një udhëzues i thjeshtë për CANBUS: 8 hapa
Një udhëzues i thjeshtë për CANBUS: 8 hapa

Video: Një udhëzues i thjeshtë për CANBUS: 8 hapa

Video: Një udhëzues i thjeshtë për CANBUS: 8 hapa
Video: BTT - Manta M8P - MainSailOS with EMMc 2024, Korrik
Anonim
Një mësim i thjeshtë për CANBUS
Një mësim i thjeshtë për CANBUS

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

Çfarë është CANBUS
Çfarë është CANBUS
Çfarë është CANBUS
Ç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

Korniza
Korniza

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

Shpejtësia dhe Distanca
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

Hardware
Hardware

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

Lidhje
Lidhje

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

Shfaqje
Shfaqje
Shfaqje
Shfaqje

Fuqia në dy modulet, temperatura dhe lagështia do të shfaqen në ekran.

Recommended: