
Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:07

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


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

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

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

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

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


Vklopite dva modula, na zaslonu se prikažeta temperatura in vlaga.
Priporočena:
Ustvarite vesoljsko postajo v kodnem bloku TinkerCad -- Enostavna vadnica: 7 korakov (s slikami)

Ustvarite vesoljsko postajo v kodnem bloku TinkerCad || Easy Tutorial: Čeprav se vam misel na življenje v vesolju morda zdi znanstvena fantastika, medtem ko to berete, Mednarodna vesoljska postaja kroži okoli Zemlje s hitrostjo pet milj na sekundo in enkrat kroži okoli Zemlje. vsakih 90 minut. V tem projektu se boste naučili
Upor za zaznavanje sile (FSR) Arduino Enostavna vadnica: 8 korakov

Upor upora za zaznavanje sile (FSR) Arduino Enostavna vadnica: V tej vadnici se bomo naučili, kako zaznati silo, ki deluje na upor upora za zaznavanje sile (FSR), in jo prikazati na zaslonu OLED + omejitve bomo postavili z zeleno in rdečo LED .Oglejte si predstavitveni video
Otto DIY Robot Walking - Hitra in enostavna vadnica: 7 korakov

Otto DIY Robot Walking - Hitra in enostavna vadnica: V tej vadnici se bomo naučili, kako zlahka programirati Otto DIY robota za hojo. Oglejte si predstavitveni video
MakeyMakey - Enostavna vadnica in kako deluje! Izdelava klavirja!: 6 korakov

MakeyMakey - Enostavna vadnica in kako deluje! Izdelava klavirja!: * Vnaprej opozorilo * Fotografiral sem s telefonom, nato pa fotografiral telefon z računalnikom, vnaprej se opravičujem za grozno kakovost fotografij: projekt predstavitve PAn v MakeyMakey, skupaj z delovanjem nekaterih . Izdelava klavirja iz
7805 Regulator (5V) Modul: Enostavna vadnica: 5 korakov (s slikami)

7805 Regulator (5V) Modul: Easy Tutorial: Pozdravljeni, to je najpreprostejše navodilo, v katerem vam bom povedal osnove regulatorja napetosti 7805. V skoraj vseh mojih projektih, vključno z načrti, projekti Arduino in projekti elektronike na osnovi PCB, so napajalniki različnih