كيفية استخدام وحدة MCP2515 CAN Bus مع Arduino
By Kunkune | Published: 2026-10-17
Category: أدلة إرشادية
تعلّم كيفية توصيل وبرمجة وحدة ناقل CAN بمنصة Arduino للتواصل في المركبات أو التطبيقات الصناعية. دليل خطوة بخطوة مع الأخطاء الشائعة.
إجابة سريعة
لاستخدام وحدة ناقل CAN MCP2515 مع Arduino، قم بتوصيل دبابيس SPI الخاصة بها (CS، SCK، MOSI، MISO) وقم بتزويدها بالطاقة بجهد 5 فولت، ثم قم بتثبيت مكتبة MCP_CAN وأرسل أو استقبل إطارات CAN باستخدام أكواد بسيطة. يتولى جهاز الإرسال والاستقبال TJA1050 الموجود على الوحدة معالجة إشارات CAN الفعلية، لذلك تحتاج فقط إلى توصيل CANH و CANL بالناقل الخاص بك. يشرح هذا الدليل التوصيلات وإعداد المكتبة ومثالًا أساسيًا للإرسال/الاستقبال.
توصيل MCP2515 بلوحة Arduino
تستخدم وحدة MCP2515 اتصال SPI، لذلك تقوم بتوصيلها بدبابيس SPI الخاصة بلوحة Arduino: CS بالدبوس 10 (الافتراضي)، SCK بالدبوس 13، MOSI بالدبوس 11، و MISO بالدبوس 12 على لوحة Uno. قم بتزويد الوحدة بالطاقة بجهد 5 فولت والأرضي. بالنسبة لجانب ناقل CAN، قم بتوصيل CANH و CANL بخطوط الناقل الخاصة بك؛ إذا كنت تختبر باستخدام وحدتين، قم بتوصيل CANH بـ CANH و CANL بـ CANL. أضف مقاوم إنهاء بقيمة 120 أوم في كل طرف من أطراف الناقل لمنع الانعكاسات.
تثبيت مكتبة CAN
المكتبة الأكثر شيوعًا هي MCP_CAN من coryj Fowler، وهي متاحة في مدير مكتبات Arduino. ابحث عن 'MCP_CAN' وقم بتثبيتها. بعد التثبيت، قم بتضمين المكتبة في الكود الخاص بك وقم بتهيئة وحدة التحكم CAN باستخدام دبوس CS الصحيح لـ SPI ومعدل الباود، عادةً 500 كيلوبت في الثانية لـ OBD-II للسيارات.
إرسال واستقبال إطارات CAN
لإرسال إطار، استخدم sendMsgBuf(id, ext, len, buf). للاستقبال، تحقق من وجود CAN_MSGAVAIL باستخدام checkReceive() واقرأ باستخدام readMsgBuf(). يتولى MCP2515 بروتوكول CAN منخفض المستوى، لذلك يتعامل الكود الخاص بك فقط مع معرفات الرسائل وبيانات البايت. تذكر أن CAN هو بث: ترى كل عقدة جميع الرسائل، وتقوم بالتصفية حسب المعرف في البرنامج.
الإعداد خطوة بخطوة
- قم بتوصيل الأجهزة: قم بتوصيل وحدة MCP__XSP_2f3933cf__ بلوحة Arduino: VCC بـ 5 فولت، GND بـ GND، CS بالدبوس 10، SCK بالدبوس 13، MOSI بالدبوس 11، MISO بالدبوس 12. قم بتوصيل CANH و CANL بالناقل الخاص بك. تأكد جيدًا من أنك لم تقم بتبديل MOSI و MISO - فهذا خطأ شائع.
- قم بتثبيت مكتبة MCP_CAN: افتح مدير مكتبات Arduino، وابحث عن 'MCP_CAN'، وقم بتثبيت أحدث إصدار. قم بتضمينها في الكود الخاص بك باستخدام #include . إذا لم يتم العثور على المكتبة، تحقق من الإملاء واتصال الإنترنت.
- قم بتهيئة وحدة التحكم CAN: أنشئ كائن MCP_CAN باستخدام دبوس CS (على سبيل المثال، MCP_CAN CAN0(10)). في الدالة setup()، استدعِ CAN0.begin(CAN_500KBPS) وتحقق من القيمة المعادة. ترجع الدالة begin() القيمة CAN_OK (0) عند النجاح؛ إذا لم يحدث ذلك، تحقق من التوصيلات ومعدل الباود.
- أرسل رسالة CAN: قم بإعداد مخزن بيانات مؤقت واستدعِ CAN0.sendMsgBuf(0x123, 0, 8, data); حيث 0x123 هو معرف الرسالة و 8 هو طول البيانات. تأكد من أن المعرف لا يتعارض مع العقد الأخرى على الناقل.
- استقبال رسائل CAN: في الدالة loop()، تحقق من توفر رسالة باستخدام CAN0.checkReceive() == CAN_MSGAVAIL، ثم اقرأها باستخدام CAN0.readMsgBuf(&len, buf). إذا لم ترَ رسائل، تحقق من أن الناقل لديه إنهاء مناسب وأن جميع العقد تشترك في نفس معدل الباود.
حقائق المنتج
- وحدة ناقل CAN MCP2515 مع مستقبل TJA1050 وحدة SPI: مثالية لمراقبة والتحكم في OBDII / ناقل CAN للسيارات هذه الوحدة جاهزة لتشخيص السيارات، لذا يمكنك الاتصال بمنفذ OBD-II في السيارة أو بناء عقد CAN مخصصة للمراقبة والتحكم.
