جدول المحتويات:

برنامج تعليمي بسيط لـ CANBUS: 8 خطوات
برنامج تعليمي بسيط لـ CANBUS: 8 خطوات

فيديو: برنامج تعليمي بسيط لـ CANBUS: 8 خطوات

فيديو: برنامج تعليمي بسيط لـ CANBUS: 8 خطوات
فيديو: إتعلم برنامج اللوميون كله في ساعة واحدة _ Lumion 2024, يوليو
Anonim
برنامج تعليمي بسيط ل CANBUS
برنامج تعليمي بسيط ل CANBUS

لقد كنت أدرس CAN لمدة ثلاثة أسابيع ، والآن أكملت بعض الطلبات للتحقق من صحة نتائج التعلم الخاصة بي. في هذا البرنامج التعليمي ، ستتعلم كيفية استخدام Arduino لتنفيذ اتصال CANBUS. إذا كان لديك أي اقتراحات ، نرحب بك لترك رسالة.

اللوازم:

المعدات:

  • Maduino Zero CANBUS
  • DHT11 وحدة درجة الحرارة والرطوبة
  • 1.3 "I2C OLED 128x64- أزرق
  • كابل DB9 إلى DB9 (أنثى إلى أنثى)
  • خط دوبونت

برمجة:

اردوينو IDE

الخطوة 1: ما هو CANBUS

ما هو CANBUS
ما هو CANBUS
ما هو CANBUS
ما هو CANBUS

حول CAN

CAN (شبكة منطقة التحكم) هي شبكة اتصالات تسلسلية يمكنها تحقيق التحكم الموزع في الوقت الفعلي. تم تطويره لصناعة السيارات لاستبدال مجموعة الأسلاك المعقدة بحافلة ذات سلكين.

يحدد بروتوكول CAN طبقة ارتباط البيانات وجزء من الطبقة المادية في نموذج OSI.

بروتوكول CAN هو معيار ISO مع ISO11898 و ISO11519. ISO11898 هو معيار الاتصال عالي السرعة CAN مع سرعة اتصال 125kbps-1Mbps. ISO11519 هو معيار الاتصال منخفض السرعة CAN مع سرعة اتصال أقل من 125 كيلو بت في الثانية.

نحن هنا نركز على العلبة عالية السرعة.

يصف ISO-11898 كيفية تمرير المعلومات بين الأجهزة الموجودة على الشبكة ويتوافق مع نموذج Open Systems Interconnection (OSI) المحدد من حيث الطبقات. يتم تحديد الاتصال الفعلي بين الأجهزة المتصلة بالوسيط المادي من خلال الطبقة المادية للنموذج

  • يمكن تسمية كل وحدة CAN متصلة بالناقل بالعقدة. جميع وحدات CAN متصلة بناقل منتهي في كل طرف بمقاومات 120 لتشكيل شبكة. يتكون الناقل من خطوط CAN_H و CAN_L. تحدد وحدة التحكم CAN مستوى الناقل بناءً على الاختلاف في مستوى الطاقة على كلا السلكين. تنقسم مستويات الحافلات إلى مستويات سائدة ومتنحية ، والتي يجب أن تكون أحدهما. يرسل المرسل الرسالة إلى المتلقي عن طريق إجراء تغيير على مستوى الناقل. عند تنفيذ السطر المنطقي "و" على الناقل ، يكون المستوى السائد "0" والمستوى المتنحي "1".
  • في الحالة السائدة ، يكون جهد CAN_H حوالي 3.5 فولت والجهد CAN_L حوالي 1.5 فولت. في الحالة المتنحية ، يكون جهد كلا الخطين حوالي 2.5 فولت.
  • الإشارة تفاضلية وهذا هو السبب في أن CAN تستمد مناعتها القوية من الضوضاء والتسامح مع الخطأ. تقلل الإشارة التفاضلية المتوازنة اقتران الضوضاء وتسمح بمعدلات إشارات عالية عبر كبل زوج مجدول. التيار في كل خط إشارة متساوٍ ولكن في الاتجاه المعاكس وينتج عنه تأثير إلغاء المجال الذي يعد مفتاحًا لانبعاثات ضوضاء منخفضة. يعزز استخدام أجهزة الاستقبال التفاضلية المتوازنة والكابلات المزدوجة الملتوية من رفض الوضع المشترك والحصانة العالية للضوضاء في ناقل CAN.

هل يمكن لجهاز الإرسال والاستقبال

CAN Transceiver مسؤول عن التحويل بين المستوى المنطقي والإشارة المادية. قم بتحويل إشارة منطقية إلى مستوى تفاضلي أو إشارة مادية إلى مستوى منطقي.

يمكن التحكم

CAN Controller هو المكون الأساسي لـ CAN ، والذي يدرك جميع وظائف طبقة ارتباط البيانات في بروتوكول CAN ويمكنه حل بروتوكول CAN تلقائيًا.

MCU

وحدة MCU مسؤولة عن التحكم في دائرة الوظائف ووحدة التحكم CAN. على سبيل المثال ، تتم تهيئة معلمات وحدة التحكم CAN عند بدء العقدة ، ويتم قراءة إطار CAN وإرساله عبر وحدة التحكم CAN ، إلخ.

الخطوة 2: حول CAN Communications

عندما يكون الناقل خاملاً ، يمكن لجميع العقد أن تبدأ في إرسال الرسائل (تحكم متعدد المفاتيح). تحصل العقدة التي تصل أولاً إلى الحافلة على الحق في الإرسال (وضع CSMA / CA). عندما تبدأ عدة عقد في الإرسال في نفس الوقت ، فإن العقدة التي ترسل رسالة المعرف ذات الأولوية العالية تحصل على الحق في الإرسال.

في بروتوكول CAN ، يتم إرسال جميع الرسائل بتنسيق ثابت. عندما يكون الحافلة في وضع الخمول ، يمكن لجميع الوحدات المتصلة بالحافلة أن تبدأ في إرسال رسائل جديدة. عندما تبدأ أكثر من خليتين في إرسال الرسائل في نفس الوقت ، يتم تحديد الأولوية بناءً على المعرف. لا يمثل المعرف عنوان وجهة الإرسال ، بل يمثل أولوية الرسالة التي تصل إلى الناقل. عندما تبدأ أكثر من خليتين في إرسال الرسائل في نفس الوقت ، يتم التحكيم في كل جزء من المعرف الخالي من الفوائد واحدًا تلو الآخر. يمكن للوحدة التي تفوز بالتحكيم الاستمرار في إرسال الرسائل ، وتتوقف الوحدة التي تفقد التحكيم على الفور عن إرسال العمل واستلامه.

الحافلة CAN هي نوع من أنواع البث. هذا يعني أن جميع العقد يمكنها "سماع" جميع عمليات الإرسال. ستلتقط جميع العقد دائمًا كل حركة المرور. يوفر جهاز CAN تصفية محلية بحيث يمكن أن تتفاعل كل عقدة فقط مع الرسائل الشيقة.

الخطوة 3: الإطارات

الإطارات
الإطارات

يمكن لأجهزة CAN إرسال البيانات عبر شبكة CAN في حزم تسمى الإطارات. CAN لها أربعة أنواع من الإطارات:

  • إطار البيانات: إطار يحتوي على بيانات عقدة للإرسال
  • الإطار البعيد: إطار يطلب إرسال معرف محدد
  • إطار الخطأ: إطار يتم إرساله بواسطة أي عقدة تكتشف خطأ
  • إطار التحميل الزائد: إطار لحقن تأخير بين البيانات أو الإطار البعيد

إطار البيانات

هناك نوعان من إطارات البيانات ، القياسية والممتدة.

معنى حقول البت في الشكل هي:

  • SOF – بتة البداية السائدة للإطار (SOF) تحدد بداية الرسالة ، وتستخدم لمزامنة العقد على ناقل بعد الخمول.
  • المعرف - يحدد المعرف القياسي CAN ذو 11 بت أولوية الرسالة. كلما انخفضت القيمة الثنائية ، زادت أولويتها.
  • RTR – بتة طلب الإرسال عن بُعد الفردي (RTR)
  • IDE - تعني بتة امتداد معرف فردي مهيمن (IDE) أنه يتم إرسال معرف CAN قياسي بدون امتداد.
  • R0 – بتة محجوزة (لإمكانية استخدامها من خلال تعديل معياري مستقبلي).
  • DLC - تحتوي شفرة طول البيانات المكونة من 4 بتات (DLC) على عدد بايتات البيانات التي يتم إرسالها.
  • البيانات - يمكن إرسال ما يصل إلى 64 بت من بيانات التطبيق.
  • CRC - يحتوي فحص التكرار الدوري (CRC) المكون من 16 بتة (15 بتة بالإضافة إلى المحدد) على المجموع التدقيقي (عدد البتات المرسلة) لبيانات التطبيق السابقة للكشف عن الأخطاء.
  • ACK – ACK هي بتتان ، واحدة هي بتة الإقرار والثانية هي محدد.
  • EOF –حقل نهاية الإطار (EOF) المكون من 7 بتات هذا يشير إلى نهاية إطار CAN (رسالة) ويعطل حشو البتات ، مما يشير إلى خطأ حشو عندما يكون مهيمنًا. عندما تحدث 5 بتات من نفس المستوى المنطقي بالتتابع أثناء التشغيل العادي ، يتم حشو جزء من مستوى المنطق المعاكس في البيانات.
  • IFS – تحتوي مساحة الإطار البيني هذه ذات 7 بتات (IFS) على الوقت المطلوب بواسطة وحدة التحكم لنقل الإطار المستلم بشكل صحيح إلى موضعه الصحيح في منطقة مخزن الرسائل المؤقت.

تحكم

في حالة خمول الناقل ، تحصل الوحدة التي تبدأ في إرسال الرسالة أولاً على حق الإرسال. عندما تبدأ عدة وحدات في الإرسال في نفس الوقت ، تبدأ كل وحدة إرسال في الجزء الأول من مقطع التحكيم. يمكن أن تستمر الوحدة التي تحتوي على أكبر عدد من مستويات الإنتاج السائدة المستمرة في الإرسال.

الخطوة 4: السرعة والمسافة

السرعة والمسافة
السرعة والمسافة

CAN bus عبارة عن ناقل يربط عدة وحدات في نفس الوقت. لا يوجد حد نظريًا للعدد الإجمالي للوحدات التي يمكن توصيلها. ومع ذلك ، من الناحية العملية ، فإن عدد الوحدات التي يمكن توصيلها محدود بسبب التأخير الزمني للحافلة والحمل الكهربائي. قلل من سرعة الاتصال ، وزد عدد الوحدات التي يمكن توصيلها ، وزد من سرعة الاتصال ، وسيقل عدد الوحدات التي يمكن توصيلها.

ترتبط مسافة الاتصال عكسياً بسرعة الاتصال ، وكلما زادت مسافة الاتصال ، قلت سرعة الاتصال. يمكن أن تكون المسافة الأطول 1 كم أو أكثر ، لكن السرعة أقل من 40 كيلو في الثانية.

الخطوة 5: الأجهزة

المعدات
المعدات

تعد وحدة Maduino Zero CAN-BUS أداة تم تطويرها بواسطة Makerfabs لاتصالات CANbus - وهي تستند إلى Arduino ، مع وحدة التحكم CAN وجهاز الإرسال والاستقبال CAN ، لإنشاء منفذ ناقل CAN جاهز للاستخدام.

  • MCP2515 عبارة عن وحدة تحكم CAN قائمة بذاتها تنفذ مواصفات CAN. إنه قادر على إرسال واستقبال كل من البيانات القياسية والممتدة والإطارات البعيدة.
  • واجهات MAX3051 بين وحدة تحكم بروتوكول CAN والأسلاك المادية لخطوط الناقل في شبكة منطقة وحدة التحكم (CAN). يوفر MAX3051 إمكانية الإرسال التفاضلي للحافلة وقدرة الاستقبال التفاضلي لوحدة التحكم CAN.

الخطوة 6: الاتصال

اتصال
اتصال

قم بتوصيل وحدة DHT11 بوحدة Maduino Zero CAN-BUS بأسلاك لاستخدامها كأداة لدعم اتصالات CAN. وبالمثل ، قم بتوصيل الشاشة بالوحدة النمطية لاستلام البيانات وعرضها.

العلاقة بين Maduino Zero CANBUS و DHT11 :

مادوينو زيرو كانبوس - 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 فقط إلى تهيئة وحدة التحكم وإرسال البيانات واستلامها.

  • جيثب:
  • بعد تثبيت Arduino ، لا توجد حزمة لدعم اللوحة (Arduino zero) اللازمة للتثبيت.
  • حدد الأدوات -> Board -> Board Manager ، وابحث عن "Arduino zero" وقم بتثبيت "Arduino SAMD Boards".
  • حدد Tools -> Board -> Arduino Zero (Native USB Port) ، وحدد Tools -> Port -> 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" تعني معرف هوية الرسالة ، "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 إلى وحدة أخرى متصلة بـ OLED.

الخطوة 8: العرض

تبين
تبين
تبين
تبين

سيتم عرض الطاقة على الوحدتين ودرجة الحرارة والرطوبة على الشاشة.

موصى به: