Mundarija:

KANBUS uchun oddiy darslik: 8 qadam
KANBUS uchun oddiy darslik: 8 qadam

Video: KANBUS uchun oddiy darslik: 8 qadam

Video: KANBUS uchun oddiy darslik: 8 qadam
Video: BTT - Manta E3EZ - CB1 with EMMc install 2024, Noyabr
Anonim
KANBUS uchun oddiy qo'llanma
KANBUS uchun oddiy qo'llanma

Men uch haftadan buyon CANni o'rganyapman va hozirda o'quv natijalarini tasdiqlash uchun ba'zi ilovalarni to'ldirdim. Ushbu qo'llanmada siz CANBUS aloqasini amalga oshirish uchun Arduino -dan foydalanishni o'rganasiz. Agar sizda biron bir taklif bo'lsa, xabar qoldiring.

Ta'minot:

Uskuna:

  • Maduino nol KANBUS
  • DHT11 Harorat va namlik moduli
  • 1,3 dyuymli I2C OLED 128x64- ko'k
  • DB9 - DB9 kabeli (ayoldan ayolgacha)
  • Dupont liniyasi

Dasturiy ta'minot:

Arduino IDE

1 -qadam: KANBUS nima?

KANBUS nima
KANBUS nima
KANBUS nima
KANBUS nima

CAN haqida

CAN (Controller Area Network)-bu ketma-ket aloqa tarmog'i bo'lib, u real vaqtda tarqatilgan boshqaruvni amalga oshiradi. U avtomobilsozlik uchun murakkab simlarni ikki simli avtobusga almashtirish uchun ishlab chiqilgan.

CAN protokoli OSI modelidagi ma'lumotlar havolasi qatlamini va jismoniy qatlamning bir qismini belgilaydi.

CAN protokoli ISO standarti ISO11898 va ISO11519. ISO11898-yuqori tezlikdagi aloqa standarti, 125kbps-1Mbit / s. ISO11519-CAN past tezlikli aloqa standarti, aloqa tezligi 125 kbit / s dan past.

Bu erda biz yuqori tezlikdagi CANga e'tibor qaratamiz.

ISO-11898 ma'lumoti tarmoqdagi qurilmalar o'rtasida qanday o'tkazilishini va qatlamlar bo'yicha aniqlangan Ochiq tizimlar o'zaro bog'lanish modeliga (OSI) mos kelishini tasvirlaydi. Jismoniy vosita bilan ulangan qurilmalar orasidagi haqiqiy aloqa modelning fizik qatlami bilan belgilanadi

  • Avtobusga ulangan har bir CAN birligini tugun deb atash mumkin. Barcha CAN birliklari tarmoq yaratish uchun har bir uchida 120 Ω rezistorlar bilan uzilgan avtobusga ulangan. Avtobus CAN_H va CAN_L liniyalaridan iborat. CAN tekshirgichi avtobus darajasini ikkala simning quvvat darajasidagi farqga qarab aniqlaydi. Avtobus darajalari dominant va retsessiv darajalarga bo'linadi, bu ulardan biri bo'lishi kerak. Yuboruvchi avtobus darajasida o'zgarish qilish orqali xabarni qabul qiluvchiga yuboradi. Avtobusda "va" mantiqiy chizig'i bajarilganda, dominant daraja "0" va retsessiv daraja "1" bo'ladi.
  • Dominant holatda, CAN_H kuchlanishi taxminan 3,5 V ga, CAN_L kuchlanishi esa taxminan 1,5 V ga teng. Retsessiv holatda ikkala chiziqning kuchlanishi 2,5 V atrofida.
  • Signal differentsialdir, shuning uchun CAN o'zining kuchli shovqin immunitetini va xatolarga bardoshliligini oladi. Balansli differentsial signal shovqinni kamaytiradi va o'ralgan kabel orqali signal uzatish tezligini oshiradi. Har bir signal chizig'idagi oqim teng, lekin teskari yo'nalishda va natijada shovqinning past emissiyasi uchun kalit bo'lgan maydonni bekor qilish effekti paydo bo'ladi. Balansli differentsial qabul qilgichlar va o'ralgan kabellardan foydalanish CAN avtobusining umumiy rejimini rad etish va yuqori shovqin immunitetini oshiradi.

Qabul qilgichni CAN

CAN Transceiver mantiq darajasi va jismoniy signal o'rtasidagi konversiya uchun javobgardir. Mantiqiy signalni differentsial darajaga yoki jismoniy signalni mantiqiy darajaga o'tkazing.

JON boshqaruvchisi

CAN tekshirgichi CAN protokolidagi ma'lumotlar havolasi qatlamining barcha funktsiyalarini bajaradigan va CAN protokolini avtomatik ravishda hal qila oladigan CANning asosiy komponentidir.

MCU

MCU funktsiya sxemasi va CAN tekshirgichini boshqarish uchun javobgardir. Masalan, tugma ishga tushganda, CAN ramkasi o'qiladi va CAN tekshirgichi orqali yuboriladi va hokazo.

2 -qadam: CAN aloqa haqida

Avtobus ishlamay qolganda, barcha tugunlar xabar yuborishni boshlashi mumkin (ko'p ustali boshqaruv). Avtobusga birinchi kirgan tugun yuborish huquqini oladi (CSMA/CA rejimi). Bir vaqtning o'zida bir nechta tugun yuborishni boshlaganda, yuqori aniqlikdagi ID xabarini yuboradigan tugun yuborish huquqiga ega bo'ladi.

CAN protokolida barcha xabarlar belgilangan formatda yuboriladi. Avtobus ishlamay qolganda, avtobusga ulangan barcha birliklar yangi xabarlarni yuborishni boshlashi mumkin. Bir vaqtning o'zida ikkita hujayradan ko'proq xabar yuborishni boshlaganda, ustuvorlik identifikator asosida aniqlanadi. ID yuborilgan manzilni emas, balki avtobusga kiruvchi xabarning ustuvorligini bildiradi. Bir vaqtning o'zida ikkitadan ortiq hujayralar xabar yuborishni boshlaganda, foizsiz identifikatorning har bir biti birma-bir hakamlik qilinadi. Hakamlik sudida g'alaba qozongan birlik xabar yuborishni davom ettirishi mumkin, hakamlikdan mahrum bo'lgan birlik esa darhol jo'natishni to'xtatadi va ishni oladi.

CAN avtobusi - bu uzatiladigan avtobus turi. Bu shuni anglatadiki, barcha tugunlar barcha uzatishni "eshita oladi". barcha tugunlar doimiy ravishda barcha trafikni oladi. CAN apparati har bir tugun faqat qiziqarli xabarlarga javob berishi uchun mahalliy filtrlashni ta'minlaydi.

3 -qadam: ramkalar

Ramkalar
Ramkalar

CAN qurilmalari ma'lumotlarni CAN tarmog'i orqali ramkalar deb nomlangan paketlarga yuboradi. CAN to'rt xil ramka turiga ega:

  • Ma'lumotlar doirasi: uzatish uchun tugun ma'lumotlarini o'z ichiga olgan ramka
  • Masofaviy ramka: ma'lum bir identifikatorni uzatishni talab qiladigan ramka
  • Xato ramkasi: xatoni aniqlaydigan har qanday tugun orqali uzatiladigan ramka
  • Haddan tashqari yuklangan ramka: ma'lumotlar yoki masofali ramka o'rtasida kechikish hosil qilish uchun ramka

Ma'lumotlar ramkasi

Ma'lumotlar ramkasining ikki turi mavjud, standart va kengaytirilgan.

Rasmdagi bit maydonlarining ma'nosi:

  • SOF - ramkaning yagona dominant boshlanishi (SOF) xabarning boshlanishini bildiradi va bo'sh turganidan keyin avtobusdagi tugunlarni sinxronlashtirish uchun ishlatiladi.
  • Identifier-standart 11-bitli CAN identifikatori xabarning ustuvorligini belgilaydi. Ikkilik qiymat qanchalik past bo'lsa, uning ustuvorligi shuncha yuqori bo'ladi.
  • RTR - yagona masofaviy uzatish so'rovi (RTR) biti
  • IDE - dominant yagona identifikator kengaytmasi (IDE) biti kengaytmasi bo'lmagan standart CAN identifikatori uzatilishini bildiradi.
  • R0 - zaxiralangan bit (kelajakda standart o'zgartirishlar kiritilishi mumkin).
  • DLC-Ma'lumot uzunligining 4-bitli kodi (DLC) uzatiladigan ma'lumotlarning bayt sonini o'z ichiga oladi.
  • Ma'lumotlar - 64 bitgacha bo'lgan dastur ma'lumotlari uzatilishi mumkin.
  • CRC-16-bitli (15 bit plyus ajratuvchi) davriy takroriylikni tekshirish (CRC) xatolarni aniqlash uchun oldingi dastur ma'lumotlarining nazorat yig'indisini (uzatilgan bitlar soni) o'z ichiga oladi.
  • ACK -ACK - bu 2 bit, biri - tasdiqlash biti, ikkinchisi - ajratuvchi.
  • EOF-Bu 7-bitli ramka oxiri (EOF), CAN ramkasining (xabarining) oxirini belgilaydi va bitlarni to'ldirishni o'chirib qo'yadi, bu dominant bo'lganda to'ldirish xatosini ko'rsatadi. Oddiy ish paytida bir xil mantiq darajasining 5 biti ketma -ket sodir bo'lganda, ma'lumotlarga qarama -qarshi mantiq darajasining bir qismi to'ldiriladi.
  • IFS-Bu 7 bitli kadrlararo bo'shliq (IFS) to'g'ri qabul qilingan kadrni xabarlar buferi maydonida kerakli joyga o'tkazish uchun zarur bo'lgan vaqtni o'z ichiga oladi.

Arbitraj

Avtobus ishlamay qolganda, xabar yuborishni boshlagan birlik birinchi bo'lib yuborish huquqini oladi. Bir vaqtning o'zida bir nechta birlik yuborishni boshlaganda, har bir yuboruvchi birlik hakamlik segmentining birinchi qismidan boshlanadi. Eng ko'p uzluksiz ishlab chiqaruvchi dominant darajadagi birlik yuborishni davom ettirishi mumkin.

4 -qadam: Tezlik va masofa

Tezlik va masofa
Tezlik va masofa

CAN avtobusi - bu bir vaqtning o'zida bir nechta birliklarni bog'laydigan avtobus. Ulanish mumkin bo'lgan birliklarning umumiy soniga nazariy jihatdan cheklov yo'q. Biroq, amalda, ulanishi mumkin bo'lgan birliklar soni avtobusda kechikish va elektr yuki bilan chegaralanadi. Aloqa tezligini kamaytiring, ulanadigan birliklar sonini oshiring va aloqa tezligini oshiring, ulanadigan birliklar soni kamayadi.

Aloqa masofasi aloqa tezligiga teskari bog'liq va aloqa masofasi qanchalik uzoq bo'lsa, aloqa tezligi shuncha kichik bo'ladi. Uzunroq masofa 1 km yoki undan ko'p bo'lishi mumkin, lekin tezligi 40 km dan kam.

5 -qadam: Uskuna

Uskuna
Uskuna

Maduino Zero CAN-BUS moduli-bu Makerfabs tomonidan CANbus aloqasi uchun ishlab chiqilgan vosita, u Arduino-ga asoslangan, CAN-nazoratchi va CAN-qabul qilgich bilan, foydalanishga tayyor CAN-avtobus portini yaratish uchun.

  • MCP2515-bu CAN spetsifikatsiyasini bajaradigan mustaqil CAN boshqaruvchisi. U standart va kengaytirilgan ma'lumotlarni uzatish va qabul qilish imkoniyatiga ega.
  • MAX3051 interfeysi CAN protokoli tekshirgichi va nazoratchi tarmoq tarmog'idagi (CAN) avtobus liniyalarining jismoniy simlari o'rtasida. MAX3051 avtobusga differentsial uzatish va CAN boshqaruvchisiga differentsial qabul qilish imkoniyatini beradi.

6 -qadam: ulanish

Ulanish
Ulanish

DHT11 modulini Maduino Zero CAN-BUS moduliga CAN aloqasini qo'llab-quvvatlash vositasi sifatida ishlatiladigan simlar bilan ulang. Xuddi shunday, ma'lumotlarni qabul qilish va ko'rsatish uchun displeyni modulga ulang.

Maduino Zero CANBUS va DHT11 o'rtasidagi aloqa:

Maduino Zero CANBUS - DHT11

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

Maduino Zero CANBUS va OLED o'rtasidagi aloqa:

Maduino Zero KANBUS - OLED

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

Ikkita Maduino Zero CANBUS modulini ulash uchun DB9 kabelidan foydalaning.

7 -qadam: kod

MAX3051 differentsial darajalarni mantiqiy signallarga o'tkazishni yakunlaydi. MCP2515 ma'lumotni kodlash va dekodlash kabi CAN funktsiyasini bajaradi. MCU faqat tekshirgichni ishga tushirishi va ma'lumotlarni yuborishi va qabul qilishi kerak.

  • Github:
  • Arduino o'rnatilgandan so'ng, taxtani (Arduino zero) qo'llab -quvvatlaydigan paket yo'q.
  • Asboblarni tanlang -> Board -> Board Manager, "Arduino zero" ni qidiring va "Arduino SAMD platalari" ni o'rnating.
  • Asboblar -> Kengash -> Arduino Zero (mahalliy USB port) ni tanlang, Asboblar -> Port -> com ni tanlang.
  • GitHub -dan dasturni olgandan so'ng, barcha fayllar CANBUS -ni qo'llab -quvvatlaydigan kutubxona fayllarini o'z ichiga olgan loyiha katalogida ekanligiga ishonch hosil qilishingiz kerak.
  • Adafruit tomonidan DHT sensorlar kutubxonasini o'rnating, u DHT11ni harorat va namlikni olish uchun ishlatadi.
  • Test_DHT11.ino kodida harorat va namlikni alohida yuborish uchun turli manzillardan foydalaning.

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

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

"0x10" - bu xabar identifikatori, "0" - standart ramka, "stmp1.length ()" - xabar uzunligi, "stmp_send1" - yuborilgan ma'lumotlar.

  • Test_OLED.ino kodida CANBUSdagi barcha xabarlar so'rovlar orqali qabul qilinadi va kerakli ma'lumotlar OLEDda ko'rsatiladi.
  • Sensorga ulangan modulga Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino dasturini yuklang va Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino ni OLEDga ulangan boshqa modulga yuklang.

8 -qadam: ko'rsatish

Ko'rsatish
Ko'rsatish
Ko'rsatish
Ko'rsatish

Ikkita modul yoqilganda displeyda harorat va namlik ko'rsatiladi.

Tavsiya: