Mục lục:

Hướng dẫn đơn giản cho CANBUS: 8 bước
Hướng dẫn đơn giản cho CANBUS: 8 bước

Video: Hướng dẫn đơn giản cho CANBUS: 8 bước

Video: Hướng dẫn đơn giản cho CANBUS: 8 bước
Video: Hướng dẫn cài đặt canbus trên màn hình oledpro a5 2024, Tháng bảy
Anonim
Hướng dẫn đơn giản cho CANBUS
Hướng dẫn đơn giản cho CANBUS

Tôi đã học CAN được ba tuần, và bây giờ tôi đã hoàn thành một số đơn đăng ký để xác nhận kết quả học tập của mình. Trong hướng dẫn này, bạn sẽ học cách sử dụng Arduino để thực hiện giao tiếp CANBUS. Nếu bạn có bất kỳ đề xuất nào, hoan nghênh bạn để lại tin nhắn.

Quân nhu:

Phần cứng:

  • Maduino Zero CANBUS
  • Mô-đun nhiệt độ & độ ẩm DHT11
  • 1.3 "I2C OLED 128x64- Xanh lam
  • Cáp DB9 đến DB9 (cái đến cái)
  • Dòng Dupont

Phần mềm:

Arduino IDE

Bước 1: CANBUS là gì

CANBUS là gì
CANBUS là gì
CANBUS là gì
CANBUS là gì

Về CAN

CAN (Mạng vùng điều khiển) là một mạng truyền thông nối tiếp có thể thực hiện điều khiển thời gian thực phân tán. Nó được phát triển cho ngành công nghiệp ô tô để thay thế hệ thống dây điện phức tạp bằng xe buýt hai dây.

Giao thức CAN xác định Lớp liên kết dữ liệu và một phần của Lớp vật lý trong mô hình OSI.

Giao thức CAN được tiêu chuẩn hóa ISO với ISO11898 và ISO11519. ISO11898 là tiêu chuẩn giao tiếp tốc độ cao CAN với tốc độ truyền thông 125kbps-1Mbps. ISO11519 là tiêu chuẩn giao tiếp tốc độ thấp CAN với tốc độ truyền thông dưới 125kbps.

Ở đây chúng tôi tập trung vào CAN tốc độ cao.

ISO-11898 mô tả cách thông tin được truyền giữa các thiết bị trên mạng và tuân theo mô hình Kết nối Hệ thống Mở (OSI) được xác định theo các lớp. Giao tiếp thực tế giữa các thiết bị được kết nối bởi phương tiện vật lý được xác định bởi lớp vật lý của mô hình

  • Mỗi đơn vị CAN kết nối với bus có thể được gọi là một nút. Tất cả các đơn vị CAN được kết nối với một bus kết thúc ở mỗi đầu bằng điện trở 120 Ω để tạo thành một mạng. Xe buýt bao gồm các tuyến CAN_H và CAN_L. Bộ điều khiển CAN xác định mức bus dựa trên sự khác biệt về mức công suất trên cả hai dây. Các cấp độ xe buýt được chia thành cấp độ trội và cấp độ lặn, mà phải là một trong số chúng. Người gửi gửi thông điệp đến người nhận bằng cách thực hiện một sự thay đổi ở mức bus. Khi dòng logic "và" được thực hiện trên bus, mức trội là "0" và mức lặn là "1".
  • Ở trạng thái ưu thế, điện áp của CAN_H là khoảng 3,5V và điện áp của CAN_L là khoảng 1,5V. Ở trạng thái lặn, hiệu điện thế hai đầu mạch là 2,5V.
  • Tín hiệu là khác biệt, đó là lý do tại sao CAN có được khả năng chống nhiễu mạnh mẽ và khả năng chịu lỗi. Tín hiệu vi sai cân bằng giúp giảm nhiễu ghép và cho phép tốc độ truyền tín hiệu cao qua cáp xoắn đôi. Dòng điện trong mỗi đường tín hiệu là bằng nhau nhưng ngược chiều và dẫn đến hiệu ứng triệt tiêu trường, chìa khóa để phát ra tiếng ồn thấp. Việc sử dụng các bộ thu vi sai cân bằng và hệ thống cáp xoắn đôi giúp tăng cường khả năng loại bỏ chế độ chung và khả năng chống nhiễu cao của bus CAN.

Bộ thu phát CÓ THỂ

Bộ thu phát CAN chịu trách nhiệm chuyển đổi giữa mức logic và tín hiệu vật lý. Chuyển đổi tín hiệu logic sang mức vi phân hoặc tín hiệu vật lý sang mức logic.

Bộ điều khiển CÓ THỂ

Bộ điều khiển CAN là thành phần cốt lõi của CAN, thực hiện tất cả các chức năng của lớp liên kết dữ liệu trong giao thức CAN và có thể tự động phân giải giao thức CAN.

MCU

MCU chịu trách nhiệm điều khiển mạch chức năng và bộ điều khiển CAN. Ví dụ, các tham số bộ điều khiển CAN được khởi tạo khi nút khởi động, khung CAN được đọc và gửi qua bộ điều khiển CAN, v.v.

Bước 2: Giới thiệu về CAN Communications

Khi bus không hoạt động, tất cả các nút có thể bắt đầu gửi tin nhắn (điều khiển đa tổng thể). Nút truy cập bus đầu tiên sẽ có quyền gửi (chế độ CSMA / CA). Khi nhiều nút bắt đầu gửi cùng một lúc, nút gửi thông điệp ID có mức độ ưu tiên cao sẽ có quyền gửi.

Trong giao thức CAN, tất cả các tin nhắn được gửi ở một định dạng cố định. Khi xe buýt không hoạt động, tất cả các thiết bị kết nối với xe buýt có thể bắt đầu gửi tin nhắn mới. Khi có nhiều hơn hai ô bắt đầu gửi tin nhắn cùng một lúc, mức độ ưu tiên được xác định dựa trên số nhận dạng. ID không đại diện cho địa chỉ đích của việc gửi, mà là mức độ ưu tiên của thông báo truy cập bus. Khi có nhiều hơn hai ô bắt đầu gửi tin nhắn cùng một lúc, từng bit của ID miễn phí sẽ được phân xử theo từng ô. Đơn vị thắng trọng tài có thể tiếp tục gửi tin nhắn, đơn vị thua trọng tài lập tức ngừng gửi và nhận tác phẩm.

Xe buýt CAN là một loại xe buýt quảng bá. Điều này có nghĩa là tất cả các nút có thể ‘nghe thấy’ tất cả các đường truyền. tất cả các nút luôn luôn thu nhận tất cả lưu lượng truy cập. Phần cứng CAN cung cấp tính năng lọc cục bộ để mỗi nút có thể chỉ phản ứng với các thông báo thú vị.

Bước 3: Khung

Khung
Khung

Thiết bị CAN gửi dữ liệu qua mạng CAN trong các gói được gọi là khung. CAN có bốn loại khung:

  • Khung dữ liệu: khung chứa dữ liệu nút để truyền
  • Khung từ xa: khung yêu cầu truyền một số nhận dạng cụ thể
  • Khung lỗi: một khung được truyền bởi bất kỳ nút nào phát hiện ra lỗi
  • Khung quá tải: khung để tạo độ trễ giữa dữ liệu hoặc khung từ xa

Khung dữ liệu

Có hai loại khung dữ liệu, tiêu chuẩn và mở rộng.

Ý nghĩa của các trường bit trong Hình là:

  • SOF – Bit bắt đầu khung (SOF) chiếm ưu thế duy nhất đánh dấu thời điểm bắt đầu thông báo và được sử dụng để đồng bộ hóa các nút trên xe buýt sau khi không hoạt động.
  • Định danh-Định danh CAN 11-bit Tiêu chuẩn thiết lập mức độ ưu tiên của thông báo. Giá trị nhị phân càng thấp thì mức độ ưu tiên của nó càng cao.
  • RTR – Bit yêu cầu truyền từ xa duy nhất (RTR)
  • IDE – Một bit mở rộng định danh đơn (IDE) chiếm ưu thế có nghĩa là một định danh CAN tiêu chuẩn không có phần mở rộng đang được truyền.
  • R0 – Bit dự trữ (để có thể sử dụng trong việc sửa đổi tiêu chuẩn trong tương lai).
  • DLC – Mã độ dài dữ liệu 4 bit (DLC) chứa số byte dữ liệu đang được truyền.
  • Dữ liệu – Có thể truyền tối đa 64 bit dữ liệu ứng dụng.
  • CRC – Kiểm tra dư thừa theo chu kỳ 16 bit (15 bit cộng với dấu phân cách) (CRC) chứa tổng kiểm tra (số bit được truyền) của dữ liệu ứng dụng trước đó để phát hiện lỗi.
  • ACK – ACK là 2 bit, một là bit báo nhận và bit thứ hai là dấu phân cách.
  • EOF – Trường 7 bit cuối khung (EOF) này đánh dấu phần cuối của khung CAN (thông báo) và vô hiệu hóa việc nhồi nhét bit, cho biết lỗi nhồi khi chiếm ưu thế. Khi 5 bit của cùng mức logic xảy ra liên tiếp trong quá trình hoạt động bình thường, một bit của mức logic ngược lại sẽ được đưa vào dữ liệu.
  • IFS – Không gian liên khung (IFS) 7-bit này chứa thời gian được bộ điều khiển yêu cầu để di chuyển khung đã nhận chính xác đến vị trí thích hợp của nó trong vùng đệm thông báo.

Trọng tài

Trong trạng thái không hoạt động của xe buýt, đơn vị bắt đầu gửi tin nhắn đầu tiên sẽ nhận được quyền gửi. Khi nhiều đơn vị bắt đầu gửi cùng một lúc, mỗi đơn vị gửi bắt đầu ở bit đầu tiên của phân đoạn trọng tài. Đơn vị có số lượng mức chi phối sản lượng liên tục lớn nhất có thể tiếp tục gửi.

Bước 4: Tốc độ và khoảng cách

Tốc độ và khoảng cách
Tốc độ và khoảng cách

Xe buýt CAN là một xe buýt kết nối nhiều đơn vị cùng một lúc. Về mặt lý thuyết, không có giới hạn về tổng số đơn vị có thể được kết nối. Tuy nhiên, trong thực tế, số lượng thiết bị có thể được kết nối bị giới hạn bởi thời gian trễ trên xe buýt và tải điện. Giảm tốc độ liên lạc, tăng số đơn vị có thể kết nối và tăng tốc độ liên lạc, số đơn vị có thể kết nối giảm.

Khoảng cách liên lạc tỷ lệ nghịch với tốc độ truyền thông, và khoảng cách liên lạc càng xa thì tốc độ truyền thông càng nhỏ. Khoảng cách xa hơn có thể là 1km hoặc hơn, nhưng tốc độ dưới 40kps.

Bước 5: Phần cứng

Phần cứng
Phần cứng

Mô-đun CAN-BUS Maduino Zero là một công cụ do Makerfabs phát triển cho giao tiếp CANbus dựa trên Arduino, với bộ điều khiển CAN và bộ thu phát CAN, để tạo cổng CAN-bus sẵn sàng sử dụng.

  • MCP2515 là bộ điều khiển CAN độc lập triển khai đặc điểm kỹ thuật CAN. Nó có khả năng truyền và nhận cả dữ liệu tiêu chuẩn và dữ liệu mở rộng và các khung hình từ xa.
  • MAX3051 giao diện giữa bộ điều khiển giao thức CAN và các dây vật lý của các đường xe buýt trong mạng vùng bộ điều khiển (CAN). MAX3051 cung cấp khả năng truyền khác biệt tới bus và khả năng nhận vi sai tới bộ điều khiển CAN.

Bước 6: Kết nối

Sự liên quan
Sự liên quan

Kết nối mô-đun DHT11 với mô-đun CAN-BUS Maduino Zero bằng dây được sử dụng như một công cụ hỗ trợ giao tiếp CAN. Tương tự, kết nối màn hình với mô-đun để nhận dữ liệu và hiển thị nó.

Kết nối giữa Maduino Zero CANBUS và DHT11 :

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DỮ LIỆU

Kết nối giữa Maduino Zero CANBUS và OLED :

Maduino Zero CANBUS - OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Sử dụng cáp DB9 để kết nối hai mô-đun Maduino Zero CANBUS.

Bước 7: Mã

MAX3051 hoàn thành việc chuyển đổi các mức vi sai sang tín hiệu logic. MCP2515 hoàn thành chức năng CAN như mã hóa và giải mã dữ liệu. MCU chỉ cần khởi tạo bộ điều khiển và gửi và nhận dữ liệu.

  • Github:
  • Sau khi cài đặt Arduino, không có gói hỗ trợ bo mạch (Arduino zero) cần được cài đặt.
  • Chọn công cụ -> Board -> Board Manager, tìm kiếm "Arduino zero" và cài đặt "Arduino SAMD Boards".
  • Chọn Công cụ -> Bảng -> Arduino Zero (Cổng USB gốc), chọn Công cụ -> Cổng -> com…
  • Sau khi tải chương trình từ GitHub, bạn cần đảm bảo rằng tất cả các tệp đều nằm trong thư mục dự án, nơi chứa các tệp thư viện hỗ trợ CANBUS.
  • Cài đặt thư viện cảm biến DHT của Adafruit, được sử dụng để điều khiển DHT11 để lấy nhiệt độ và độ ẩm.
  • Sử dụng các địa chỉ khác nhau để gửi nhiệt độ và độ ẩm riêng biệt trong mã Test_DHT11.ino.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

chậm trễ (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); chậm trễ (500);

“0x10” có nghĩa là ID thông báo, “0” là khung chuẩn có nghĩa là, “stmp1.length ()” là độ dài thông báo, “stmp_send1” là dữ liệu được gửi.

  • Trong mã Test_OLED.ino, tất cả các thông báo trên CANBUS được nhận bằng truy vấn và thông tin cần thiết được hiển thị trên OLED.
  • Tải chương trình Maduino-CANbus-RS485 / Test_DHT11_OLED / Test_DHT11 / Test_DHT11.ino lên mô-đun được kết nối với cảm biến và Tải chương trình Maduino-CANbus RS485 / Test_DHT11_OLED / Test_OLED / Test_OLED.ino lên mô-đun khác được kết nối với OLED.

Bước 8: Hiển thị

Chỉ
Chỉ
Chỉ
Chỉ

Bật nguồn hai mô-đun, nhiệt độ và độ ẩm sẽ được hiển thị trên màn hình.

Đề xuất: