Đặc trưng của CAN là phương pháp định địa chỉ và giao tiếp hướng đối tượng, trong khi hầu hết các hệ thống bus thường khác đều giao tiếp dựa vào địa chỉ các trạm.Mỗi thông tin trao đổi trong mạng được coi như một đối tượng , được gắn một mã số căn cước.Thông tin được gửi trên bus theo kiểu truyền thông báo với độ dài có thể khác nhau.
Các thông báo không được gửi tới một địa chỉ nhất định mà bất cứ trạm nào cũng có thể nhận theo nhu cầu.Nội dung mỗi thông báo được các trạm phân biệt qua một mã căn cước ( IDENTIFIER).Mã căn cước không nói lên địa chỉ đích của thông báo, mà chỉ biểu diễn ý nghĩa của dữ liệu trong thông báo.Vì thế, mỗi trạm trên mạng có thể tự quyết định tiếp nhận và xử lý thông báo hay không tiếp nhận thông báo qua phương thức lọc thông báo(message
filtering).Cũng nhờ xử dụng phương thức lọc thông báo, nhiều trạm có thể đồng thời nhận cùng một thông báo và có các phản ứng khác nhau. Một trạm có thể yêu cầu một trạm khác gửi dữ liệu bằng cách gửi 1 khung REMOTE FRAME.Trạm có khả năng cung cấp nội dung thông tin đó sẽ gửi trả lại một khung dữ liệu DATA FRAME có cùng mã căn cước với khung yêu cầu.Bên cạnh tính năng đơn giản, cơ chế giao tiếp hướng đối tượng ở CAN còn mang lại tính linh hoạt và tính nhất quán dữ liệu của hệ thống.Một trạm CAN không cần biết thông tin cấu hình hệ thống ( ví dụ địa chỉ trạm), nên việc bổ sung hay bỏ đi một trạm trong mạng không đòi hỏi bất cứ một sự thay đổi nào về phần cứng hay phần mềm ở các trạm khác.Trong một mạng CAN , có thể chắc chắn rằng một thông báo hoặc được tất cả các trạm quan tâm tiếp nhận đồng thời, hoặc không được trạm nào tiếp nhận.tính nhất quán dữ liệu được đảm bảo qua các phương pháp gửi đồng loạt và xử lý lỗi.[7]
Chương 3: THIẾT KẾ MODULE NHẬN BIẾT VẬT CẢN VÀ XÂY DỰNG GIAO DIỆN TƯƠNG TÁC NGƯỜI DÙNG 1.5 Thiết kế module nhận biết vật cản
1.5.1 Giới thiệu phần mềm proteus
Proteus VSM ( Vỉtual Simulation Machine) của nhà sản xuất Labcenter Electronics là phần mềm (IDE) cho phép mô phỏng hoạt động của mạch điện tử, nó bao gồm phần thiết kế mạch điện tử và phần viết chương trình lập trình điều khiển cho các loại vi điều khiển có trong thiết kế mạch điện tử như PIC, AVR,... Proteus có khả năng mô phỏng hầu hết các linh kiện điện tử cơ bản như điện trở tụ điện, transistor, relay...
Phần mềm bao gồm hai chương trình :
ISIS (Intelligent Schematic Input System) cho phép mô phỏng mạch
ARES (Advanced Routing and Editing Software) dùng để vẽ mạch in. Hiện nay phần mềm proteus trên là nguồn mở trên internet, chúng ta hoàn toàn có thể cài đặt miễn phí. Nhà sản xuất đã đưa ra rất nhiều phiên bản, chúng ta có thể lự những phiên bản phù hợp với nhu cầu sử dụng và cấu hình laptop, các bạn có thể tải phần mềm tại
http://dammedientu.vn/download-proteus-8-9-pro-cai-dat/
a) Vẽ sơ đồ nguyên lý
Sơ đồ nguyên lý là sơ đồ thể hiện cách thức mà mạch hoạt động, ta thể xem theo dõi được hướng di chuyển của dòng điện, xác định được điện áp tại vị trí các nút chỉ với một vài thao tác click chuột đơn giản, thông qua sơ đồ nguyên lý ta có thể hiểu được cách mà mạch chạy, những lỗi về lý thuyết mà khi lắp mạch trong thực tế có thể gặp phải. Cung cấp điều kiện lý tưởng để mạch hoạt động mà không phải chịu những ảnh hưởng từ bên ngoài. Với phần mềm proteus, ta có thể thiết kế sơ đồ thể hiện nguyên lý hoạt động của mạch qua các bước sau:
Hình 3.1: Giao diện home page proteus 8.7
Bước 2: mở chương trình ISIS Professional
Click chuột vào biều tượng Schematic Capture trên thanh công cụ của giao diện để mở chương trình ISIS Professional.
Hình 3.2: Chọn chức năng vẽ sơ đồ nguyên lý
Sau khi chương trình ISIS Professional được mở ra, khoảng không gian làm việc với giao diện thiết kế mạch sẽ xuất hiện. Khi thiết kế mạch, cần đảm bảo các mạch được thiết kế gọn trong khung màu xanh để tiện quan sát, cũng như giúp cho người khác dễ hiểu hơn.Ngoài ra cần chú ý đến cách bố trí các linh kiện hợp lý, nên phân vùng theo chức năng để mạch rõ ràng, trong trường hợp các linh kiện nằm xa nhau thì nên sử dụng label để tránh việc các dây nối đè lên nhau gây rối mắt.
Hình 3.3: Giao diện schematic
Bước 3: lấy linh kiện có sẵn trong thư viện của proteus để sử dụng. Để lấy linh kiện của proteus, đầu tiên ta chọn Component Mode Để lấy linh kiện của proteus, đầu tiên ta chọn Component Mode
Hình 3.4: Chọn linh kiện
Tiếp theo, click vào P để đi đến thư viện chứa linh kiện
Khi thư viện mở ra, cửa sổ sau sẽ xuất hiện:
Hình 3.6: Cửa sổ chứa link chọn linh kiện
Trong đó :
Keywords: là vùng nhập từ khóa tìm kiếm linh kiện
Catergory: chứa các thư viện linh kiện có trong chương trình proteus Schematic Review: hiển thị hình dạng của linh kiện
PCB Preview: hiển thị sơ đồ chân PCB của linh kiện
Trong cửa sổ chọn linh kiện, chúng ta gõ tên linh kiện cần tìm kiếm vào ô keyword. Ví dụ, khi ta muốn tìm transistor, ta cần gõ vào ô keyword từ khóa “npn” hoặc từ khóa “pnp” thì transsistor và tất cả các linh kiện liện quan đến sẽ hiện ra trong phần result. Nếu chúng ta muốn lấy ra linh kiện để sử dụng, kích đúp vào linh kiện đó hoặc nút “ok” ở góc dưới phía bên phải màn hình, chúng sẽ xuất hiện trong phần Device để chúng ta có thể sử dụng. Vậy chỉ cần biết từ khóa của linh kiện thì có thể lấy ra sử dụng , đây là bảng chứa một số từ khóa của các lin kiện trong proteus:
Tụ điện CAP
Diode tên diode, ví dụ 1N4007, 1N4148...
Transistors NPN, PNP
Led gõ LED-<màu led>
Biến trở POT-HG
Loa Speaker hoặc Sounder
Nút nhấn Button công tắc Switch IC 555 555 Atmega Atmega Màn hình hiển thị Lcd Cảm biến Sensor Cuộn cảm Inductor
Bước 4: Đưa linh kiện ra ngoài màn hình thiết kế
Nhấp chuột vào linh kiện cần lấy trong ô Devices, sau đó di chuyển con trỏ ra ngoài màn hình thiết kế nơi cần đặt linh kiện và click chuột thì linh kiện sẽ được đặt tại đó.
Hình 3.7: Minh họa linh kiện trên mạch nguyên lý.
Để di chuyển linh kiện từ vị trí này đến vị trị khác, ta cần thao tác như sau:
Nhấp và giữ trái chuột vào linh kiện cần di chuyển, sau đó rê chuột đến vị trí mới và thả chuột ra. Bạn cũng có thể dùng lệnh Block Move trên thanh công cụ di chuyển linh kiện.
Xoay linh kiện .Để xoay các linh kiện bạn thao tác như sau. Đặt con trỏ lên linh kiện cần xoay sau đó bấm phải chuột, bạn chọn các lệnh xoay (rotate) theo chiều kim đồng hồ, ngược chiều kim đồng hồ, xoay 1800. Bạn có thể lật (mirror) linh kiện theo chiều ngang hay chiều dọc cũng từ cửa sổ tắt này. Bạn cũng có thể dùng công cụ Block Rotate trên thanh công cụ để xoay linh kiện. Xóa linh kiện: bạn để con trỏ lên linh kiện cần xóa rồi bấm phải chuột sau đó bạn chọn lệnh Delete Object từ shortcut menu. Bạn cũng có thể dùng phím Delete để xóa linh kiện hoặc dùng công cụ Block Delete trên thành công cụ để xóa linh kiện.
Bước 5: Thay đổi thông số kỹ thuật của linh kiện
Để vẽ mạch một cách nhanh chóng chúng ta không nhất thiết phải lấy linh kiện có các thông số chính xác, nhất là trong mạch có nhiều linh kiện giống nhau nhưng khác thông số kỹ thuật. Nếu lấy từng linh kiện đúng với các thông số yêu cầu thì sẽ mất rất nhiều thời gian và đôi khi trong thư viện không có linh kiện với thông số mình cần tìm. Vì vậy, ta cần phải thay đổi các thông số kỹ thuật cho linh kiện.
Bước 6: Bố trí, sắp xếp lại linh kiện cho hợp lý Bước 7: Nối dây
Sau khi lấy và sắp xếp các linh kiện theo mong muốn, bạn tiến hành nối các chân linh kiện cho mạch. Bạn tiến hành như sau:
Đặt con trỏ trên chân linh kiện cần nối dây cho đến khi ô vuông màu đỏ xuất hiện sau đó bạn click chuột vào chân linh kiện và chế độ nối dây được bắt đầu. Bạn rê chuốt đến chân linh kiện cần nối khác và click chuột một lần
nữa để kết thúc quá trình nối dây. Bạn thao tác tương tự như vậy cho đến khi hoàn thành sơ đồ mạch.
Để xóa đường nối dây sai, bạn nhấp phải chuột trên đường dây nối và chọn Delete Wire hoặc double click phải trên đường dây nối.
thúc quá trình nối dây. Bạn thao tác tương tự như vậy cho đến khi hoàn thành sơ đồ mạch.
Để xóa đường nối dây sai, bạn nhấp phải chuột trên đường dây nối và chọn Delete Wire hoặc double click phải trên đường dây nối.
Bước 8: Kiểm tra sơ đồ mạch nguyên lý
Kiểm tra sơ đồ mạch sau khi hoàn thành xong mạch thiết kế là rất quan trong, nó giúp bạn tìm được những lỗi mà trong quá trình thiết kế bạn chưa phát hiện ra được.
Để kiểm tra lỗi ta thao tác như sau:
Trên thanh công cụ, bạn chọn Tool >> Electrical Rule Check
Nếu có thông lỗi bạn tìm cách khắc phục cho đến khi không còn lỗi và nhận được dòng thông báo (No ERC errors found)
b) Cách cài đặt file lập trình điều khiển vào vi điều khiển trong mạch .
Để nạp code cho vi điều khiển trong mạch nguyên lý, tại mạch nguyên lý ta click đúp chuột phải vào vi điều khiển, tại giao diện xuất hiện trên màn hình, tại mục program file ta nhập vào đường dẫn chứa file mã nguồn mà ta đã viết. Nhấn “ok” và chạy chương trình. Lưu ý file chứa mã nguồn phải có định dạng và mà chương trình có thể đọc được như file có đuôi .hex, .cof,...
1.5.2 Thiết kế module nhận biết vật cản và tính toán khoảng cách với cảm biến siêu âm cảm biến siêu âm
a) Mục đích
Tính toán khoảng cách, và xác định được cách thức hoạt động ở điều kiện lý tưởng của hệ thống
So sánh đối chiếu kết quả thu được với kết quả thực tế =>Từ đó rút ra ảnh hưởng từ điều kiện môi trường đến độ chính xác của hệ thống.
Tạo tiền đề lắp ráp mô hình thực tế. b) Thiết kế mạch mô phỏng.
Chọn linh kiện.
- cảm biến: truyền phát và thu nhận tín hiệu
Trên thế giới hiện nay có nhiều loại cảm biến siêu âm, mỗi loại có những ưu điểm và nhược điểm khác nhau như cảm biến siêu âm vân tay s10 , cảm biến siêu âm srf05 ..., Trong phần này chúng ta cần xác định khoảng cách từ cảm biến đến vật thể nên ta sử dụng cảm biến siêu âm đo khoảng cách hc- sr04
Cảm biến siêu âm Ultrasonic HC-SR04 được sử dụng để nhận biết khoảng cách từ vật thể đến cảm biến nhờ sóng siêu âm, cảm biến có thời gian phản hồi nhanh, độ chính xác cao, phù hợp cho các ứng dụng phát hiện vật cản, đo khoảng cách bằng sóng siêu âm.
cách bằng sóng siêu âm.
Cảm biến siêu âm Ultrasonic HC-SR04 sử dụng cặp chân Echo / Trigger để phát và nhận tín hiệu.
Hình 3.8: Cảm biến siêu âm HC-SR04.
Thông số kỹ thuật:
Điện áp hoạt động: 5VDC Dòng tiêu thụ: 10~40mA Tín hiệu giao tiếp: TTL
Chân tín hiệu: Echo, Trigger. Góc quét:<15 độ
Tần số phát sóng: 40Khz
Khoảng cách đo được: 2~450cm (khoảng cách xa nhất đạt được ở điều khiện lý tưởng với không gian trống và bề mặt vật thể bằng phẳng, trong điều kiện bình thường cảm biến cho kết quả chính xác nhất ở khoảng cách <100cm).
Sai số: 0.3cm (khoảng cách càng gần, bề mặt vật thể càng phẳng sai số càng nhỏ).
Kích thước: 43mm x 20mm x 17mm Chức năng của các chân:
VCC Cấp nguồn cho cảm biến (5V) hoặc 3.3V ở cảm biến 3V3
TRIGGER Chân phát sóng âm. Là chu kỳ của của điện cao /thấp diễn ra.
ECHO Trạng thái ban dầu là 0V, khi có tín hiệu trả về sẽ là 5V và sau đó trở về 0V
GND Nối cực âm của mạch
Cách thức hoạt động của cảm biến hc-sr04: Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds) từ chân Trig. Sau đó, cảm biến siêu âm sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại được sóng phản xạ ở pin này. Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biển và quay trở lại.
-vi điều khiển: nhận tín hiệu từ cảm biến âm thanh rồi đưa ra xử lý. Arduino Uno là một board mạch vi điều khiển được phát triển bởi Arduino.cc, một nền tảng điện tử mã nguồn mở chủ yếu dựa trên vi điều khiển AVR Atmega328P. Với Arduino chúng ta có thể xây dựng các ứng dụng điện tử tương tác với nhau thông qua phần mềm và phần cứng hỗ trợ.
Arduino Uno R3 đi kèm với giao diện USB, 6 chân đầu vào analog, 14 cổng kỹ thuật số I / O được sử dụng để kết nối với các mạch điện tử, thiết bị bên ngoài. Trong đó có 14 cổng I / O, 6 chân đầu ra xung PWM cho phép các nhà thiết kế kiểm soát và điều khiển các thiết bị mạch điện tử ngoại vi một cách trực quan. Chúng được kết nối trực tiếp với máy tính thông qua USB để giao tiếp với phần mềm lập trình IDE, tương thích với Windows, MAC hoặc Linux Systems. Các ngôn ngữ lập trình như C và C ++ được sử dụng trong IDE.
Hình 3.9: Vi điều khiển arduino uno r3
Thông số kỹ thuật:
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng
USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào lý tưởng 7-12V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O
30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB
dùng bởi bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Chức năng các chân:
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO. Khi bạn dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau.
5V: cấp điện áp 5V đầu ra. Dòng tối đa cho phép ở chân này là 500mA.
3.3V: cấp điện áp 3.3V đầu ra. Dòng tối đa cho phép ở chân này là 50mA.
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND.
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân này. Và dĩ nhiên nó luôn là 5V. Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn.
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ.
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị
khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây. Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
Vậy nên ta sẽ sử dụng Arduino Uno R3 để mô phỏng.
- Màn hình LCD : hiển thị khoảng cách từ cảm biến đến vật cản.