Sisukord:

Lihtne õpetus CANBUS -i jaoks: 8 sammu
Lihtne õpetus CANBUS -i jaoks: 8 sammu

Video: Lihtne õpetus CANBUS -i jaoks: 8 sammu

Video: Lihtne õpetus CANBUS -i jaoks: 8 sammu
Video: LIHTNE ÕPETUS: Müts-sallile tuti kinnitamine | Breden Kids 2019 2024, Juuli
Anonim
Lihtne õpetus CANBUS -i jaoks
Lihtne õpetus CANBUS -i jaoks

Olen õppinud CANi kolm nädalat ja nüüd olen täitnud mõned rakendused oma õpitulemuste kinnitamiseks. Selles õpetuses saate teada, kuidas kasutada Arduinot CANBUS -side rakendamiseks. Kui teil on ettepanekuid, oodake sõnumi jätmist.

Tarvikud:

Riistvara:

  • Maduino Zero CANBUS
  • DHT11 temperatuuri ja niiskuse moodul
  • 1,3 "I2C OLED 128x64- sinine
  • DB9 kuni DB9 kaabel (naissoost naissoost)
  • Dupont Line

Tarkvara:

Arduino IDE

Samm: mis on CANBUS

Mis on CANBUS
Mis on CANBUS
Mis on CANBUS
Mis on CANBUS

CANi kohta

CAN (Controller Area Network) on jadaühendusvõrk, mis suudab teostada hajutatud reaalajas juhtimist. See on välja töötatud autotööstusele keeruka juhtmestiku asendamiseks kahejuhtmelise bussiga.

CAN -protokoll määratleb OSI mudeli andmelinkikihi ja osa füüsilisest kihist.

CAN -protokoll on standarditud ISO -standarditega ISO11898 ja ISO11519. ISO11898 on CAN-i kiire kommunikatsioonistandard, mille side kiirus on 125kbps-1Mbps. ISO11519 on CAN madala kiirusega kommunikatsioonistandard, mille side kiirus on alla 125 kbps.

Siin keskendume kiirele CAN-ile.

ISO-11898 kirjeldab, kuidas teavet edastatakse võrgus olevate seadmete vahel ja see vastab kihtide järgi määratletud avatud süsteemide sidumismudelile (OSI). Tegeliku suhtluse füüsilise andmekandjaga ühendatud seadmete vahel määrab mudeli füüsiline kiht

  • Iga siiniga ühendatud CAN -seadet võib nimetada sõlmeks. Kõik CAN -seadmed on võrgu moodustamiseks ühendatud siiniga, mille mõlemas otsas on 120 Ω takisti. Buss koosneb liinidest CAN_H ja CAN_L. CAN -kontroller määrab siinitaseme, lähtudes mõlema juhtme võimsustaseme erinevusest. Bussitasemed on jagatud domineerivateks ja retsessiivseteks, mis peavad olema üks neist. Saatja saadab sõnumi vastuvõtjale, tehes siinitasemel muudatuse. Kui siinil täidetakse loogiline rida "ja", on domineeriv tase "0" ja retsessiivne tase "1".
  • Valitsevas seisundis on CAN_H pinge umbes 3,5 V ja CAN_L pinge on umbes 1,5 V. Retsessiivses olekus on mõlema liini pinge umbes 2,5 V.
  • Signaal on diferentsiaal, mistõttu saab CAN oma tugeva müratundlikkuse ja tõrketaluvuse. Tasakaalustatud diferentsiaalsignaal vähendab müraühendust ja võimaldab keerdpaarkaabli puhul kõrgeid signaaliülekandeid. Vool igas signaaliliinis on võrdne, kuid vastupidises suunas ning selle tulemuseks on väljade tühistamise efekt, mis on madala mürataseme võti. Tasakaalustatud diferentsiaalvastuvõtjate ja keerdpaarkaablite kasutamine suurendab CAN-siinide ühisrežiimi tagasilükkamist ja kõrge mürataluvust.

CAN transiiver

CAN transiiver vastutab loogilise taseme ja füüsilise signaali vahelise teisendamise eest. Teisendage loogiline signaal diferentsiaalseks või füüsiline signaal loogiliseks.

CAN -kontroller

CAN -kontroller on CAN -i põhikomponent, mis realiseerib kõik CAN -protokolli andmesidekihi funktsioonid ja suudab automaatselt CAN -protokolli lahendada.

MCU

MCU vastutab funktsiooniahela ja CAN -kontrolleri juhtimise eest. Näiteks lähtestatakse sõlme käivitamisel CAN -kontrolleri parameetrid, loetakse CAN -kaadrit ja saadetakse see läbi CAN -kontrolleri jne.

2. samm. Teave CAN -kommunikatsiooni kohta

Kui siin on jõude, võivad kõik sõlmed hakata sõnumeid saatma (mitme juhtimise juhtimine). Sõlm, mis siseneb esmalt siinile, saab saatmisõiguse (CSMA/CA režiim). Kui mitu sõlme hakkavad korraga saatma, saab kõrge prioriteediga ID -sõnumi saatva sõlme saatmisõiguse.

CAN -protokollis saadetakse kõik sõnumid fikseeritud vormingus. Kui buss on jõude, saavad kõik siiniga ühendatud seadmed hakata uusi sõnumeid saatma. Kui rohkem kui kaks lahtrit hakkavad korraga sõnumeid saatma, määratakse prioriteet identifikaatori alusel. ID ei esinda saatmise sihtkoha aadressi, vaid pigem siinile ligipääsva sõnumi prioriteeti. Kui rohkem kui kaks lahtrit hakkavad korraga sõnumeid saatma, otsustatakse intressivaba ID iga bit ükshaaval. Vahekohtu võitnud üksus saab sõnumeid edasi saata ning vahekohtu kaotanud üksus lõpetab kohe saatmise ja võtab töö vastu.

CAN -siin on leviedastusbuss. See tähendab, et kõik sõlmed kuulevad kõiki edastusi. kõik sõlmed võtavad alati kogu liikluse vastu. CAN -riistvara pakub kohalikku filtreerimist, nii et iga sõlm võib reageerida ainult huvitavatele sõnumitele.

3. samm: raamid

Raamid
Raamid

CAN -seadmed saadavad andmeid kogu CAN -võrgu kaudu pakettidena, mida nimetatakse kaadriteks. CAN -il on neli raami tüüpi:

  • Andmeraam: raam, mis sisaldab edastamiseks sõlmeandmeid
  • Kaugraam: raam, mis nõuab konkreetse identifikaatori edastamist
  • Vigaraam: kaader, mille mis tahes sõlm edastab, tuvastades tõrke
  • Ülekoormusraam: kaader andmete või kaugraami vahele viivituse sisestamiseks

Andmeraam

Andmeraame on kahte tüüpi - standardne ja laiendatud.

Joonise bitiväljade tähendus on järgmine:

  • SOF - kaadri üks domineeriv algus (SOF) bit tähistab sõnumi algust ja seda kasutatakse bussi sõlmede sünkroonimiseks pärast jõudeolekut.
  • Identifier-standardne CAN 11-bitine identifikaator määrab sõnumi prioriteedi. Mida madalam on binaarne väärtus, seda suurem on selle prioriteet.
  • RTR - üksainus kaugülekande päringu (RTR) bitt
  • IDE - domineeriv ühe identifikaatori laiendi (IDE) bitt tähendab, et edastatakse standardset CAN -identifikaatorit ilma laiendita.
  • R0 - reserveeritud bitt (võimalikuks kasutamiseks tulevaste standardmuudatuste korral).
  • DLC-4-bitine andmepikkuse kood (DLC) sisaldab edastatavate andmete baitide arvu.
  • Andmed - edastada saab kuni 64 bitti rakenduse andmeid.
  • CRC-16-bitine (15 bitti pluss eraldaja) tsükliline koondamise kontroll (CRC) sisaldab eelmiste rakenduse andmete kontrollsummat (edastatud bittide arvu) vigade tuvastamiseks.
  • ACK - ACK on 2 bitti, üks on kinnitusbitt ja teine eraldaja.
  • EOF-see kaadri lõppu (EOF), 7-bitine väli tähistab CAN-kaadri (sõnumi) lõppu ja keelab bitstuffing'i, mis näitab domineerimise ajal täitmisviga. Kui tavalise töö ajal ilmub järjestikku 5 sama loogikataseme bitti, topitakse andmetesse natuke vastupidist loogikataset.
  • IFS-see 7-bitine kaadritevaheline ruum (IFS) sisaldab aega, mis kulub kontrolleril õigesti vastuvõetud kaadri viimiseks sõnumipuhvrialal õigesse kohta.

Arbitraaž

Siini jõudeolekus saab üksus, kes alustab sõnumi saatmist, kõigepealt saatmisõiguse. Kui mitu üksust hakkavad korraga saatma, algab iga saatja üksus vahekohtu segmendi esimesest bitist. Üksus, millel on suurim arv pideva väljundi domineerivaid tasemeid, võib jätkata saatmist.

Samm: kiirus ja vahemaa

Kiirus ja kaugus
Kiirus ja kaugus

CAN -siin on buss, mis ühendab korraga mitu seadet. Ühendatavate üksuste koguarvul pole teoreetiliselt mingeid piiranguid. Praktikas aga piirab ühendatavate üksuste arvu siini ajaline viivitus ja elektrikoormus. Vähendage side kiirust, suurendage ühendatavate üksuste arvu ja suurendage side kiirust, ühendatavate üksuste arv väheneb.

Sidekaugus on pöördvõrdeliselt seotud side kiirusega ja mida kaugemal on sidekaugus, seda väiksem on side kiirus. Pikem vahemaa võib olla 1 km või rohkem, kuid kiirus on alla 40 kps.

Samm: riistvara

Riistvara
Riistvara

Maduino Zero CAN-BUS moodul on tööriist, mille Makerfabs on välja töötanud CANbus-side jaoks-see põhineb Arduino-l koos CAN-kontrolleri ja CAN-transiiveriga, et luua kasutusvalmis CAN-siiniport.

  • MCP2515 on eraldiseisev CAN-kontroller, mis rakendab CAN-spetsifikatsiooni. See on võimeline edastama ja vastu võtma nii standardseid kui ka laiendatud andmeid ja kaugraame.
  • MAX3051 liidesed CAN -protokolli kontrolleri ja kontrolleriala võrgu (CAN) siiniliinide füüsiliste juhtmete vahel. MAX3051 pakub diferentseeritud edastusvõimet siinile ja diferentsiaalse vastuvõtu võimalust CAN -kontrollerile.

6. samm: ühendamine

Ühendus
Ühendus

Ühendage DHT11 moodul Maduino Zero CAN-BUS mooduliga juhtmetega, mida saab kasutada CAN-side toetamise vahendina. Samamoodi ühendage ekraan mooduliga, et andmeid vastu võtta ja kuvada.

Ühendus Maduino Zero CANBUSi ja DHT11 vahel.

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ ANDMED

Ühendus Maduino Zero CANBUS ja OLED vahel.

Maduino Zero CANBUS - OLED

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

Kasutage kahe Maduino Zero CANBUS mooduli ühendamiseks DB9 kaablit.

Samm: kood

MAX3051 viib lõpule diferentsiaalitasemete teisendamise loogilisteks signaalideks. MCP2515 täidab CAN -funktsiooni, näiteks andmete kodeerimist ja dekodeerimist. MCU peab ainult kontrolleri lähtestama ning andmeid saatma ja vastu võtma.

  • Github:
  • Pärast Arduino installimist pole ühtegi plaati (Arduino null) toetavat paketti, mida on vaja installida.
  • Valige tööriistad -> Juhatus -> Tahvlihaldur, otsige "Arduino zero" ja installige "Arduino SAMD Boards".
  • Valige Tools -> Board -> Arduino Zero (Native USB Port), valige Tools -> Port -> com…
  • Pärast programmi hankimist GitHubist peate veenduma, et kõik failid on projekti kataloogis, mis sisaldab CANBUS -i toetavaid raamatukogu faile.
  • Paigaldage Adafruit'i DHT -andurite kogu, mida kasutatakse DHT11 juhtimiseks temperatuuri ja niiskuse saamiseks.
  • Kasutage erinevaid aadresse temperatuuri ja niiskuse eraldi saatmiseks koodis Test_DHT11.ino.

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

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

“0x10” tähendab sõnumi ID -d, “0” on keskmine standardraam, “stmp1.length ()” tähendab sõnumi pikkust, “stmp_send1” on saadetud andmed.

  • Koodis Test_OLED.ino võetakse kõik CANBUS -i teated päringu teel vastu ja vajalik teave kuvatakse OLED -il.
  • Laadige programm Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino anduriga ühendatud moodulisse üles ja laadige programm Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino teise OLED-iga ühendatud moodulisse.

8. samm: näidake

Näita
Näita
Näita
Näita

Lülitage kaks moodulit sisse, temperatuur ja niiskus kuvatakse ekraanil.

Soovitan: