Բովանդակություն:

Պարզ ձեռնարկ CANBUS- ի համար. 8 քայլ
Պարզ ձեռնարկ CANBUS- ի համար. 8 քայլ

Video: Պարզ ձեռնարկ CANBUS- ի համար. 8 քայլ

Video: Պարզ ձեռնարկ CANBUS- ի համար. 8 քայլ
Video: Все, что вам нужно знать о том, что находится в блоке предохранителей автомобиля 2024, Սեպտեմբեր
Anonim
Պարզ ձեռնարկ CANBUS- ի համար
Պարզ ձեռնարկ CANBUS- ի համար

Ես երեք շաբաթ սովորում եմ CAN, և այժմ ավարտել եմ որոշ հայտեր `ուսումնառությանս արդյունքները հաստատելու համար: Այս ձեռնարկում դուք կսովորեք, թե ինչպես օգտագործել Arduino- ն CANBUS հաղորդակցությունն իրականացնելու համար: Եթե ունեք որևէ առաջարկ, խնդրում ենք թողնել հաղորդագրություն:

Պարագաներ:

Սարքավորումներ:

  • Maduino Zero CANBUS
  • DHT11 ջերմաստիճանի և խոնավության մոդուլ
  • 1.3 "I2C OLED 128x64- կապույտ
  • DB9- ից DB9 մալուխ (կինից կին)
  • Dupont Line

Softwareրագրային ապահովում:

Arduino IDE

Քայլ 1. Ինչ է CANBUS- ը

Ինչ է CANBUS- ը
Ինչ է CANBUS- ը
Ինչ է CANBUS- ը
Ինչ է CANBUS- ը

CAN- ի մասին

CAN (Controller Area Network) սերիական հաղորդակցության ցանց է, որը կարող է իրականացնել իրական ժամանակի բաշխված վերահսկողություն: Այն մշակվել է ավտոմոբիլային արդյունաբերության համար `բարդ լարերի ամրագոտիները երկալար ավտոբուսով փոխարինելու համար:

CAN արձանագրությունը սահմանում է Տվյալների կապի շերտը և Ֆիզիկական շերտի մի մասը OSI մոդելում:

CAN արձանագրությունը ստանդարտացված է ISO11898 և ISO11519 ստանդարտներով: ISO11898- ը CAN գերարագ հաղորդակցման ստանդարտ է ՝ 125kbps-1Mbps հաղորդակցության արագությամբ: ISO11519- ը CAN ցածր արագության հաղորդակցության ստանդարտ է ՝ 125 կբիթ / վ-ից պակաս հաղորդակցության արագությամբ:

Այստեղ մենք կենտրոնանում ենք բարձր արագությամբ CAN- ի վրա:

ISO-11898- ը նկարագրում է, թե ինչպես է տեղեկատվությունը փոխանցվում ցանցի սարքերի միջև և համապատասխանում է Բաց համակարգերի փոխկապակցման մոդելին (OSI), որը սահմանվում է շերտերի առումով: Ֆիզիկական միջավայրով միացված սարքերի միջև իրական հաղորդակցությունը որոշվում է մոդելի ֆիզիկական շերտով:

  • Ավտոբուսին միացված CAN յուրաքանչյուր միավոր կարելի է անվանել հանգույց: Բոլոր CAN միավորները միացված են յուրաքանչյուր ծայրում դադարեցված ավտոբուսին ՝ 120 Ω դիմադրիչներով ՝ ցանց ստեղծելու համար: Ավտոբուսը բաղկացած է CAN_H և CAN_L գծերից: CAN վերահսկիչը որոշում է ավտոբուսի մակարդակը `հիմնվելով երկու լարերի հզորության մակարդակի տարբերության վրա: Ավտոբուսների մակարդակները բաժանվում են գերիշխող և հեռացվող մակարդակների, որոնք պետք է լինեն դրանցից մեկը: Ուղարկողն ուղարկում է հաղորդագրությունը ստացողին `ավտոբուսի մակարդակում փոփոխություն կատարելով: Երբ ավտոբուսում «և» տրամաբանական գիծը կատարվում է, գերիշխող մակարդակը «0» է, իսկ հեռացվող մակարդակը ՝ «1»:
  • Գերիշխող վիճակում CAN_H- ի լարումը մոտ 3.5V է, իսկ CAN_L- ը `մոտ 1.5V: Ռեցեսիվ վիճակում երկու գծերի լարումը մոտ 2.5 Վ է:
  • Ազդանշանը դիֆերենցիալ է, այդ իսկ պատճառով CAN- ը ստանում է իր ուժեղ աղմուկի իմունիտետը և անսարքությունների հանդուրժողականությունը: Հավասարակշռված դիֆերենցիալ ազդանշանը նվազեցնում է աղմուկի միացումը և թույլ է տալիս բարձր ազդանշանային ազդանշաններ ոլորված զույգ մալուխի վրա: Յուրաքանչյուր ազդանշանային տողում հոսանքը հավասար է, բայց հակառակ ուղղությամբ և հանգեցնում է դաշտի չեղարկման էֆեկտի, որը կարևոր է ցածր աղմուկի արտանետումների համար: Հավասարակշռված դիֆերենցիալ ընդունիչների և ոլորված զույգերի մալուխների օգտագործումը մեծացնում է CAN ավտոբուսի ընդհանուր ռեժիմի մերժումը և բարձր աղմուկի իմունիտետը:

CAN Հաղորդիչ

CAN հաղորդիչը պատասխանատու է տրամաբանական մակարդակի և ֆիզիկական ազդանշանի փոխակերպման համար: Փոխակերպեք տրամաբանական ազդանշանը դիֆերենցիալ մակարդակի կամ ֆիզիկական ազդանշանը տրամաբանական մակարդակի:

CAN վերահսկիչ

CAN Controller- ը CAN- ի հիմնական բաղադրիչն է, որն իրականացնում է CAN արձանագրության տվյալների հղման շերտի բոլոր գործառույթները և կարող է ինքնաբերաբար լուծել CAN արձանագրությունը:

MCU

MCU- ն պատասխանատու է գործառնական սխեմայի և CAN վերահսկիչի վերահսկման համար: Օրինակ, CAN վերահսկիչի պարամետրերը նախաստորագրվում են, երբ հանգույցը սկսվում է, CAN շրջանակը կարդացվում և ուղարկվում է CAN վերահսկիչի միջոցով և այլն:

Քայլ 2. CAN Communications- ի մասին

Երբ ավտոբուսն անգործության է մատնված, բոլոր հանգույցները կարող են սկսել հաղորդագրություններ ուղարկել (մուլտիմիստերալ հսկողություն): Այն հանգույցը, որն առաջինը մուտք է գործում ավտոբուս, ստանում է ուղարկելու իրավունք (CSMA/CA ռեժիմ): Երբ միանգամից մի քանի հանգույց սկսում են ուղարկել, այն առաջնային ID- ն ուղարկող հանգույցը ստանում է ուղարկելու իրավունք:

CAN արձանագրության մեջ բոլոր հաղորդագրությունները ուղարկվում են ֆիքսված ձևաչափով: Երբ ավտոբուսն անգործուն է, ավտոբուսին միացված բոլոր միավորները կարող են սկսել նոր հաղորդագրություններ ուղարկել: Երբ միանգամից երկու բջիջ սկսում է հաղորդագրություններ ուղարկել, առաջնահերթությունը որոշվում է նույնացուցիչի հիման վրա: ID- ն չի ներկայացնում ուղարկողի նպատակակետի հասցեն, այլ ավտոբուս մուտք գործած հաղորդագրության առաջնահերթությունը: Երբ միանգամից երկու բջիջ սկսում է հաղորդագրություններ ուղարկել, անտոկոս ID- ի յուրաքանչյուր բիթը մեկ առ մեկ արբիտրաժային է: Արբիտրաժում հաղթող ստորաբաժանումը կարող է շարունակել հաղորդագրություններ ուղարկել, իսկ արբիտրաժը կորցրած միավորն անմիջապես դադարում է ուղարկել և ստանալ աշխատանքը:

CAN ավտոբուսը ավտոբուսի հեռարձակման տեսակ է: Սա նշանակում է, որ բոլոր հանգույցները կարող են «լսել» բոլոր փոխանցումները: բոլոր հանգույցներն անփոփոխ կվերցնեն ամբողջ տրաֆիկը: CAN ապարատը ապահովում է տեղական զտում, որպեսզի յուրաքանչյուր հանգույց կարողանա արձագանքել միայն հետաքրքիր հաղորդագրություններին:

Քայլ 3: Շրջանակներ

Շրջանակներ
Շրջանակներ

CAN սարքերը տվյալները փոխանցում են CAN ցանցի միջոցով ՝ շրջանակներ կոչվող փաթեթներով: CAN- ն ունի շրջանակի չորս տեսակ.

  • Տվյալների շրջանակ ՝ փոխանցման համար հանգույցի տվյալներ պարունակող շրջանակ
  • Հեռակա շրջանակ. Շրջանակ, որը պահանջում է փոխանցել որոշակի նույնացուցիչ
  • Սխալների շրջանակ. Սխալ, որը հայտնաբերում է սխալը հայտնաբերող ցանկացած հանգույց
  • Overանրաբեռնվածության շրջանակ. Տվյալների կամ հեռավոր շրջանակի միջև ուշացում ներարկելու շրջանակ

Տվյալների շրջանակ

Կան երկու տեսակի տվյալների շրջանակներ `ստանդարտ և ընդլայնված:

Նկարի բիտ դաշտերի իմաստն է.

  • SOF - Շրջանակի միայն մեկ գերիշխող սկիզբ (SOF) բիթը նշում է հաղորդագրության սկիզբը և օգտագործվում է անգործությունից հետո ավտոբուսի հանգույցների համաժամացման համար:
  • Նույնացուցիչ-Ստանդարտ CAN 11-բիթ նույնացուցիչը սահմանում է հաղորդագրության առաջնահերթությունը: Որքան ցածր է երկուական արժեքը, այնքան բարձր է դրա առաջնահերթությունը:
  • RTR - հեռակառավարման փոխանցման մեկ հայցի (RTR) բիթ
  • IDE - Գերիշխող մեկ նույնացուցիչի ընդլայնման (IDE) բիթ նշանակում է, որ ստանդարտ CAN նույնացուցիչ է փոխանցվում առանց ընդլայնման:
  • R0 - Պահված բիթ (հնարավոր է, որ այն կիրառվի ապագա ստանդարտ փոփոխությամբ):
  • DLC-Տվյալների երկարության 4-բիթանոց ծածկագիրը (DLC) պարունակում է փոխանցվող տվյալների բայթերի քանակը:
  • Տվյալներ - Մինչև 64 բիթ կիրառական տվյալներ կարող են փոխանցվել:
  • CRC-16-բիթանոց (15 բիթ գումարած սահմանազատիչ) ցիկլային ավելորդության ստուգումը (ՀՌԿ) պարունակում է սխալի հայտնաբերման համար նախորդ հայտի տվյալների ստուգման գումարը (փոխանցված բիթերի թիվը):
  • ACK – ACK- ը 2 բիթ է, մեկը ճանաչման բիթն է, իսկ երկրորդը ՝ սահմանազատիչը:
  • EOF-Այս շրջանակի վերջը (EOF), 7 բիթանոց դաշտը նշում է CAN շրջանակի (հաղորդագրության) ավարտը և անջատում է բիթսեթինգը ՝ նշելով լցոնման սխալը, երբ գերիշխող է: Երբ նորմալ գործողության ընթացքում հաջորդականությամբ առաջանում են միևնույն տրամաբանական մակարդակի 5 բիթ, տվյալների մի փոքր հակառակ տրամաբանական մակարդակը լցվում է տվյալների մեջ:
  • IFS-Այս 7 բիթանոց միջերկրային տարածությունը (IFS) պարունակում է այն ժամանակը, որը պահանջվում է վերահսկիչի կողմից ՝ ճիշտ ստացված շրջանակը հաղորդագրությունների բուֆերային տարածքում իր համապատասխան դիրքի տեղափոխելու համար:

Միջնորդ դատարանի որոշում

Ավտոբուսի անգործուն վիճակում այն միավորը, որն առաջինը սկսում է ուղարկել հաղորդագրությունը, ստանում է ուղարկելու իրավունքը: Երբ մի քանի միավոր սկսում են ուղարկել միաժամանակ, յուրաքանչյուր ուղարկող միավոր սկսվում է արբիտրաժային հատվածի առաջին բիթից: Ամենամեծ թվով շարունակական ելքային գերիշխող մակարդակ ունեցող միավորը կարող է շարունակել ուղարկել:

Քայլ 4: Արագություն և հեռավորություն

Արագություն և հեռավորություն
Արագություն և հեռավորություն

CAN ավտոբուսը ավտոբուս է, որը միաժամանակ միացնում է բազմաթիվ միավորներ: Տեսականորեն սահմանափակում չկա միացված միավորների ընդհանուր քանակին: Գործնականում, սակայն, միավորների թիվը, որոնք կարող են միացվել, սահմանափակվում է ավտոբուսում ժամանակի հետաձգմամբ և էլեկտրական բեռով: Նվազեցրեք հաղորդակցության արագությունը, ավելացրեք միավորների քանակը, որոնք կարող են միացվել, և բարձրացրեք հաղորդակցության արագությունը, նվազեցվող միավորների թիվը նվազում է:

Հաղորդակցության հեռավորությունը հակադարձ կապ ունի հաղորդակցության արագության հետ, և որքան հեռու է հաղորդակցության հեռավորությունը, այնքան փոքր է հաղորդակցության արագությունը: Ավելի երկար հեռավորությունը կարող է լինել 1 կմ կամ ավելի, բայց արագությունը 40 կմ / վ -ից պակաս է:

Քայլ 5: Սարքավորումներ

Սարքավորումներ
Սարքավորումներ

Maduino Zero CAN-BUS մոդուլը Makerfabs- ի կողմից մշակված գործիք է CANbus կապի համար, այն հիմնված է Arduino- ի վրա ՝ CAN վերահսկիչով և CAN հաղորդիչով ՝ պատրաստ օգտագործման համար նախատեսված CAN-bus պորտ:

  • MCP2515- ը ինքնուրույն CAN վերահսկիչ է, որն իրականացնում է CAN- ի բնութագիրը: Այն ունակ է փոխանցել և ստանալ ինչպես ստանդարտ, այնպես էլ ընդլայնված տվյալներ և հեռակա շրջանակներ:
  • MAX3051- ը միանում է CAN արձանագրության վերահսկիչի և վերահսկիչ տարածքի ցանցում (CAN) ավտոբուսային գծերի ֆիզիկական լարերի միջև: MAX3051- ն ապահովում է ավտոբուսին դիֆերենցիալ փոխանցման և CAN վերահսկիչին դիֆերենցիալ ընդունման հնարավորություն:

Քայլ 6: Միացում

Միացում
Միացում

DHT11 մոդուլը միացրեք Maduino Zero CAN-BUS մոդուլին լարերով, որոնք կօգտագործվեն որպես CAN հաղորդակցությանը աջակցելու գործիք: Նմանապես, էկրանը միացրեք մոդուլին `տվյալները ստանալու և ցուցադրելու համար:

Maduino Zero CANBUS- ի և DHT11- ի միջև կապը

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ ՏՎՅԱԼՆԵՐ

Maduino Zero CANBUS- ի և OLED- ի միջև կապը

Maduino Zero CANBUS - OLED

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

Օգտագործեք DB9 մալուխ ՝ երկու Maduino Zero CANBUS մոդուլները միացնելու համար:

Քայլ 7: Կոդ

MAX3051- ն ավարտում է դիֆերենցիալ մակարդակների փոխակերպումը տրամաբանական ազդանշանների: MCP2515- ն ավարտում է CAN գործառույթը, ինչպիսիք են տվյալների կոդավորումը և վերծանումը: MCU- ին անհրաժեշտ է միայն կարգաբերել վերահսկիչը և ուղարկել և ստանալ տվյալներ:

  • Github ՝
  • Տեղադրված Arduino- ից հետո տախտակին աջակցող փաթեթ չկա (Arduino զրո), որն անհրաժեշտ է տեղադրելու համար:
  • Ընտրեք գործիքներ -> Տախտակ -> Տախտակի կառավարիչ, որոնեք «Arduino zero» և տեղադրեք «Arduino SAMD տախտակներ»:
  • Ընտրեք Գործիքներ -> Տախտակ -> Arduino Zero (մայրենի USB պորտ), ընտրեք Գործիքներ -> Պորտ -> com…
  • GitHub- ից ծրագիրը ստանալուց հետո դուք պետք է համոզվեք, որ բոլոր ֆայլերը գտնվում են նախագծի գրացուցակում, որը պարունակում է գրադարանային ֆայլեր, որոնք աջակցում են CANBUS:
  • Տեղադրեք DHT տվիչների գրադարանը Adafruit- ի կողմից, որն օգտագործվում է DHT11- ը քշելու համար ջերմաստիճան և խոնավություն ստանալու համար:
  • Test_DHT11.ino ծածկագրում ջերմաստիճանը և խոնավությունը առանձին ուղարկելու համար օգտագործեք տարբեր հասցեներ:

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

ուշացում (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); ուշացում (500);

«0x10» նշանակում է հաղորդագրության ID, «0» ՝ միջին ստանդարտ շրջանակ, «stmp1.length ()» ՝ հաղորդագրության երկարություն, «stmp_send1» ՝ ուղարկված տվյալներ:

  • Test_OLED.ino ծածկագրում CANBUS- ի բոլոր հաղորդագրությունները ստացվում են հարցման միջոցով և պահանջվող տեղեկատվությունը ցուցադրվում է OLED- ում:
  • Վերբեռնեք Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino ծրագիրը սենսորին միացված մոդուլում և վերբեռնեք Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino մոդուլին:

Քայլ 8: Showույց տալ

Ցուցադրում
Ցուցադրում
Ցուցադրում
Ցուցադրում

Երկու մոդուլների միացում, ջերմաստիճան և խոնավություն կցուցադրվեն էկրանին:

Խորհուրդ ենք տալիս: