الوصف
وحدة تحكم ناقل CAN MCP2515 مع TJA1050 عبر SPI
تجمع هذه الوحدة متحكم CAN 2.0B MCP2515 مع مرسل/مستقبل الطبقة الفيزيائية TJA1050. وتتيح إضافة اتصال CAN بسهولة إلى مشاريع Arduino وESP32 وRaspberry Pi وغيرها.
🔧 المواصفات التقنية
- بروتوكول CAN: الإصدار 2.0B، حتى 1 Mb/s (وفق المواصفة المدرجة)
- المتحكم: MCP2515 عبر SPI (CS وSCLK وSI وSO)، مع مقاطعة INT
- مرسل/مستقبل الإشارة: TJA1050 (مستويات CANH / CANL)
- التغذية: 5 V DC (نحو 5 mA أثناء التشغيل و1 µA في وضع الاستعداد)
- الإنهاء: مقاومة 120 Ω تُفعّل بواسطة جسر لحام
- مؤشرات LED: TX للإرسال وRX للاستقبال
- درجة حرارة التشغيل: من −40 °C إلى +85 °C
- الأبعاد: 44 × 28 mm؛ تباعد فتحات التثبيت: 23 × 38 mm
💡 الاستخدامات الشائعة
- شبكات CAN للسيارات والتطبيقات الصناعية
- أنظمة القياس عن بُعد والحساسات الموزعة
- التحكم بالمحركات والمشغلات والأتمتة
- مشاريع إنترنت الأشياء المدمجة التي تتطلب ناقلًا موثوقًا
- جسور البيانات بين المتحكمات الدقيقة وأجهزة CAN
مثال Arduino باستخدام مكتبة mcp_can
#include <SPI.h>
#include <mcp_can.h>
const int SPI_CS_PIN = 10;
MCP_CAN CAN(SPI_CS_PIN);
void setup() {
Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_500KBPS)) {
Serial.println("Initialisation CAN échouée");
delay(100);
}
Serial.println("CAN initialisé à 500 kbps");
}
void loop() {
// Envoi d'un message CAN 11-bit ID 0x100, 8 octets
byte data[8] = {0xDE,0xAD,0xBE,0xEF,0x00,0x11,0x22,0x33};
CAN.sendMsgBuf(0x100, 0, 8, data);
delay(1000);
// Lecture
if (CAN_MSGAVAIL == CAN.checkReceive()) {
unsigned long id;
byte len;
byte buf[8];
CAN.readMsgBuf(&len, buf);
id = CAN.getCanId();
Serial.print("Reçu ID 0x"); Serial.print(id, HEX);
for (byte i = 0; i < len; i++) {
Serial.print(" "); Serial.print(buf[i], HEX);
}
Serial.println();
}
}
شرح الكود
- تهيئة SPI والوحدة MCP2515 بسرعة 500 kbps باستخدام
CAN.begin(...). - داخل
loop()، إرسال إطار CAN من 8 بايت بالمعرّف 0x100 باستخدامsendMsgBuf(). - بعد ذلك، التحقق من وجود رسالة عبر
checkReceive()، وقراءة المعرّف والبيانات باستخدامreadMsgBuf()وgetCanId()، ثم عرضها في الشاشة التسلسلية.
🛠️ ترتيب الأطراف والتوصيل
| طرف الوحدة | الوظيفة | Arduino UNO |
|---|---|---|
| VCC | تغذية +5 V DC | 5 V |
| GND | أرضي مشترك | GND |
| CS | اختيار شريحة SPI (فعّال بالمستوى المنخفض) | D10 |
| SO (MISO) | دخل المتحكم الرئيسي، خرج الطرف التابع | D12 |
| SCLK | ساعة SPI | D13 |
| SI (MOSI) | خرج المتحكم الرئيسي، دخل الطرف التابع | D11 |
| INT | مقاطعة (استلام رسالة CAN) | D2 |
| CANH / CANL | أطراف ناقل CAN اللولبية | توصيل بالناقل |
ملاحظة: فعّل مقاومة الإنهاء 120 Ω بلحام الجسر المخصص إذا كانت الوحدة عند أحد طرفي الناقل.









