Sadržaj:

Jednostavan vodič za CANBUS: 8 koraka
Jednostavan vodič za CANBUS: 8 koraka

Video: Jednostavan vodič za CANBUS: 8 koraka

Video: Jednostavan vodič za CANBUS: 8 koraka
Video: BTT - Manta M8P - MainSailOS with EMMc 2024, Juli
Anonim
Jednostavan vodič za CANBUS
Jednostavan vodič za CANBUS

Studirao sam CAN tri sedmice, a sada sam završio neke aplikacije za potvrđivanje rezultata učenja. U ovom vodiču naučit ćete kako koristiti Arduino za implementaciju CANBUS komunikacije. Ako imate prijedloge, dobrodošli da ostavite poruku.

Potrošni materijal:

Hardver:

  • Maduino Zero CANBUS
  • DHT11 Modul za temperaturu i vlažnost
  • 1,3 "I2C OLED 128x64- plava
  • Kabel DB9 do DB9 (ženski na ženski)
  • Dupont Line

Softver:

Arduino IDE

Korak 1: Šta je CANBUS

Šta je CANBUS
Šta je CANBUS
Šta je CANBUS
Šta je CANBUS

O CAN -u

CAN (Controller Area Network) je serijska komunikacijska mreža koja može realizirati distribuiranu kontrolu u stvarnom vremenu. Razvijen je za automobilsku industriju kako bi zamijenio složene kabelske svežnjeve dvožilnom sabirnicom.

CAN protokol definira sloj podatkovne veze i dio fizičkog sloja u OSI modelu.

CAN protokol je ISO standardizovan sa ISO11898 i ISO11519. ISO11898 je CAN brzi komunikacijski standard sa komunikacijskom brzinom od 125kbps-1Mbps. ISO11519 je CAN komunikacijski standard niske brzine sa komunikacijskom brzinom manjom od 125kbps.

Ovdje se fokusiramo na CAN velike brzine.

ISO-11898 opisuje kako se informacije prenose između uređaja na mreži i usklađen je s modelom međusobnog povezivanja otvorenih sistema (OSI) koji je definiran u smislu slojeva. Stvarna komunikacija između uređaja povezanih fizičkim medijem definirana je fizičkim slojem modela

  • Svaka CAN jedinica spojena na sabirnicu može se nazvati čvorom. Sve CAN jedinice su spojene na sabirnicu koja je završena na svakom kraju sa otpornicima od 120 Ω kako bi se formirala mreža. Autobus se sastoji od linija CAN_H i CAN_L. CAN kontroler određuje razinu sabirnice na osnovu razlike u razini snage na obje žice. Nivoi autobusa su podijeljeni na dominantne i recesivne, koji mora biti jedan od njih. Pošiljatelj šalje poruku primatelju promjenom na razini sabirnice. Kada se logička linija "i" izvrši na sabirnici, dominantni nivo je "0", a recesivni nivo je "1".
  • U dominantnom stanju, napon CAN_H je oko 3,5 V, a napon CAN_L je oko 1,5 V. U recesivnom stanju, napon oba voda je oko 2.5V.
  • Signal je diferencijalni pa CAN ima snažnu otpornost na buku i toleranciju grešaka. Uravnoteženi diferencijalni signal smanjuje spajanje šuma i omogućava velike brzine signalizacije preko kabela s upletenom parom. Struja u svakoj signalnoj liniji je jednaka, ali u suprotnom smjeru i rezultira efektom poništavanja polja koji je ključan za nisku emisiju šuma. Korištenje uravnoteženih diferencijalnih prijemnika i upletenih kabela poboljšava odbijanje zajedničkog moda i visoku otpornost na šum CAN sabirnice.

CAN primopredajnik

CAN primopredajnik je odgovoran za konverziju između logičkog nivoa i fizičkog signala. Pretvorite logički signal u diferencijalnu razinu ili fizički signal u logičku razinu.

CAN kontroler

CAN kontroler je ključna komponenta CAN -a, koji realizira sve funkcije sloja podatkovne veze u CAN protokolu i može automatski riješiti CAN protokol.

MCU

MCU je odgovoran za upravljanje funkcijskim krugom i CAN kontrolerom. Na primjer, parametri CAN kontrolera se inicijaliziraju kada se čvor pokrene, CAN okvir se čita i šalje preko CAN kontrolera itd.

Korak 2: O CAN komunikacijama

Kada je sabirnica u stanju mirovanja, svi čvorovi mogu početi slati poruke (kontrola s više master-a). Čvor koji prvi pristupa sabirnici dobiva pravo slanja (način rada CSMA/CA). Kada više čvorova počne slati istovremeno, čvor koji šalje ID poruku visokog prioriteta dobiva pravo na slanje.

U CAN protokolu sve se poruke šalju u fiksnom formatu. Kada je sabirnica u stanju mirovanja, sve jedinice povezane na sabirnicu mogu početi slati nove poruke. Kada više od dvije ćelije počnu slati poruke, prioritet se određuje na temelju identifikatora. ID ne predstavlja odredišnu adresu slanja, već prioritet poruke koja pristupa magistrali. Kada više od dvije ćelije počnu slati poruke istovremeno, svaki bit ID-a bez kamata arbitrira se jedan po jedan. Jedinica koja dobije arbitražu može nastaviti slati poruke, a jedinica koja izgubi arbitražu odmah prestaje slati i prima rad.

CAN sabirnica je vrsta sabirnice koja se emitira. To znači da svi čvorovi mogu 'čuti' sve prijenose. svi čvorovi će uvijek pokupiti sav promet. CAN hardver pruža lokalno filtriranje tako da svaki čvor može reagirati samo na zanimljive poruke.

Korak 3: Okviri

Okviri
Okviri

CAN uređaji šalju podatke preko CAN mreže u paketima koji se nazivaju okviri. CAN ima četiri vrste okvira:

  • Okvir podataka: okvir koji sadrži podatke čvora za prijenos
  • Udaljeni okvir: okvir koji zahtijeva prijenos određenog identifikatora
  • Okvir greške: okvir koji prenosi bilo koji čvor koji otkriva grešku
  • Okvir preopterećenja: okvir za ubrizgavanje kašnjenja između podataka ili udaljenog okvira

Okvir podataka

Postoje dvije vrste okvira podataka, standardni i prošireni.

Značenje bitnih polja na slici je:

  • SOF - Bit s jednim dominantnim početkom okvira (SOF) označava početak poruke i koristi se za sinhronizaciju čvorova na sabirnici nakon mirovanja.
  • Identifikator-Standardni CAN 11-bitni identifikator uspostavlja prioritet poruke. Što je binarna vrijednost niža, to je njen prioritet veći.
  • RTR - Bit zahtjeva za pojedinačni daljinski prijenos (RTR)
  • IDE - Dominirajući bit proširenja za jedan identifikator (IDE) znači da se prenosi standardni CAN identifikator bez proširenja.
  • R0 - Rezervirani bit (za moguću upotrebu s budućim izmjenama standarda).
  • DLC-4-bitni kod dužine podataka (DLC) sadrži broj bajtova podataka koji se prenose.
  • Podaci – može se prenijeti do 64 bita aplikacijskih podataka.
  • CRC-16-bitna (15 bita plus razdjelnik) ciklična provjera redundancije (CRC) sadrži kontrolni zbroj (broj prenesenih bitova) prethodnih podataka aplikacije za otkrivanje grešaka.
  • ACK – ACK je 2 bita, jedan je bit za potvrdu, a drugi je graničnik.
  • EOF-Ovo 7-bitno polje na kraju okvira (EOF) označava kraj CAN okvira (poruke) i onemogućava postavljanje bitova, ukazujući na grešku pri popunjavanju kada je dominantna. Kada se tijekom normalnog rada uzastopno pojavi 5 bitova istog logičkog nivoa, u podatke se ubacuje dio suprotnog logičkog nivoa.
  • IFS-Ovaj 7-bitni međuokvirni prostor (IFS) sadrži vrijeme potrebno kontroleru za premještanje ispravno primljenog okvira na odgovarajući položaj u području međuspremnika za poruke.

Arbitraža

U stanju mirovanja sabirnice, jedinica koja prva počne slati poruku dobiva pravo slanja. Kada više jedinica počne slati istovremeno, svaka jedinica za slanje počinje od prvog bita segmenta arbitraže. Jedinica s najvećim brojem kontinuiranih izlaznih dominantnih nivoa može nastaviti slati.

Korak 4: Brzina i udaljenost

Brzina i Rastojanje
Brzina i Rastojanje

CAN sabirnica je sabirnica koja povezuje više jedinica istovremeno. Teoretski ne postoji ograničenje ukupnog broja jedinica koje se mogu povezati. U praksi, međutim, broj jedinica koje se mogu spojiti ograničen je vremenskim kašnjenjem na sabirnici i električnim opterećenjem. Smanjite brzinu komunikacije, povećajte broj jedinica koje se mogu povezati i povećajte brzinu komunikacije, smanjuje se broj jedinica koje se mogu povezati.

Komunikacijska udaljenost je obrnuto povezana s brzinom komunikacije, a što je udaljenost komunikacije manja, brzina komunikacije je manja. Duža udaljenost može biti 1 km ili više, ali brzina je manja od 40 km / s.

Korak 5: Hardver

Hardver
Hardver

Maduino Zero CAN-BUS modul je alat koji je razvio Makerfabs za CANbus komunikaciju-zasnovan je na Arduinu, s CAN kontrolerom i CAN primopredajnikom, za stvaranje gotovog porta za CAN-sabirnicu.

  • MCP2515 je samostalni CAN kontroler koji implementira CAN specifikaciju. Sposoban je za prijenos i prijem i standardnih i proširenih podataka i udaljenih okvira.
  • MAX3051 sučelje između kontrolera protokola CAN i fizičkih žica sabirničkih linija u mreži kontrolera (CAN). MAX3051 pruža mogućnost diferencijalnog odašiljanja sabirnici i mogućnost diferencijalnog prijema CAN kontroleru.

Korak 6: Povezivanje

Veza
Veza

Spojite DHT11 modul na Maduino Zero CAN-BUS modul žicama koje će se koristiti kao instrument za podršku CAN komunikaciji. Slično, povežite ekran sa modulom da biste primili podatke i prikazali ih.

Veza između Maduino Zero CANBUS i DHT11:

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ PODACI

Veza između Maduino Zero CANBUS -a i OLED -a:

Maduino Zero CANBUS - OLED

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

Za spajanje dva Maduino Zero CANBUS modula upotrijebite DB9 kabel.

Korak 7: Kodirajte

MAX3051 dovršava konverziju diferencijalnih nivoa u logičke signale. MCP2515 dovršava funkciju CAN, poput kodiranja i dekodiranja podataka. MCU samo treba pokrenuti kontroler i slati i primati podatke.

  • Github:
  • Nakon instaliranja Arduina, ne postoji paket koji podržava ploču (Arduino nula) koji je potreban za instalaciju.
  • Odaberite alate -> ploča -> upravitelj odbora, pretražite "Arduino zero" i instalirajte "Arduino SAMD ploče".
  • Odaberite Alati -> Ploča -> Arduino Zero (izvorni USB port), odaberite Alati -> Port -> com…
  • Nakon što preuzmete program sa GitHub -a, morate biti sigurni da su sve datoteke u direktoriju projekta, koji sadrži datoteke biblioteke koje podržavaju CANBUS.
  • Instalirajte biblioteku DHT senzora tvrtke Adafruit koja se koristi za pogon DHT11 na postizanje temperature i vlažnosti.
  • Koristite različite adrese za slanje temperature i vlažnosti zasebno u kodu Test_DHT11.ino.

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

kašnjenje (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); kašnjenje (500);

"0x10" je srednji ID poruke, "0" je standardni standardni okvir, "stmp1.length ()" je dužina poruke, "stmp_send1" su poslani podaci.

  • U kodu Test_OLED.ino sve poruke na CANBUS -u primaju se upitom i potrebne informacije se prikazuju na OLED -u.
  • Prenesite program Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino u modul koji je povezan sa senzorom, a program Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino na drugi modul koji je spojen na OLED.

Korak 8: Pokažite

Show
Show
Show
Show

Uključivanjem dva modula, temperatura i vlažnost će se prikazati na ekranu.

Preporučuje se: