KS0411 Keyestudio CAN-BUS Shield

KS0411 Keyestudio CAN-BUS Shield

Terminal Direnci

CAN BUS'ın normal çalışabilmesi için, CAN BUS'ın (CAN-H ve CAN-L) iki ucu terminal direncine bağlanmalıdır. Terminal direncinin direnci, iletişim kablosuyla aynı olmalıdır. Tipik değeri 120 ohm'dur. Ek olarak, parazit önleme ve veri iletişiminin güvenilirliğini güçlendirmek için veri yolu direnciyle eşleşebilir.


0411-15.png

Not: Terminal direncini 2.54 mm aralıklı pin başlıklarına bağlayabiliriz, alternatif olarak SMD konumunda lehimleyebiliriz (veya 0603 SMD direnci).

120 ohm, kısa mesafeli direnç eşleşmesinin sonucudur, uzun mesafeye eklenirse sinyaller etkilenir , çünkü CAN'ın sürücü kapasitesi sınırlıdır. İletişim kablosunun uzunluğu 5km, Döngü hattının direnci

(CANH + CANL) 250 ohm'a yakın, 120 ohm eklenirse, terminal alım noktasındaki alıcı-vericinin voltajı sadece 1V civarındadır. Gerilim genliğinin bu tür anti-paraziti son derece zayıftır, bu nedenle iletişim kararsız olacaktır.

Bu nedenle, uzun mesafeli iletişimde, sinyal genliğinin 1,2V'nin üzerinde olmasını sağlayabilen 300 ohm-500ohm terminal direnci eklemenizi öneririz.

Test Metodu

A. Lehim terminal direnci

Ardından, Shield'in normal çalışıp çalışmadığını 2 genişletme kartı ve 2 UNO R3 kartı aracılığıyla test etmek için iletişim kuruyoruz. Test etmeden önce, öncelikle aşağıda gösterildiği gibi 2 genişleme kartına bir terminal direnci bağlarız, terminal direnci 120 ohm'dur (0603 SMD direnci)


0411-12.png

 

B. Test kodunu yükleyin 2 UNO R3 kartına ayrı ayrı iki test kodu yükleyin, biri sinyal göndermek için, diğeri sinyal almak içindir.


Sinyal gönderme kodu :

#include 
#include 
#include 
#include 
#include 

void setup() {
  Serial.begin(9600);
  Serial.println("CAN Write - Testing transmission of CAN Bus messages");
  delay(1000);
  
  if(Canbus.init(CANSPEED_500))  
//Initialise MCP2515 CAN controller at the specified speed
  Serial.println("CAN Init ok");
  else
  Serial.println("Can't init CAN");
  delay(1000);
}

void loop() 
{
tCAN message;

        message.id = 0x631; //formatted in HEX
        message.header.rtr = 0;
        message.header.length = 8; //formatted in DEC
        message.data[0] = 0x40;
	message.data[1] = 0x05;
	message.data[2] = 0x30;
	message.data[3] = 0xFF; //formatted in HEX
	message.data[4] = 0x00;
	message.data[5] = 0x40;
	message.data[6] = 0x00;
	message.data[7] = 0x00;

mcp2515_bit_modify(CANCTRL, (1<

Sinyal alma kodu :

#include 
#include 
#include 
#include 
#include 
#include 
#include 
const int chipSelect = 9;
void setup() {
  Serial.begin(9600); // For debug use
    pinMode(chipSelect, OUTPUT);
  Serial.println("CAN Read - Testing receival of CAN Bus message");  
  delay(1000);
  
  if(Canbus.init(CANSPEED_500))  //Initialise MCP2515 CAN controller at the specified speed
    Serial.println("CAN Init ok");
  else
    Serial.println("Can't init CAN");
    
  delay(1000);
    if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}

void loop(){

  tCAN message;
if (mcp2515_check_message()) 
  {
    if (mcp2515_get_message(&message)) 
  {
        //if(message.id == 0x620 and message.data[2] == 0xFF)  
//uncomment when you want to filter
             //{
               
               Serial.print("ID: ");
               Serial.print(message.id,HEX);
               Serial.print(", ");
               Serial.print("Data: ");
               Serial.print(message.header.length,DEC);
               for(int i=0;i


Not: 1. Test kodu 1.85 sürüm Arduino IDE ve üstü ile uyumludur, diğer sürüm% 100 uyumlu değildir. 2. Programlamayı yazmadan önce, Canbus klasörünü derleyici kurulum dizininin \ Arduino \ kütüphanelerine yerleştirmeniz gerekir, aksi takdirde derleme başarısız olur. Örneğin, C: \ Program Files \ Arduino \ libraries

C. Kablolama Yöntemi

Test kodunu 2 UNO R3 kartına yükledikten sonra, aşağıdaki yönteme göre test etmek için kablolayın.
0411-13.png

Not: sinyalleri almak için kullanılan genişletme kartına bir SD kart bağlamanız gerekir

Test sonucu

A kartı için kablo ve besleme gücü, B kartını USB kabloları ile bilgisayara bağlayın, seri monitörü açın, baud hızını 9600'e ayarlayın, A kartı tarafından gönderilen bilgileri görebilirsiniz.


0411-14'.png


Kaynaklar

https://fs.keyestudio.com/KS0411

Blog Etiketleri :
IdeaSoft® | E-Ticaret paketleri ile hazırlanmıştır.