Orodha ya maudhui:

Mafunzo Rahisi ya CANBUS: Hatua 8
Mafunzo Rahisi ya CANBUS: Hatua 8

Video: Mafunzo Rahisi ya CANBUS: Hatua 8

Video: Mafunzo Rahisi ya CANBUS: Hatua 8
Video: KITENZI CHA: TO WANT (KUTAKA): SOMO LA 8 2024, Julai
Anonim
Mafunzo Rahisi ya CANBUS
Mafunzo Rahisi ya CANBUS

Nimekuwa nikisoma CAN kwa wiki tatu, na sasa nimekamilisha programu kadhaa ili kuhalalisha matokeo yangu ya ujifunzaji. Katika mafunzo haya, utajifunza jinsi ya kutumia Arduino kutekeleza mawasiliano ya CANBUS. Ikiwa una maoni yoyote, karibu uache ujumbe.

Ugavi:

Vifaa:

  • Maduino Zero CANBUS
  • Moduli ya Joto na Unyevu ya DHT11
  • 1.3 "I2C OLED 128x64- Bluu
  • Kebo ya DB9 hadi DB9 (kike hadi kike)
  • Mstari wa Dupont

Programu:

Arduino IDE

Hatua ya 1: Canbus ni nini

Canbus ni nini
Canbus ni nini
Canbus ni nini
Canbus ni nini

Kuhusu CAN

CAN (Mtandao wa Mtawala wa eneo) ni mtandao wa mawasiliano wa serial ambao unaweza kutambua udhibiti wa wakati halisi. Inatengenezwa kwa tasnia ya magari kuchukua nafasi ya wiring tata na basi ya waya mbili.

Itifaki ya CAN inafafanua Tabaka la Kiunga cha Takwimu na sehemu ya Tabaka la Kimwili katika mtindo wa OSI.

Itifaki ya CAN ni ISO sanifu na ISO11898 na ISO11519. ISO11898 ni kiwango cha mawasiliano cha kasi cha CAN na kasi ya mawasiliano ya 125kbps-1Mbps. ISO11519 ni kiwango cha chini cha mawasiliano cha CAN na kasi ya mawasiliano ya chini ya 125kbps.

Hapa tunazingatia CAN ya kasi.

ISO-11898 inaelezea jinsi habari hupitishwa kati ya vifaa kwenye mtandao na inalingana na mtindo wa Uunganisho wa Mifumo ya Open (OSI) ambayo inaelezewa kulingana na matabaka. Mawasiliano halisi kati ya vifaa vilivyounganishwa na kati ya mwili hufafanuliwa na safu ya mwili ya mfano

  • Kila kitengo cha CAN kilichounganishwa na basi kinaweza kuitwa node. Vitengo vyote vya CAN vimeunganishwa na basi iliyosimamishwa kila mwisho na vipinga vya 120 to kuunda mtandao. Basi lina laini za CAN_H na CAN_L. Mdhibiti wa CAN huamua kiwango cha basi kulingana na tofauti katika kiwango cha nguvu kwenye waya zote mbili. Ngazi za basi zimegawanywa katika viwango vikubwa na vya kupindukia, ambavyo lazima iwe moja yao. Mtumaji hutuma ujumbe kwa mpokeaji kwa kufanya mabadiliko kwenye kiwango cha basi. Wakati laini ya kimantiki "na" inatekelezwa kwenye basi, kiwango kikubwa ni "0" na kiwango cha kupindukia ni "1".
  • Katika hali kubwa, voltage ya CAN_H ni karibu 3.5V na voltage ya CAN_L ni karibu 1.5V. Katika hali ya kupindukia, voltage ya mistari yote iko karibu 2.5V.
  • Ishara ni tofauti ndio sababu INAWEZA kupata kinga yake kali ya kelele na uvumilivu wa makosa. Ishara tofauti ya usawa inapunguza unganisho la kelele na inaruhusu viwango vya juu vya kuashiria juu ya kebo iliyopindika. Ya sasa katika kila laini ya ishara ni sawa lakini kwa mwelekeo mwingine na kusababisha athari ya kughairi shamba ambayo ni ufunguo wa uzalishaji wa chini wa kelele. Matumizi ya wapokeaji wa utofautishaji wenye usawa na kabati ya jozi zilizopotoka huongeza kukataliwa kwa hali ya kawaida na kinga ya juu ya kinga ya basi ya CAN.

MFANYAKAZI HAPA

Transceiver ya CAN inawajibika kwa ubadilishaji kati ya kiwango cha mantiki na ishara ya mwili. Badilisha ishara ya mantiki kwa kiwango tofauti au ishara ya mwili kuwa kiwango cha mantiki.

Mdhibiti wa CAN

Mdhibiti wa CAN ni sehemu ya msingi ya CAN, ambayo hutambua kazi zote za safu ya kiunga cha data katika itifaki ya CAN na inaweza kusuluhisha moja kwa moja itifaki ya CAN.

MCU

MCU inawajibika kwa udhibiti wa mzunguko wa kazi na mtawala wa CAN. Kwa mfano, vigezo vya mtawala vya CAN vinaanzishwa wakati nodi inapoanza, fremu ya CAN inasomwa na kutumwa kupitia mtawala wa CAN, nk.

Hatua ya 2: Kuhusu Mawasiliano ya CAN

Basi linapofanya kazi, nodi zote zinaweza kuanza kutuma ujumbe (kudhibiti anuwai). Node inayofikia kwanza basi inapata haki ya kutuma (mode ya CSMA / CA). Wakati nodi nyingi zinaanza kutuma kwa wakati mmoja, node inayotuma ujumbe wa kitambulisho cha kipaumbele cha juu inapata haki ya kutuma.

Katika itifaki ya CAN, ujumbe wote unatumwa kwa muundo uliowekwa. Basi linapofanya kazi, vitengo vyote vilivyounganishwa na basi vinaweza kuanza kutuma ujumbe mpya. Wakati zaidi ya seli mbili zinaanza kutuma ujumbe kwa wakati mmoja, kipaumbele huamuliwa kulingana na kitambulisho. Kitambulisho hakiwakilishi anwani ya marudio ya kutuma, lakini kipaumbele cha ujumbe unaofikia basi. Wakati seli zaidi ya mbili zinaanza kutuma ujumbe kwa wakati mmoja, kila kitambulisho kisicho na riba kinasuluhishwa moja kwa moja. Kitengo kinachoshinda usuluhishi kinaweza kuendelea kutuma ujumbe, na kitengo kinachopoteza usuluhishi mara moja huacha kutuma na kupokea kazi hiyo.

Basi la CAN ni aina ya basi ya matangazo. Hii inamaanisha kuwa nodi zote zinaweza 'kusikia' usambazaji wote. node zote zitachukua trafiki zote kila wakati. Vifaa vya CAN hutoa uchujaji wa ndani ili kila node iweze kuguswa tu na ujumbe wa kupendeza.

Hatua ya 3: Muafaka

Muafaka
Muafaka

Vifaa vya CAN vinatuma data kwenye mtandao wa CAN kwenye pakiti zinazoitwa fremu. CAN ina aina nne za fremu:

  • Sura ya data: fremu iliyo na data ya node ya usafirishaji
  • Sura ya mbali: fremu inayoomba upitishaji wa kitambulisho maalum
  • Sura ya hitilafu: fremu inayosambazwa na node yoyote kugundua hitilafu
  • Sura ya kupakia: fremu ya kuingiza ucheleweshaji kati ya data au fremu ya mbali

Sura ya data

Kuna aina mbili za muafaka wa data, kiwango na kupanuliwa.

Maana ya sehemu ndogo za Kielelezo ni:

  • SOF - Mwanzo mmoja mkubwa wa fremu (SOF) huashiria mwanzo wa ujumbe, na hutumiwa kusawazisha nodi kwenye basi baada ya kuwa uvivu.
  • Kitambulisho-Kitambulisho cha kawaida cha 11-bit kinaweka kipaumbele cha ujumbe. Chini ya thamani ya binary, juu ya kipaumbele chake.
  • RTR - Ombi moja la maambukizi ya mbali (RTR) kidogo
  • IDE - Kitambulisho kikuu cha kitambulisho kimoja (IDE) kinamaanisha kuwa kitambulisho wastani cha CAN kisicho na kiendelezi kinasambazwa.
  • R0 - Kilichohifadhiwa (kwa matumizi yanayowezekana na marekebisho ya kawaida ya siku zijazo).
  • DLC - Nambari ya urefu wa data ya 4-bit (DLC) ina idadi ya ka za data zinazosambazwa.
  • Takwimu-Hadi bits 64 za data ya programu zinaweza kupitishwa.
  • CRC - 16-bit (15 bits plus delimiter) mzunguko wa redundancy hundi (CRC) ina checksum (idadi ya bits zilizopitishwa) ya data ya programu iliyotangulia ya kugundua makosa.
  • ACK-ACK ni bits 2, moja ni kidogo ya kukiri na ya pili ni delimiter.
  • EOF - Mwisho huu wa fremu (EOF), uwanja wa 7-bit unaashiria mwisho wa fremu ya CAN (ujumbe) na inalemaza kubana, ikionyesha hitilafu ya kujaza wakati inatawala. Wakati bits 5 za kiwango sawa cha mantiki zinatokea mfululizo wakati wa operesheni ya kawaida, kiwango kidogo cha mantiki kimeingizwa kwenye data.
  • IFS – Nafasi hii ya kuingiliana ya 7-bit (IFS) ina wakati unaohitajika na mtawala kusonga fremu iliyopokelewa kwa usahihi kwenye nafasi yake sahihi katika eneo la bafa ya ujumbe.

Usuluhishi

Katika hali ya uvivu wa basi, kitengo kinachoanza kutuma ujumbe kwanza hupata haki ya kutuma. Wakati vitengo vingi vinaanza kutuma kwa wakati mmoja, kila kitengo cha kutuma huanza kwa sehemu ya kwanza ya sehemu ya usuluhishi. Kitengo kilicho na idadi kubwa zaidi ya viwango vinavyoendelea vya pato vinaweza kuendelea kutuma.

Hatua ya 4: Kasi na Umbali

Kasi na Umbali
Kasi na Umbali

Basi la CAN ni basi inayounganisha vitengo vingi kwa wakati mmoja. Kinadharia hakuna kikomo kwa jumla ya idadi ya vitengo ambavyo vinaweza kuunganishwa. Katika mazoezi, hata hivyo, idadi ya vitengo ambavyo vinaweza kuunganishwa vimepunguzwa na ucheleweshaji wa basi na mzigo wa umeme. Punguza kasi ya mawasiliano, ongeza idadi ya vitengo ambavyo vinaweza kushikamana, na kuongeza kasi ya mawasiliano, idadi ya vitengo ambavyo vinaweza kushikamana hupungua.

Umbali wa mawasiliano unahusiana kinyume na kasi ya mawasiliano, na mbali zaidi umbali wa mawasiliano, ndivyo kasi ya mawasiliano inavyokuwa ndogo. Umbali mrefu unaweza kuwa 1km au zaidi, lakini kasi ni chini ya 40kps.

Hatua ya 5: Vifaa

Vifaa
Vifaa

Moduli ya Maduino Zero CAN-BUS ni chombo kilichotengenezwa na Makerfabs kwa mawasiliano ya CANbus, inategemea Arduino, na mtawala wa CAN na transceiver ya CAN, kuunda bandari ya basi inayoweza kutumika ya CAN.

  • MCP2515 ni kidhibiti cha CAN cha kusimama pekee ambacho kinatumia vipimo vya CAN. Inauwezo wa kupitisha na kupokea data ya kawaida na kupanuliwa na fremu za mbali.
  • Viunganisho vya MAX3051 kati ya mtawala wa itifaki ya CAN na waya za mwili za mistari ya basi kwenye mtandao wa eneo la mtawala (CAN). MAX3051 hutoa uwezo wa kutofautisha kwa basi na kutofautisha uwezo wa mtawala wa CAN.

Hatua ya 6: Uunganisho

Uhusiano
Uhusiano

Unganisha moduli ya DHT11 kwa moduli ya Maduino Zero CAN-BUS na waya zitumike kama chombo cha kusaidia mawasiliano ya CAN. Vivyo hivyo, unganisha onyesho kwenye moduli ili upokee data na uionyeshe.

Uunganisho kati ya Maduino Zero CANBUS na DHT11:

Maduino Zero CANBUS - DHT11

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

Uunganisho kati ya Maduino Zero CANBUS na OLED:

Maduino Zero CANBUS - OLED

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

Tumia kebo ya DB9 kuunganisha moduli mbili za Maduino Zero CANBUS.

Hatua ya 7: Kanuni

MAX3051 inakamilisha ubadilishaji wa viwango tofauti kuwa ishara za kimantiki. MCP2515 inakamilisha kazi ya CAN kama kusimba kwa data na kusimba. MCU inahitaji tu kuanzisha mtawala na kutuma na kupokea data.

  • Github:
  • Baada ya kuwekwa Arduino, hakuna kifurushi cha kuunga mkono bodi (Arduino sifuri) ambayo inahitajika kusanikishwa.
  • Chagua zana -> Bodi -> Meneja wa Bodi, tafuta "Arduino sifuri" na usakinishe "Bodi za Arduino SAMD".
  • Chagua Zana -> Bodi -> Arduino Zero (Native USB Port), chagua Zana -> Port -> com…
  • Baada ya kupata programu kutoka GitHub, unahitaji kuhakikisha kuwa faili zote ziko kwenye saraka ya mradi, ambayo ina faili za maktaba zinazounga mkono CANBUS.
  • Sakinisha maktaba ya sensorer ya DHT na Adafruit, ambayo hutumiwa kuendesha DHT11 kupata joto na unyevu.
  • Tumia anwani tofauti kutuma joto na unyevu tofauti katika nambari ya Test_DHT11.ino.

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

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

"0x10" inamaanisha kitambulisho cha ujumbe, "0" ni sura ya wastani, "stmp1.length ()" inamaanisha urefu wa ujumbe, "stmp_send1" ni data iliyotumwa.

  • Kwenye nambari ya Test_OLED.ino, ujumbe wote kwenye CANBUS unapokelewa na hoja na habari inayotakiwa inaonyeshwa kwenye OLED.
  • Pakia programu Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_DHT11 / Test_DHT11.ino kwenye moduli iliyounganishwa na sensa, na Pakia programu Maduino-CANbus RS485 / Test_DHT11_OLED / Test_OLED / Test_OLED.ino kwa moduli nyingine iliyounganishwa na OLED.

Hatua ya 8: Onyesha

Onyesha
Onyesha
Onyesha
Onyesha

Nguvu kwenye moduli mbili, joto na unyevu zitaonyeshwa kwenye onyesho.

Ilipendekeza: