Kazalo:

Enostavna vadnica za CANBUS: 8 korakov
Enostavna vadnica za CANBUS: 8 korakov

Video: Enostavna vadnica za CANBUS: 8 korakov

Video: Enostavna vadnica za CANBUS: 8 korakov
Video: BigTreeTech - Manta - M8P - Basics 2024, Julij
Anonim
Enostavna vadnica za CANBUS
Enostavna vadnica za CANBUS

Tri tedne sem študiral CAN in zdaj sem dokončal nekaj vlog za potrditev svojih učnih rezultatov. V tej vadnici se boste naučili uporabljati Arduino za izvajanje komunikacije CANBUS. Če imate kakršne koli predloge, lahko pustite sporočilo.

Zaloge:

Strojna oprema:

  • Maduino Zero CANBUS
  • Modul za temperaturo in vlažnost DHT11
  • 1,3 "I2C OLED 128x64- modra
  • Kabel DB9 do DB9 (ženski v ženski)
  • Linija Dupont

Programska oprema:

Arduino IDE

1. korak: Kaj je CANBUS

Kaj je CANBUS
Kaj je CANBUS
Kaj je CANBUS
Kaj je CANBUS

O CAN

CAN (Controller Area Network) je serijsko komunikacijsko omrežje, ki lahko realizira porazdeljen nadzor v realnem času. Razvit je bil za avtomobilsko industrijo, da bi zapleten kabelski snop zamenjal z dvožičnim vodilom.

Protokol CAN definira plast podatkovne povezave in del fizične plasti v modelu OSI.

Protokol CAN je ISO standardiziran z ISO11898 in ISO11519. ISO11898 je hitri komunikacijski standard CAN s komunikacijsko hitrostjo 125kbps-1Mbps. ISO11519 je komunikacijski standard CAN za nizke hitrosti s komunikacijsko hitrostjo manj kot 125 kb / s.

Tu se osredotočamo na hitri CAN.

ISO-11898 opisuje, kako se informacije prenašajo med napravami v omrežju in je v skladu z modelom medsebojnega povezovanja odprtih sistemov (OSI), ki je opredeljen v smislu slojev. Dejanska komunikacija med napravami, povezanimi s fizičnim medijem, je določena s fizično plastjo modela

  • Vsako enoto CAN, povezano z vodilom, lahko imenujemo vozlišče. Vse enote CAN so povezane na vodilo, zaključeno na vsakem koncu z upori 120 Ω, da tvorijo omrežje. Avtobus je sestavljen iz linij CAN_H in CAN_L. Krmilnik CAN določi raven vodila na podlagi razlike v ravni moči na obeh žicah. Ravni avtobusov so razdeljene na dominantne in recesivne, kar mora biti eno izmed njih. Pošiljatelj pošlje sporočilo prejemniku s spremembo na ravni vodila. Ko se logična vrstica "in" izvede na vodilu, je prevladujoča raven "0", recesivna raven pa "1".
  • V prevladujočem stanju je napetost CAN_H približno 3,5 V, napetost CAN_L pa približno 1,5 V. V recesivnem stanju sta napetosti obeh vodov okoli 2,5 V.
  • Signal je diferenčen, zato CAN izhaja iz svoje robustne odpornosti proti hrupu in odpornosti na napake. Uravnotežen diferenčni signal zmanjša povezovanje šumov in omogoča visoke stopnje signalizacije preko kabla z zvitim parom. Tok v vsaki signalni liniji je enak, vendar v nasprotni smeri, kar ima za posledico učinek preklica polja, ki je ključen za nizke emisije hrupa. Uporaba uravnoteženih diferencialnih sprejemnikov in kablov z zvitimi pari povečuje zavrnitev v skupnem načinu in visoko odpornost na hrup vodila CAN.

Oddajnik CAN

Oddajnik CAN je odgovoren za pretvorbo med logično stopnjo in fizičnim signalom. Pretvorite logični signal v diferencialno raven ali fizični signal v logično raven.

CAN krmilnik

Krmilnik CAN je osrednja komponenta CAN, ki uresničuje vse funkcije plasti podatkovne povezave v protokolu CAN in lahko samodejno razreši protokol CAN.

MCU

MCU je odgovoren za krmiljenje funkcijskega vezja in krmilnika CAN. Na primer, parametri krmilnika CAN se inicializirajo, ko se vozlišče zažene, okvir CAN se prebere in pošlje prek krmilnika CAN itd.

2. korak: O komunikacijah CAN

Ko vodilo miruje, lahko vsa vozlišča začnejo pošiljati sporočila (nadzor z več glavnimi). Vozlišče, ki prvi dostopa do vodila, dobi pravico do pošiljanja (način CSMA/CA). Ko hkrati začne pošiljati več vozlišč, ima pravico do pošiljanja vozlišče, ki pošlje ID -jevo sporočilo z visoko prioriteto.

V protokolu CAN so vsa sporočila poslana v fiksni obliki. Ko vodilo miruje, lahko vse enote, povezane z vodilom, začnejo pošiljati nova sporočila. Ko začneta pošiljati sporočila več kot dve celici hkrati, se prednost določi na podlagi identifikatorja. ID ne predstavlja ciljnega naslova pošiljatelja, ampak prednost sporočila, ki dostopa do vodila. Ko začneta pošiljati sporočila več kot dve celici hkrati, se vsak bit brez obresti identificira enega za drugim. Enota, ki zmaga v arbitraži, lahko še naprej pošilja sporočila, enota, ki izgubi arbitražo, pa takoj preneha pošiljati in prejme delo.

CAN vodilo je vrsta oddajanja vodila. To pomeni, da lahko vsa vozlišča 'slišijo' vse prenose. vsa vozlišča bodo vedno pobrala ves promet. Strojna oprema CAN omogoča lokalno filtriranje, tako da se lahko vsako vozlišče odzove le na zanimiva sporočila.

3. korak: Okviri

Okvirji
Okvirji

Naprave CAN pošiljajo podatke po omrežju CAN v paketih, imenovanih okviri. CAN ima štiri vrste okvirjev:

  • Podatkovni okvir: okvir, ki vsebuje podatke vozlišč za prenos
  • Oddaljeni okvir: okvir, ki zahteva prenos določenega identifikatorja
  • Okvir napak: okvir, ki ga pošlje katero koli vozlišče in zazna napako
  • Preobremenitveni okvir: okvir za vstavljanje zakasnitve med podatki ali oddaljenim okvirjem

Podatkovni okvir

Obstajata dve vrsti podatkovnih okvirjev, standardni in razširjeni.

Pomen bitnih polj na sliki so:

  • SOF - Bit za en sam prevladujoč začetek okvirja (SOF) označuje začetek sporočila in se uporablja za sinhronizacijo vozlišč na vodilu po mirovanju.
  • Identifikator-Standardni 11-bitni identifikator CAN določa prednost sporočila. Nižja kot je binarna vrednost, večja je njena prioriteta.
  • RTR - Bit za en sam zahtevek za oddaljeni prenos (RTR)
  • IDE - prevladujoči bit razširitve enojnega identifikatorja (IDE) pomeni, da se prenaša standardni identifikator CAN brez razširitve.
  • R0 - Rezerviran bit (za možno uporabo s prihodnjo spremembo standarda).
  • DLC-4-bitna koda dolžine podatkov (DLC) vsebuje število bajtov poslanih podatkov.
  • Podatki - lahko se prenese do 64 bitov aplikacijskih podatkov.
  • CRC-16-bitno (15 bitov plus ločilo) ciklično preverjanje odvečnosti (CRC) vsebuje kontrolno vsoto (število poslanih bitov) predhodnih podatkov aplikacije za odkrivanje napak.
  • ACK – ACK sta 2 bita, eden je potrditveni bit, drugi pa razmejevalnik.
  • EOF-To 7-bitno polje za konec okvirja (EOF) označuje konec okvirja CAN (sporočilo) in onemogoča bitne nastavke, kar kaže na napako pri polnjenju, ko prevladuje. Ko se med normalnim delovanjem zaporedoma pojavi 5 bitov iste logične ravni, se v podatke vstavi delček nasprotne logične ravni.
  • IFS-Ta 7-bitni medokvirni prostor (IFS) vsebuje čas, ki ga krmilnik potrebuje za premik pravilno sprejetega okvirja v ustrezen položaj v območju medpomnilnika sporočil.

Arbitraža

V stanju mirovanja vodila enota, ki prva pošlje sporočilo, dobi pravico do pošiljanja. Ko začne pošiljati več enot hkrati, se vsaka enota pošiljanja začne pri prvem bitu arbitražnega segmenta. Enota z največjim številom stalnih izhodnih prevladujočih ravni lahko še naprej pošilja.

4. korak: Hitrost in razdalja

Hitrost in razdalja
Hitrost in razdalja

CAN vodilo je vodilo, ki povezuje več enot hkrati. Skupno število enot, ki jih je mogoče povezati, teoretično ni omejeno. V praksi pa je število enot, ki jih je mogoče povezati, omejeno s časovno zakasnitvijo na vodilu in električno obremenitvijo. Zmanjšajte hitrost komunikacije, povečajte število enot, ki jih je mogoče povezati, in povečajte hitrost komunikacije, število enot, ki jih je mogoče povezati, se zmanjša.

Komunikacijska razdalja je obratno povezana s hitrostjo komunikacije in čim daljša je komunikacijska razdalja, tem manjša je hitrost komunikacije. Daljša razdalja je lahko 1 km ali več, vendar je hitrost manjša od 40 km / s.

5. korak: Strojna oprema

Strojna oprema
Strojna oprema

Modul Maduino Zero CAN-BUS je orodje, ki ga je Makerfabs razvil za komunikacijo CANbus-temelji na Arduinu s krmilnikom CAN in oddajnikom CAN za ustvarjanje vrat za vodilo CAN, pripravljenih za uporabo.

  • MCP2515 je samostojen krmilnik CAN, ki izvaja specifikacijo CAN. Sposoben je prenašati in sprejemati tako standardne kot razširjene podatke in oddaljene okvirje.
  • MAX3051 vmesnik med krmilnikom protokola CAN in fizičnimi žicami vodov vodila v omrežju krmilnika (CAN). MAX3051 zagotavlja zmožnost diferencialnega prenosa na vodilo in diferencialnega sprejema na krmilnik CAN.

6. korak: Povezava

Povezava
Povezava

Modul DHT11 povežite z modulom Maduino Zero CAN-BUS z žicami, ki bodo uporabljene kot instrument za podporo komunikacije CAN. Podobno povežite zaslon z modulom, da sprejmete podatke in jih prikažete.

Povezava med Maduino Zero CANBUS in DHT11:

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ PODATKI

Povezava med Maduino Zero CANBUS in OLED:

Maduino Zero CANBUS - OLED

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

Za povezavo dveh modulov Maduino Zero CANBUS uporabite kabel DB9.

7. korak: Koda

MAX3051 dokonča pretvorbo diferencialnih ravni v logične signale. MCP2515 dokonča funkcijo CAN, na primer kodiranje in dekodiranje podatkov. MCU mora samo inicializirati krmilnik in pošiljati in prejemati podatke.

  • Github:
  • Po namestitvi Arduina ni paketa za podporo plošče (Arduino zero), ki ga je potrebno namestiti.
  • Izberite orodja -> deska -> upravitelj plošče, poiščite "Arduino zero" in namestite "Arduino SAMD Boards".
  • Izberite Orodja -> Plošča -> Arduino Zero (domača vrata USB), izberite Orodja -> Vrata -> com…
  • Ko dobite program iz GitHub -a, se morate prepričati, da so vse datoteke v imeniku projekta, ki vsebuje knjižnične datoteke, ki podpirajo CANBUS.
  • Namestite knjižnico senzorjev DHT podjetja Adafruit, ki se uporablja za pogon DHT11 za doseganje temperature in vlažnosti.
  • Uporabite različne naslove za ločeno pošiljanje temperature in vlažnosti v kodi Test_DHT11.ino.

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

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

"0x10" pomeni ID sporočila, "0" je standardni standardni okvir, "stmp1.length ()" je dolžina sporočila, "stmp_send1" so poslani podatki.

  • V kodi Test_OLED.ino se vsa sporočila na CANBUS -u sprejmejo z poizvedbo, zahtevane informacije pa se prikažejo na OLED -u.
  • Naložite program Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino v modul, ki je povezan s senzorjem, in naložite program Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino v drug modul, ki je povezan z OLED.

8. korak: Pokaži

Pokaži
Pokaži
Pokaži
Pokaži

Vklopite dva modula, na zaslonu se prikažeta temperatura in vlaga.

Priporočena: