यदि आप तकनीक से प्यार करते हैं और अक्सर Arduino के साथ प्रयोग करते हैं, तो यह लेख आपको रोमांचित करेगा। आज हम देखेंगे कि MCP2515 मॉड्यूल और Arduino का उपयोग करके अपना स्वयं का CAN नेटवर्क कैसे सेट करें। आप जानेंगे कि CAN नेटवर्क पर विभिन्न उपकरणों के बीच कुशलतापूर्वक और विश्वसनीय तरीके से कैसे संचार किया जाए। इस प्रकार के नेटवर्क का उपयोग ऑटोमोबाइल और अन्य औद्योगिक अनुप्रयोगों में व्यापक रूप से किया जाता है।
चाहे आप एक ऑटोमोटिव प्रोजेक्ट कर रहे हों या कई माइक्रोकंट्रोलर्स के बीच संचार की आवश्यकता हो, CAN बस उन अनुप्रयोगों के लिए एकदम सही है जहां विश्वसनीयता और प्रदर्शन आवश्यक है। और MCP2515 मॉड्यूल के साथ, Arduino को इस नेटवर्क में एकीकृत करना बहुत आसान है। तो, CAN प्रोटोकॉल, हार्डवेयर कॉन्फ़िगरेशन और आवश्यक प्रोग्रामिंग के बारे में गहराई से जानने के लिए तैयार हो जाइए।
कैन बस क्या है?
कैन बस (कंट्रोलर एरिया नेटवर्क) एक सीरियल संचार प्रोटोकॉल है जो विभिन्न उपकरणों को एक दूसरे के साथ संचार करने की अनुमति देता है। इसे 1986 में बॉश द्वारा विकसित किया गया था, और इसे विशेष रूप से ऑटोमोटिव अनुप्रयोगों के लिए डिज़ाइन किया गया है, हालांकि इसका उपयोग औद्योगिक स्वचालन जैसे अन्य क्षेत्रों में भी फैल गया है। इस प्रकार के नेटवर्क में, कनेक्टेड डिवाइस केंद्रीय होस्ट या नियंत्रक की आवश्यकता के बिना संदेश भेजते और प्राप्त करते हैं, जिससे यह उन वातावरणों के लिए एक बहुत ही कुशल प्रोटोकॉल बन जाता है जहां संचार और विश्वसनीयता महत्वपूर्ण है।
एक आधुनिक कार में 70 से अधिक नियंत्रण उपकरण होते हैं, जिन्हें ईसीयू (इलेक्ट्रॉनिक कंट्रोल यूनिट) के रूप में जाना जाता है, जो CAN बस के माध्यम से एक दूसरे से जुड़े होते हैं। इस प्रोटोकॉल के लिए धन्यवाद, ईसीयू कार के संचालन के लिए महत्वपूर्ण जानकारी का आदान-प्रदान करता है, जैसे वाहन की गति डेटा या त्वरक स्थिति।
टोपोलॉजी और सिग्नल बस कर सकते हैं
CAN प्रणाली की टोपोलॉजी प्रकार है मल्टीमास्टर, जिसका अर्थ है कि नेटवर्क से जुड़ा कोई भी उपकरण संदेश भेजने के लिए बस का नियंत्रण ले सकता है। सभी नोड्स इन संदेशों को सुनते हैं और निर्णय लेते हैं कि उन्हें जवाब देना है या अनदेखा करना है।
भौतिक दृष्टिकोण से, संचार दो केबलों के माध्यम से किया जाता है: CAN_H y क्या मैं यह कर सकता हूं. विद्युत चुम्बकीय हस्तक्षेप को कम करने के लिए इन केबलों को बुना जाता है। इसके अतिरिक्त, सिग्नल में प्रतिबिंब से बचने के लिए नेटवर्क के सिरों को 120 ओम प्रतिरोधों के साथ समाप्त किया जाना चाहिए।
संकेत दे सकते हैं
CAN प्रणाली संचार के लिए दो तार्किक अवस्थाओं का उपयोग करती है: प्रमुख y पीछे हटने का. प्रमुख स्थिति में, CAN_H का वोल्टेज 3.5V है और CAN_L का वोल्टेज 1.5V है। इस अवस्था में एक तार्किक '0' प्रसारित होता है। दूसरी ओर, अप्रभावी अवस्था में, दोनों तारों में 2.5V का वोल्टेज होता है, जो दर्शाता है कि बस मुक्त है और एक तर्क '1' प्रसारित किया जा सकता है। यह दो केबलों के बीच वोल्टेज में परिवर्तन है जो नेटवर्क पर डेटा ट्रांसमिशन की अनुमति देता है।
MCP2515 मॉड्यूल
El MCP2515 मॉड्यूल यह आपके Arduino में CAN कनेक्टिविटी जोड़ने के लिए एक आदर्श समाधान है। यह एक CAN नियंत्रक (MCP2515, जो CAN 2.0B विनिर्देश का पालन करता है) और एक CAN ट्रांसीवर (TJA1050, जो भौतिक संचार को संभालता है) से बना है। ये दोनों चिप्स एक साथ काम करते हैं ताकि आप SPI इंटरफ़ेस के माध्यम से अपने Arduino के साथ CAN संदेश भेज और प्राप्त कर सकें।
MCP2515 मानक (11-बिट) और विस्तारित (29-बिट) दोनों संदेशों का समर्थन करता है और इसमें मास्क और फिल्टर के उपयोग के माध्यम से अवांछित संदेशों को फ़िल्टर करने की क्षमता है, जो माइक्रोकंट्रोलर से काम को ऑफलोड करता है। यह उन परियोजनाओं के लिए एक उत्कृष्ट विकल्प है जिनके लिए विश्वसनीय संचार की आवश्यकता होती है, चाहे शोर भरे वातावरण में हो या लंबी दूरी पर।
MCP2515 मॉड्यूल घटक
MCP2515 मॉड्यूल में निम्नलिखित भाग शामिल हैं:
- MCP2515 नियंत्रक कर सकते हैं: संदेश भेजने और प्राप्त करने जैसे सभी CAN प्रोटोकॉल कार्यों को करने के लिए जिम्मेदार।
- TJA1050 कैन ट्रांसीवर: CAN नियंत्रक से डेटा को भौतिक CAN बस के लिए सिग्नल में परिवर्तित करने और इसके विपरीत के लिए जिम्मेदार।
- एसपीआई संचार पिन: SCK, MOSI, MISO और CS पिन का उपयोग करते हुए, MCP2515 अपने SPI इंटरफ़ेस के माध्यम से Arduino के साथ संचार करता है।
- कैन बस टर्मिनल: इस छोटे स्क्रू टर्मिनल ब्लॉक को 'H' और 'L' से चिह्नित किया गया है। CAN_H और CAN_L को CAN नेटवर्क केबल से कनेक्ट किया जाना चाहिए।
Arduino के साथ CAN नेटवर्क कैसे सेट करें
MCP2515 मॉड्यूल के साथ, CAN नेटवर्क स्थापित करना अपेक्षाकृत सरल है। नीचे मैं समझाता हूं कि मॉड्यूल को अपने Arduino बोर्ड से कैसे कनेक्ट करें और सॉफ़्टवेयर को कैसे कॉन्फ़िगर करें।
MCP2515 मॉड्यूल कनेक्शन
आरंभ करने के लिए, अपने Arduino के SPI पिन को निम्नानुसार कनेक्ट करें:
- मीसो (मॉड्यूल आउटपुट) Arduino के D12 को पिन करने के लिए
- मोसी (मॉड्यूल इनपुट) Arduino के D11 को पिन करने के लिए
- SCK (घड़ी) से Arduino पिन D13
- CS (चिप चयन) Arduino पिन D10 पर
आपको MCP2515 के INT पिन को Arduino डिजिटल पिन से कनेक्ट करने की भी आवश्यकता होगी, उदाहरण के लिए D2, क्योंकि इस पिन का उपयोग वैध संदेश प्राप्त होने पर व्यवधान को संभालने के लिए किया जाता है।
अपने मॉड्यूल को पावर देना न भूलें। वीसीसी पिन को 5V से और जीएनडी पिन को ग्राउंड से जोड़ा जाना चाहिए।
CAN बस टर्मिनलों के लिए, CAN_H को CAN_H और CAN_L को CAN_L से उन विभिन्न नोड्स के बीच कनेक्ट करें जिन्हें आप इंटरकनेक्ट करना चाहते हैं। याद रखें कि CAN बस को दोनों सिरों पर 120 ओम अवरोधक के साथ समाप्त किया जाना चाहिए।
अरुडिनो प्रोग्रामिंग
एक बार जब आप नोड्स कनेक्ट कर लेते हैं, तो MCP2515 मॉड्यूल के माध्यम से CAN बस के साथ संचार करने के लिए अपने Arduino को प्रोग्राम करने का समय आ गया है। ऐसा करने का सबसे अच्छा तरीका एक उपयुक्त पुस्तकालय, जैसे पुस्तकालय का उपयोग करना है 'एमसीपी2515'.
सबसे पहले, आपको यह लाइब्रेरी इंस्टॉल करनी होगी. यदि आप Arduino IDE का उपयोग कर रहे हैं, तो स्केच> लाइब्रेरी शामिल करें> लाइब्रेरी प्रबंधित करें पर जाएं। 'mcp2515' खोजें और इंस्टॉल विकल्प चुनें।
लाइब्रेरी स्थापित होने पर, आप अपने ट्रांसमीटर नोड और अपने रिसीवर नोड के लिए कोड लिखने के लिए आगे बढ़ सकते हैं। नीचे मैं आपको दोनों के लिए बुनियादी उदाहरण दिखाता हूँ।
ट्रांसमीटर नोड के लिए कोड उदाहरण
यह कोड CAN बस पर हर सेकंड 'हैलो वर्ल्ड' संदेश भेजता है।
#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo transmisor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); }}void loop() { Serial.print("Enviando mensaje... "); CAN.beginPacket(0x12); CAN.write('H'); CAN.write('o'); CAN.write('l'); CAN.write('a'); CAN.write(' '); CAN.write('M'); CAN.write('u'); CAN.write('n'); CAN.write('d'); CAN.write('o'); CAN.endPacket(); Serial.println("Mensaje enviado correctamente"); delay(1000);}
प्राप्तकर्ता नोड के लिए कोड उदाहरण
यह कोड CAN बस से संदेश प्राप्त करता है और उन्हें सीरियल मॉनिटर पर प्रदर्शित करता है।
#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo receptor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); } CAN.onReceive(onReceive);}void loop() {}void onReceive(int packetSize) { Serial.print("Mensaje recibido con ID: 0x"); Serial.print(CAN.packetId(), HEX); Serial.print(" | Tamaño: "); Serial.print(packetSize); Serial.print(" | Datos: "); while (CAN.available()) { Serial.print((char)CAN.read()); } Serial.println();}
CAN नेटवर्क में गति और दूरियाँ
CAN बस विभिन्न गति से संचार की अनुमति देती है। MCP2515 द्वारा समर्थित अधिकतम गति 1 Mbit/s है, लेकिन बस की लंबाई ट्रांसमिशन गति को सीमित करती है। उदाहरण के लिए, 1 Mbit/s पर, अधिकतम बस की लंबाई लगभग 40 मीटर है। हालाँकि, यदि आपको अधिक दूरी तय करने की आवश्यकता है, तो आप अपनी गति कम कर सकते हैं। 125 kbit/s पर, बस की लंबाई 500 मीटर तक पहुंच सकती है।
नेटवर्क की अच्छी तरह से योजना बनाना और बस की लंबाई और जिस वातावरण में इसका उपयोग किया जाएगा, उसके लिए उचित गति का उपयोग करना महत्वपूर्ण है, क्योंकि शोर वातावरण संचार की गुणवत्ता को प्रभावित कर सकता है।
CAN_H और CAN_L केबलों के लिए मुड़ जोड़ी का उपयोग करना भी याद रखें, क्योंकि इससे विद्युत चुम्बकीय हस्तक्षेप को कम करने में मदद मिलती है और नेटवर्क विश्वसनीयता में सुधार होता है।
एकाधिक नोड्स के साथ नेटवर्क बना सकते हैं
यदि आप कई नोड्स के साथ एक नेटवर्क बनाना चाहते हैं, तो प्रक्रिया बहुत समान है। आपको केवल यह सुनिश्चित करना है कि सभी नोड्स को CAN_H और CAN_L लाइनों के समानांतर जोड़ा जाए। यह भी याद रखें कि टर्मिनेशन रेसिस्टर्स को केवल मुख्य लाइन के सिरों पर रखें, मध्यवर्ती नोड्स पर नहीं।
अधिक जटिल नेटवर्क में, आपके पास कई नोड हो सकते हैं जो ट्रांसमीटर और रिसीवर के रूप में कार्य करते हैं। प्रत्येक नोड बस में न्यूनतम भार जोड़ता है, जिससे प्रदर्शन पर महत्वपूर्ण प्रभाव डाले बिना 112 नोड्स को CAN नेटवर्क पर जोड़ा जा सकता है।
चाहे आप इंजन डेटा पढ़ने के लिए ऑटोमोबाइल में CAN बस का उपयोग कर रहे हों या कई सेंसरों को संचार करने के लिए किसी औद्योगिक परियोजना में, MCP2515 मॉड्यूल इस कार्यक्षमता को जोड़ना आसान और कुशल बनाता है। इस प्रकार का नेटवर्क उन अनुप्रयोगों के लिए आदर्श है जहां डेटा ट्रांसमिशन में कम विलंबता और विश्वसनीयता आवश्यक है।