Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

28 Nisan 2021 Çarşamba

Arduino MCP2515 CAN Bus Eğitimi

 

MCP2515 CANBUS-SPI Haberleşme Modülü ve 

Arduino MCP2515 CAN Bus Eğitimi


CAN-BUS; yüksek güvenilirliği, uzun haberleşme mesafesine  ve orta seviyeli iletim hızı özellikleri dolayısıyla yaygın kullanılan bir endüstriyel haberleşme protokolüdür. Genellikle otomativ sektöründe haberleşme için kullanılır. CAN-BUS Shield, Arduino kartlarını CAN hattına dahil edilmesini sağlayan bir karttır. Ayrıca birden çok Arduino kartının CAN hattı üzerinden de rahatlıkla haberleşmesine imkan sağlamaktadır. SPI arayüzlü MCP2515 CAN kontrolcü ve TJA1050 CAN transceiver temel alınarak yapılmıştır. OBD-II kütüphanesi ile birlikte rahatlıkla kullanılabilir.





















Arduino MCP2515 CAN Bus Eğitimi

Arduino MCP2515 CAN Bus Arabirim Görüntüsü

Arduino MCP2515 CAN Bus Arabirim Devre Şeması
















Bu projede, MCP2515 CAN Kontrol Modülü, MCP2515 CAN Veri Yolu Denetleyicisi ile Arduino arasında nasıl arabirim kurulacağını ve son olarak iki MCP2515 CAN Kontrol Cihazı ve CAN Protokolü yardımıyla iki Arduino kartı arasında iletişimin nasıl etkinleştirileceğini öğreneceğiz.Basit CAN Kontrollü Alan Ağı, bir Mikrodenetleyicinin ve çevre cihazlarının bir ana cihaza veya bir bilgisayara ihtiyaç duymadan iletişim kurmasına izin veren bir veri yolu standardıdır. Robert Bosch GmbH tarafından geliştirilen CAN protokolü, otomobillerde bir kontrol ünitesi ile bileşenleri arasındaki iletişim için kullanılan temel bir protokoldür.

Örneğin, Motor Kontrol Ünitesi bir arabada kullanılan ana kontroldür. Bu ünite, hava akışı, basınç, sıcaklık, valf kontrolü, hava kontrolü için motorlar vb. Gibi birçok sensör ve aktüatöre bağlıdır. Bu modüller ile kontrol ünitesi arasındaki iletişim CAN Bus üzerinden sağlanır.

CAN Veriyolu, CAN Denetleyici ve diğer önemli hususlar hakkında biraz daha fazla bilgi edinmek için, MCP2515 CAN Veriyolu Denetleyici Modülü çok faydalıdır.








MCP2515 CAN Veriyolu Denetleyici Modülü Hakkında Kısa Bir Not

MCP2515 CAN Veri Yolu Denetleyicisi, CAN Protokolü sürüm 2.0B'yi destekleyen ve 1Mbps'de iletişim için kullanılabilen basit bir Modüldür. Tam bir iletişim sistemi kurmak için iki CAN Bus Modülüne ihtiyacınız olacaktır.

Projede kullanılan modül aşağıdaki görselde gösterilmiştir.

Bu özel modül, MCP2515 CAN Denetleyici IC ve TJA1050 CAN Alıcı-Verici IC'ye dayanmaktadır. MCP2515 IC, bağımsız bir CAN Denetleyicisidir ve mikro denetleyicilerle iletişim için entegre SPI Arabirimine sahiptir.TJA1050 IC'ye gelince, MCP2515 CAN Denetleyici IC ve Fiziksel CAN Veriyolu arasında bir arayüz görevi görür.

Aşağıdaki görüntü, tipik bir MCP2515 Modülündeki bileşenleri ve pimleri göstermektedir.







MCP2515 CAN Bus Modülünün Şeması

Modülün şemasını görmeden önce, hem IC'ler, yani MCP2515 ve TJA1050 hakkında birkaç şeyi anlamanız gerekir.MCP2515 IC, dahili olarak üç ana alt bileşenden oluşan ana denetleyicidir: CAN Modülü, Kontrol Mantığı ve SPI Bloğu.CAN Modülü, CAN Veriyolunda mesajların iletilmesinden ve alınmasından sorumludur. Control Logic, tüm bloklar arasında arayüz oluşturarak MCP2515'in kurulumunu ve çalışmasını yönetir. SPI Bloğu, SPI İletişim arayüzünden sorumludur.TJA1050 IC'ye gelince, MCP2515 CAN Kontrol Cihazı ile fiziksel CAN Veriyolu arasında bir arayüz görevi gördüğünden, bu IC, kontrol cihazından verileri alıp veri yoluna aktarmaktansorumludur.Aşağıdaki resim MCP2515 CAN Modülünün şemasını gösterir ve MCP2515 IC ve TJA1050 IC'nin Modüle nasıl bağlandığını gösterir.










MCP2515 ile Arduino Arayüzü İçin Devre Şeması

Aşağıdaki görüntü, MCP2515 CAN Modülünü Arduino ile arabirim kurmanın devre şemasını ve CAN Protokolü üzerinden iki Arduino arasındaki olası iletişimi göstermektedir.MCP2515 Modülünün pimleri net değilse, aşağıdaki görüntü faydalı olabilir.







Gerekli Bileşenler

  • Arduino UNO x 2 [ Buradan Satın Alın ]
  • MCP2515 x 2  
  • USB Kablosu x 2 
  • Kabloların Bağlanması  

Devre tasarımı

Daha önce bahsedildiği gibi, CAN Denetleyici IC, herhangi bir Mikroişlemci ile arayüz oluşturmak için SPI İletişim Protokolünü kolaylaştırır. Bu nedenle, MCP2515 Modülünün SPI Pinini yani SCK, MOSI (SI), MISO (SO) ve CS'yi ilgili Arduino'nun SPI Pinlerine bağlayın (devre şemasına bakın).Bu tür iki bağlantı yapın: bir çift bir verici, diğeri bir alıcı görevi görür. Şimdi bu verici ve alıcı arasındaki iletişim için, her bir MCP2515 Modülünün CANH ve CANL pinlerini bağlayın.


  







Kod

Koda girmeden önce, MCP2515 Modülü için bir kitaplık indirmeniz gerekir. Birçok kütüphaneler vardır ama ben kullandım bu belirli bir.İndirin ve çıkarılan içerikleri Arduino'nun kütüphaneler dizinine yerleştirin.İletişim bir Verici Modülü ve bir Alıcı Modülü içerdiğinden, kod aynı zamanda Verici Kodu ve Alıcı Kodu olarak da bölünmüştür.

Transmitter Code

#include <SPI.h>
#include <mcp_can.h>
const int spiCSPin = 10;
int ledHIGH = 1;
int ledLOW = 0;
MCP_CAN CAN(spiCSPin);
void setup()
{
Serial.begin(115200);
while (CAN_OK != CAN.begin(CAN_500KBPS))
{
Serial.println("CAN BUS init Failed");
delay(100);
}
Serial.println("CAN BUS Shield Init OK!");
}
unsigned char stmp[8] = {ledHIGH, 1, 2, 3, ledLOW, 5, 6, 7};
void loop()
{
Serial.println("In loop");
CAN.sendMsgBuf(0x43, 0, 8, stmp);
delay(1000);
}

Receiver Code

#include <SPI.h>
#include "mcp_can.h"
const int spiCSPin = 10;
const int ledPin = 2;
boolean ledON = 1;
MCP_CAN CAN(spiCSPin);
void setup()
{
Serial.begin(115200);
pinMode(ledPin,OUTPUT);
while (CAN_OK != CAN.begin(CAN_500KBPS))
{
Serial.println("CAN BUS Init Failed");
delay(100);
}
Serial.println("CAN BUS Init OK!");
}
void loop()
{
unsigned char len = 0;
unsigned char buf[8];
if(CAN_MSGAVAIL == CAN.checkReceive())
{
CAN.readMsgBuf(&len, buf);
unsigned long canId = CAN.getCanId();
Serial.println("-----------------------------");
Serial.print("Data from ID: 0x");
Serial.println(canId, HEX);
for(int i = 0; i<len; i++)
{
Serial.print(buf[i]);
Serial.print("\t");
if(ledON && i==0)
{
digitalWrite(ledPin, buf[i]);
ledON = 0;
delay(500);
}
else if((!(ledON)) && i==4)
{
digitalWrite(ledPin, buf[i]);
ledON = 1;
}
}
Serial.println();
}
}

Çalışma Şekli

Tüm işler kütüphaneler (SPI ve CAN) tarafından yapıldığından, bu projenin çalışması çok basittir. CAN mesaj tabanlı iletişim olduğundan, 0 ile 8 bayt arasında herhangi bir yere mesaj göndermeniz gerekir.Bu projede verici 1 1 2 3 0 5 6 7. Bu mesaj CAN Bus üzerinden iletilir ve alıcı bu mesajı alır ve seri monitöründe görüntülenir.Ayrıca, 0 inci ve 4 inci yukarıdaki sırayla, yani 1 ve bit 0 AÇIK ve KAPALI alıcı ve sırayla ayrı ayrı ekstre edilir Arduino arasında Pin 2'ye bağlı LED.

Kullanıldığı Örnek Alanlar

Giriş bölümünde belirtildiği gibi CAN, otomobil alanında yaygın olarak kullanılmaktadır. Uygulamalardan bazıları şunları içerir:

  • Elektronik Vites Değiştirme Sistemi
  • Otomasyonda Ana Arayüz (endüstriyel gibi)
  • Tıbbi malzeme
  • Robotik
  • Araba Motorunun Otomatik Çalıştırılması / Durdurulması

ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.