Talaan ng mga Nilalaman:

Isang Simpleng Tutorial para sa CANBUS: 8 Mga Hakbang
Isang Simpleng Tutorial para sa CANBUS: 8 Mga Hakbang

Video: Isang Simpleng Tutorial para sa CANBUS: 8 Mga Hakbang

Video: Isang Simpleng Tutorial para sa CANBUS: 8 Mga Hakbang
Video: Gamit ang 5V 1 channel relay module para sa Arduino 2024, Hulyo
Anonim
Isang Simpleng Tutorial para sa CANBUS
Isang Simpleng Tutorial para sa CANBUS

Nag-aaral ako ng CAN sa loob ng tatlong linggo, at ngayon nakumpleto ko ang ilang mga aplikasyon upang mapatunayan ang aking mga resulta sa pag-aaral. Sa tutorial na ito, malalaman mo kung paano gamitin ang Arduino upang magpatupad ng komunikasyon sa CANBUS. Kung mayroon kang anumang mga mungkahi, malugod na mag-iwan ng mensahe.

Mga Pantustos:

Hardware:

  • Maduino Zero CANBUS
  • Module ng Temperatura at Humidity ng DHT11
  • 1.3 "I2C OLED 128x64- Blue
  • DB9 hanggang DB9 cable (babae hanggang babae)
  • Dupont Line

Software:

Arduino IDE

Hakbang 1: Ano ang CANBUS

Ano ang CANBUS
Ano ang CANBUS
Ano ang CANBUS
Ano ang CANBUS

Tungkol sa CAN

Ang CAN (Controller Area Network) ay isang serial network ng komunikasyon na maaaring mapagtanto na ipinamahagi ang real-time na kontrol. Ito ay binuo para sa industriya ng automotive upang mapalitan ang kumplikadong harness ng mga kable sa isang dalawang-wire bus.

Tinutukoy ng CAN protocol ang Layer ng Data Link at bahagi ng Physical Layer sa modelo ng OSI.

Ang CAN protocol ay istandardado ng ISO sa ISO11898 at ISO11519. Ang ISO11898 ay ang CAN high-speed na pamantayan sa komunikasyon na may bilis ng komunikasyon na 125bps-1Mbps. Ang ISO11519 ay ang pamantayan ng komunikasyon na may mababang bilis na CAN na may bilis ng komunikasyon na mas mababa sa 125 kbps.

Dito nakatuon kami sa CAN-high-speed.

Inilalarawan ng ISO-11898 kung paano ipinapasa ang impormasyon sa pagitan ng mga aparato sa isang network at umaayon sa modelo ng Open Systems Interconnection (OSI) na tinukoy sa mga tuntunin ng mga layer. Ang aktwal na komunikasyon sa pagitan ng mga aparato na konektado ng pisikal na daluyan ay tinukoy ng pisikal na layer ng modelo

  • Ang bawat yunit ng CAN na konektado sa bus ay maaaring tawaging isang node. Ang lahat ng CAN unit ay nakakonekta sa isang bus na natapos sa bawat dulo na may 120 Ω resistors upang mabuo ang isang network. Ang bus ay binubuo ng mga linya ng CAN_H at CAN_L. Tinutukoy ng CAN control ang antas ng bus batay sa pagkakaiba sa antas ng kuryente sa parehong mga wire. Ang mga antas ng bus ay nahahati sa mga nangingibabaw at recessive na antas, na dapat isa sa mga ito. Nagpapadala ang nagpadala ng mensahe sa tatanggap sa pamamagitan ng paggawa ng pagbabago sa antas ng bus. Kapag ang lohikal na linya na "at" ay naisagawa sa bus, ang nangingibabaw na antas ay "0" at ang antas ng recessive ay "1".
  • Sa nangingibabaw na estado, ang boltahe ng CAN_H ay tungkol sa 3.5V at ang boltahe ng CAN_L ay tungkol sa 1.5V. Sa recessive state, ang boltahe ng parehong mga linya ay nasa paligid ng 2.5V.
  • Ang signal ay kaugalian kaya't MAAARING makuha ng matatag na kaligtasan sa ingay at pagpaparaya sa kasalanan. Ang balanseng signal ng kaugalian ay binabawasan ang pagkabit ng ingay at pinapayagan ang mataas na mga rate ng pag-signall sa twisted-pair cable. Ang kasalukuyang sa bawat linya ng signal ay pantay ngunit sa kabaligtaran ng direksyon at nagreresulta sa isang epekto sa pagkansela sa patlang na susi sa mababang emisyon ng ingay. Ang paggamit ng balanseng mga tagatanggap ng kaugalian at baluktot na pares na paglalagay ng kable ay nagpapahusay sa pagtanggi ng karaniwang mode at mataas na kaligtasan sa ingay ng isang CAN bus.

MAAARI Transceiver

Ang CAN Transceiver ay responsable para sa conversion sa pagitan ng antas ng lohika at ng pisikal na signal. I-convert ang isang lohikal na signal sa isang antas ng kaugalian o isang pisikal na signal sa isang lohikal na antas.

CAN Controller

Ang CAN Controller ay ang pangunahing bahagi ng CAN, na napagtanto ang lahat ng mga pag-andar ng layer ng link ng data sa CAN protocol at maaaring awtomatikong malutas ang CAN protocol.

MCU

Ang MCU ay responsable para sa kontrol ng function circuit at ang CAN controller. Halimbawa, ang mga parameter ng CAN controller ay napasimulan kapag nagsimula ang node, ang CAN frame ay nababasa at ipinadala sa pamamagitan ng CAN controller, atbp.

Hakbang 2: Tungkol sa CAN Communities

Kapag ang bus ay walang ginagawa, ang lahat ng mga node ay maaaring magsimulang magpadala ng mga mensahe (multi-master control). Ang node na unang na-access ang bus ay makakakuha ng karapatang magpadala (CSMA / CA mode). Kapag nagsimulang magpadala ng maraming mga node nang sabay, ang node na nagpapadala ng mataas na priyoridad na mensahe ng ID ay may karapatang magpadala.

Sa CAN protocol, lahat ng mga mensahe ay ipinapadala sa isang nakapirming format. Kapag ang bus ay walang ginagawa, ang lahat ng mga yunit na konektado sa bus ay maaaring magsimulang magpadala ng mga bagong mensahe. Kapag ang higit sa dalawang mga cell ay nagsisimulang magpadala ng mga mensahe nang sabay-sabay, natutukoy ang priyoridad batay sa identifier. Ang ID ay hindi kumakatawan sa patutunguhang address ng pagpapadala, ngunit sa halip ang priyoridad ng mensahe sa pag-access sa bus. Kapag ang higit sa dalawang mga cell ay nagsisimulang magpadala ng mga mensahe nang sabay, ang bawat piraso ng ID na walang interes ay naisa-isa nang arbitrasyon. Ang yunit na nanalo sa arbitrasyon ay maaaring magpatuloy na magpadala ng mga mensahe, at ang yunit na nawalan ng arbitrasyon ay kaagad na tumitigil sa pagpapadala at pagtanggap sa trabaho.

Ang CAN bus ay isang uri ng pag-broadcast ng bus. Nangangahulugan ito na ang lahat ng mga node ay maaaring 'marinig' ang lahat ng mga pagpapadala. lahat ng mga node ay walang humpay na kukunin ang lahat ng trapiko. Nagbibigay ang hardware ng CAN ng lokal na pag-filter upang ang bawat node ay maaaring mag-react lamang sa mga kagiliw-giliw na mensahe.

Hakbang 3: Mga Frame

Mga Frame
Mga Frame

MAAARI ng mga aparato ang magpadala ng data sa kabuuan ng CAN network sa mga packet na tinatawag na mga frame. Ang CAN ay may apat na uri ng frame:

  • Data frame: isang frame na naglalaman ng data ng node para sa paghahatid
  • Remote na frame: isang frame na humihiling ng paghahatid ng isang tukoy na identifier
  • Error frame: isang frame na nailipat ng anumang node na nakakita ng isang error
  • Overload frame: isang frame upang mag-iniksyon ng pagkaantala sa pagitan ng data o remote frame

Balangkas ng mga datos

Mayroong dalawang uri ng mga frame ng data, pamantayan at pinalawak.

Ang kahulugan ng mga patlang na bit ng Larawan ay:

  • SOF – Ang nag-iisang nangingibabaw na pagsisimula ng frame (SOF) bit ay nagmamarka sa pagsisimula ng mensahe, at ginagamit upang i-synchronize ang mga node sa isang bus pagkatapos ng pagiging idle.
  • Identifier-Ang Karaniwang CAN 11-bit identifier ay nagtatatag ng priyoridad ng mensahe. Mas mababa ang binary halaga, mas mataas ang priyoridad nito.
  • RTR – Ang solong remote na kahilingan sa paghahatid (RTR) ay kaunti
  • IDE – Ang isang nangingibabaw na solong extension ng identifier (IDE) na bit ay nangangahulugang ang isang pamantayang CAN identifier na walang extension ay naililipat.
  • R0 – Nakareserba ang kaunti (para sa posibleng paggamit ng pamantayan sa susog sa hinaharap).
  • DLC – Ang 4-bit data length code (DLC) ay naglalaman ng bilang ng mga byte ng data na naililipat.
  • Data – Hanggang sa 64 piraso ng data ng aplikasyon ay maaaring maipadala.
  • CRC – Ang 16-bit (15 bits plus delimiter) cyclic redundancy check (CRC) ay naglalaman ng tsekum (bilang ng mga bit na nailipat) ng naunang data ng aplikasyon para sa pagtuklas ng error.
  • Ang ACK – Ang ACK ay 2 bits, ang isa ay ang bit ng pagkilala at ang pangalawa ay isang delimiter.
  • EOF – Ang end-of-frame (EOF), 7-bit na patlang na ito ay nagmamarka sa pagtatapos ng isang CAN frame (mensahe) at hindi pinapagana ang bitstuffing, na nagpapahiwatig ng isang error sa pagpupuno kapag nangingibabaw. Kapag ang 5 piraso ng parehong antas ng lohika ay nangyayari nang sunud-sunod sa panahon ng normal na operasyon, ang isang piraso ng kabaligtaran na antas ng lohika ay naipasok sa data.
  • IFS – Ang 7-bit interframe space (IFS) na ito ay naglalaman ng oras na kinakailangan ng controller upang ilipat ang isang tamang natanggap na frame sa tamang posisyon nito sa isang lugar ng buffer ng mensahe.

Arbitrasyon

Sa estado ng walang ginagawa na bus, ang unit na nagsimulang magpadala ng mensahe ay unang nakakakuha ng tamang pagpapadala. Kapag ang maraming mga yunit ay nagsisimulang magpadala nang sabay, ang bawat yunit ng pagpapadala ay nagsisimula sa unang piraso ng segment ng arbitrasyon. Ang yunit na may pinakamalaking bilang ng patuloy na mga antas ng nangingibabaw na output ay maaaring magpatuloy na magpadala.

Hakbang 4: Bilis at Distansya

Bilis at Distansya
Bilis at Distansya

Ang CAN bus ay isang bus na nagkokonekta sa maraming mga unit nang sabay. Walang teoretikal na walang limitasyon sa kabuuang bilang ng mga yunit na maaaring konektado. Gayunpaman, sa pagsasagawa, ang bilang ng mga yunit na maaaring maiugnay ay limitado sa pagkaantala ng oras sa bus at sa pagkarga ng kuryente. Bawasan ang bilis ng komunikasyon, dagdagan ang bilang ng mga yunit na maaaring konektado, at dagdagan ang bilis ng komunikasyon, ang bilang ng mga yunit na maaaring konektado ay bumababa.

Ang distansya ng komunikasyon ay inversely na nauugnay sa bilis ng komunikasyon, at mas malayo ang distansya ng komunikasyon, mas maliit ang bilis ng komunikasyon. Ang mas mahabang distansya ay maaaring 1km o higit pa, ngunit ang bilis ay mas mababa sa 40kps.

Hakbang 5: Hardware

Hardware
Hardware

Ang Maduino Zero CAN-BUS module ay isang tool na binuo ng Makerfabs para sa komunikasyon ng CANbus, batay ito sa Arduino, kasama ang CAN controller at CAN transceiver, upang lumikha ng isang handa nang magamit na CAN-bus port.

  • Ang MCP2515 ay isang nag-iisang CAN controller na nagpapatupad ng pagtutukoy ng CAN. Ito ay may kakayahang magpadala at makatanggap ng parehong pamantayan at pinahabang data at mga remote na frame.
  • Ang MAX3051 interface sa pagitan ng CAN protocol controller at ang mga pisikal na wires ng mga linya ng bus sa isang area ng controller area (CAN). Ang MAX3051 ay nagbibigay ng kakayahan sa kaugalian na magpadala ng bus at kaugalian na makatanggap ng kakayahan sa CAN controller.

Hakbang 6: Koneksyon

Koneksyon
Koneksyon

Ikonekta ang module na DHT11 sa Maduino Zero CAN-BUS module na may mga wires upang magamit bilang isang instrumento upang suportahan ang CAN komunikasyon. Katulad nito, ikonekta ang display sa module upang matanggap ang data at ipakita ito.

Ang koneksyon sa pagitan ng Maduino Zero CANBUS at DHT11 :

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DATA

Ang koneksyon sa pagitan ng Maduino Zero CANBUS at OLED :

Maduino Zero CANBUS - OLED

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

Gumamit ng isang DB9 cable upang ikonekta ang dalawang Maduino Zero CANBUS module.

Hakbang 7: Code

Kinukumpleto ng MAX3051 ang conversion ng mga antas ng kaugalian sa mga lohikal na signal. Nakumpleto ng MCP2515 ang CAN function tulad ng pag-encode ng data at pag-decode. Kailangan lamang ng MCU na simulan ang controller at magpadala at tumanggap ng data.

  • Github:
  • Matapos mai-install ang Arduino, walang pakete upang suportahan ang board (Arduino zero) na kinakailangan upang mai-install.
  • Piliin ang mga tool -> Board -> Board Manager, hanapin ang "Arduino zero" at i-install ang "Arduino SAMD Boards".
  • Piliin ang Mga Tool -> Lupon -> Arduino Zero (Katutubong USB Port), piliin ang Mga Tool -> Port -> com…
  • Matapos makuha ang programa mula sa GitHub, kailangan mong tiyakin na ang lahat ng mga file ay nasa direktoryo ng proyekto, na naglalaman ng mga file ng library na sumusuporta sa CANBUS.
  • I-install ang DHT sensor library ng Adafruit, na ginagamit upang himukin ang DHT11 upang makakuha ng temperatura at halumigmig.
  • Gumamit ng iba't ibang mga address upang magpadala ng hiwalay na temperatura at kahalumigmigan sa code na Test_DHT11.ino.

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

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

Ang "0x10" ay nangangahulugang ang message ID, ang "0" ay nangangahulugang karaniwang frame, "stmp1.length ()" ay nangangahulugang ang haba ng mensahe, ang "stmp_send1" ay ipinadala ang data.

  • Sa code na Test_OLED.ino, lahat ng mga mensahe sa CANBUS ay natanggap sa pamamagitan ng query at ang kinakailangang impormasyon ay ipinapakita sa OLED.
  • I-upload ang program na Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_DHT11 / Test_DHT11.ino sa module na kumonekta sa sensor, at I-upload ang programang Maduino-CANbus RS485 / Test_DHT11_OLED / Test_OLED / Test_OLED.ino sa ibang module na kumonekta sa OLED.

Hakbang 8: Ipakita

Ipakita
Ipakita
Ipakita
Ipakita

Ang lakas sa dalawang module, temperatura at halumigmig ay ipapakita sa display.

Inirerekumendang: