Giao tiếp giữa hai Arduino sử dụng module CAN MCP2515

Một phần của tài liệu NGHIÊN CỨU MẠNG CAN TRÊN Ô TÔ. (Trang 33)

3.3.1 Sơ đồ nối dây

Chân trên Arduino Chân trên MCP2515

+5V MPC2515 - VCC GND MPC2515 - GND D10 (SPI_SS) MPC2515 - CS D12 (SPI_MISO) MPC2515 - SO D11 (SPI_MOSI) MPC2515 - SI D13 (SPI_SCK) MPC2515 - SCK

3.3.2 Đoạn chương trình vào Arduino

• Chương trình gửi:

#include <SPI.h> // Thư viện khai báo cho giao thức truyền SPI #include <mcp2515.h> //Thư viện cho giao tiếp CAN

struct can_frame canMsg; // Tạo khung chứa thông tin cần truyền MCP2515 mcp2515(10); // Set chân cho giao thức SPI

void setup() {

while (!Serial); Serial.begin(9600);

SPI.begin(); // Lệnh bắt đầu truyền bằng giao thức SPI

mcp2515.reset();

mcp2515.setBitrate(CAN_500KBPS,MCP_8MHZ); //tốc độ truyền là 500KBPS and tần số dao động xun là 8MHz

mcp2515.setNormalMode(); // Set chế độ bình thường }

void loop() {

canMsg.can_id = 0x1110000; //CAN id as 0x036 // gán ID cho tin nhắn canMsg.can_dlc = 8; // khai báo độ dài dữ liệu (data)

canMsg.data[0] = 0x11000; // Truyền số 99 canMsg.data[1] = 0x00; // Truyền số 98 canMsg.data[2] = 0x00; //Rest all with 0 canMsg.data[3] = 0x00;

canMsg.data[4] = 0x00; canMsg.data[5] = 0x00;

canMsg.data[6] = 0x00; canMsg.data[7] = 0x00;

mcp2515.sendMessage(&canMsg); //Lệnh gởi tin delay(1000);

}

• Chương trình nhận:

#include <SPI.h> // Thư viện khai báo cho giao thức truyền SPI #include <mcp2515.h> //Thư viện cho giao tiếp CAN

struct can_frame canMsg; // Tạo khung chứa thông tin nhận MCP2515 mcp2515(10); // Set chân cho giao thức SPI

void setup() { while (!Serial); Serial.begin(9600);

SPI.begin(); // Lệnh bắt đầu truyền bằng giao thức SPI

mcp2515.reset();

mcp2515.setBitrate(CAN_500KBPS,MCP_8MHZ); //tốc độ truyền là 500KBPS and tần số dao động xun là 8MHz

mcp2515.setNormalMode(); // Set chế độ bình thường }

void loop() {

{

int x = canMsg.data[0];

Serial.println(x); // Hiển thị tin nhắn số 11000

} }

3.3.3 Kết quả

a. Bên truyền

Hình 3.4: Hiển thị Nút CAN gửi tin thành công

b. Bên nhận

CHƯƠNG 4: KIỂM TRA XUNG TRUYỀN CAN TRÊN ĐƯỜNG TRUYỀN BẰNG MÁY ĐO XUNG HANTEK 6022BE

4.1. Máy đo xung HANTEK 6022BE

Hình 4.1: Máy đo xung Hantek 6022BE

Máy đo PC Oscilloscope Hantek 6022BE được sử dụng để đo và hiển thị tín hiệu điện lên máy tính qua cổng giao tiếp USB và sử dụng nguồn trực tiếp từ máy tính, máy có 2 kênh đo tín hiệu Analog Oscilloscope tần số tối đa 20Mhz. Vận hành được ở nhiều hệ điều hành khác nhau. Máy gồm 23 chức năng đo. THực hiện đo và lưu kết quả dưới dạng text file, jpg.bmp, MS excel hay word.

4.2. Sử dụng phần mềm HANTEK 6022BE 4.2.1 Tải phần mềm và driver 4.2.1 Tải phần mềm và driver

Để có thể sử dụng máy đo xung trên, máy tính cần phải cài đặt phần mềm là Hantek 6022 có sẵn trên trang chủ nhà sản xuất và cài đặt Driver để máy tính có thể nhận dạng được cổng USB từ máy đo xung kết nối vào.

Hình 4.2: Tải phần mềm Hantek 6022 và driver từ trang chủ

4.2.2 Cài đặt phần mềm và driver Hantek 6022BE

Sau khi tải về, giải nén file Hantek 6022BE và chọn Setup.exe để tiến hành cài đặt. Sau khi nhấn đúp chuột vào field Setup.exe, giao diện sau sẽ hiện thị:

Hình 4.3: Giao diện cài đặt Hantek 6022BE

Bấm Next liên tiếp qua mỗi cửa sổ của giao diện cho đến khi hiển thị cửa sổ sau:

Ở giao diện này, chương trình mặc định sẵn cho chúng ta nơi lưu trữ file nguồn chạy chương trình nằm ở ổ đĩa C\Program Files (x86), chúng ta có thể thay đổi nơi lưu bằng cách nháy chuột vào Browser và chọn nơi lưu trữ theo ý muốn.

Sau đó bấm Next và chương trình hiển thị giao diện tiến trình cài đặ, sao chép file cài đặt vào ổ đĩa cài của máy tính:

Hình 4.5: Giao diện giao diện tiến trình cài đặt Hantek 6022BE

Hình 4.6: giao diện phần mềm hantek 6022BE

4.4. Kết quả thực hiện và phân tích xung CAN

Hình 4.8: Phân tích xung CAN

4.5. Đánh giá

Chúng tôi thực hiện chương trình gởi một tin nhắn với địa chỉ là 11110000 và với nội dung là 11000 qua mạng CAN sử dụng module MCP251. Tốc độ gởi tin chúng tôi khởi tạo ban đầu là 1MB/s. Qua quan sát trên xung, kết quả phân tích xung hoàn toàn trùng khớp với chương trình được viết trước đó. Tốc độ gởi nhanh, ít xảy ra lỗi trên đường truyền và chúng tôi có quan sát được thuật Bit Stuffing trên ngay trên máy đo xung (số 1 in đậm màu vàng hình 4.8).

CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

5.1. Kết luận

Chúng tôi đã hoàn thành mục tiêu đề ra từ đầu là nghiên cứu cấu trúc, nguyên lý của mạng CAN, ứng dụng của nó trong thực tế và tiến hành thực nghiệm truyền dữ liệu sử dụng module CAN MCP2515. Sau khi tham khảo từ nhiều nguồn tài liệu, chúng tôi thực nghiệm và ứng dụng ngay lí thuyết mình vừa đọc vào việc như đặt ID cho tin nhắn truyền trên mạng CAN, khởi tạo tốc độ truyền hay có thể phân tích được nội dung tin nhắn mình gửi qua máy đọc xung và phân tích được thuật Bit Stufffing mà hệ thống đã gán cho tin truyền đi để đảo bảo nội dung trên đường truyền.

Qua nghiên cứu, đề tài “Nghiên cứu mạng CAN trên ô tô” giúp chúng tôi hiểu hơn khái niệm mạng truyền thông, cụ thể là mạng CAN trên ô tô _ xu hướng truyền thông đang được ứng dụng rộng rãi. Mạng CAN là tiền đề để chúng tôi có thể nghiên cứu xa hơn ứng dụng của nó trong môi trường công nghiệp khi những chuỗi các máy móc liên kết với nhau sử dụng CAN bus, hay là những chuỗi những drive khuếch đại xung điều khiển servo motor trong một máy CNC sử dụng mạng CANopen.

5.2. Hướng phát triển

Chúng tôi tiếp tục nghiên cứu về mạng CAN và đưa lý thuyết vào thực nghiệm thông qua mô hình điều khiển điện thân xe bao gồm motor, đèn. Mô hình gồm một bộ điều khiển và một bộ chấp hành. Bộ điều khiển bao gồm một vi xử lý nhận tín hiệu từ lidar vào để phát hiện vật cản. Nếu có vật cản, vi xử lý xuất tín hiệu điều khiển qua sang bộ chấp hành thông qua mạng CAN. Tại đây, bộ chấp hành là module hai relay điều khiển bốn đèn cảnh báo chớp tắt và một còi vang lên báo hiệu.

Sau dự án trên chúng tôi tiếp tục nghiên cứu về CANopen, một mở rộng của CAN để tiến hành điều khiển một driver servo motor rẻ lái tránh vật cản. Chúng tôi cũng nhận tín hiệu vật cản từ bộ điều khiển của mô hình phía trên, thêm vào đó là tín hiệu điều khiển thông qua CANopen đi vào driver điều khiển servo motor, driver điều khiển motor trợ lực lái rẻ sang hướng khác mỗi khi gặp vật cản.

TÀI LIỆU THAM KHẢO

Tiếng Anh

[1] Bosch Automotive Electrics and Automotive Electronics: Systems and Components, Networking and Hybrid Drive (Bosch Professional Automotive Information)

[2] Wolfhard Lawnrenz, “CAN System Engineering, From Theory to Practical Applications” Trang web [1] https://www.academia.edu/14283909/CONTROLLER_AREA_NETWORK [2] https://circuitdigest.com/microcontroller-projects/arduino-can-tutorial-interfacing- mcp2515-can-bus-module-with-arduino [3] https://www.electronicshub.org/arduino-mcp2515-can-bus- tutorial/#:~:text=The%20MCP2515%20CAN%20Bus%20Controller%20is%20a%20sim ple%20Module%20that,shown%20in%20the%20image%20below.

Một phần của tài liệu NGHIÊN CỨU MẠNG CAN TRÊN Ô TÔ. (Trang 33)

Tải bản đầy đủ (PDF)

(45 trang)