1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu, thiết kế robot điều khiển bằng cử chỉ bàn tay

61 41 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 1,61 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong đồ án này tôi trình bày những kiến thức cơ bản về bo mạch Arduino Uno R3, module điều khiển động cơ L293D, thiết bị cảm biến cử chỉ 3D Leap Motion Controller như là cấu tạo, nguyên

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC VINH

-

BẢN NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP Họ và tên sinh viên: Nguyễn Thế Lâm Mã số sinh viên: 1151083795 Ngành : Kỹ thuật điện tử truyền thông Khoá: 52 Giảng viên hướng dẫn: ThS Hồ Sỹ Phương Cán bộ phản biện: 1 Nội dung thiết kế tốt nghiệp:

2 Nhận xét của cán bộ phản biện:

Ngày tháng năm

Cán bộ phản biện

(Ký, ghi rõ họ và tên)

Trang 3

MỤC LỤC

Trang

TÓM TẮT ĐỒ ÁN 4

MỞ ĐẦU 6

DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ 8

DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT 10

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 11

1.1 Giới thiệu phần mềm Labview 11

1.1.1 Khái quát chung về Labview 11

1.1.2 Kỹ thuật lập trình Lapview 13

1.2 Tổng quan về Arduino Uno R3 và module L293D 21

1.2.1 Bo mạch Arduino Uno R3 21

1.2.2 Module điều khiển động cơ L293D 23

1.3 Tổng quan về bộ điều khiển bằng cử chỉ 24

1.4 Kết luận 26

CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ HỆ THỐNG 27

2.1 Phân tích, lựa chọn thiết bị 27

2.1.1 Leap Motion Controller 27

2.1.2 Board mạch Arduino Uno R3 27

2.1.3 Motor driver shield L293D 29

2.2 Mạch cầu H 30

2.3 Bài toán điều khiển động cơ 33

2.3.1 Mô hình động cơ một chiều 33

2.3.2 Các phương pháp điều chỉnh tốc độ động cơ một chiều 38

2.4 Lập trình Labview điều khiển robot 44

2.5 Kết luận 47

CHƯƠNG 3 MÔ PHỎNG VÀ THI CÔNG 48

3.1 Thi công phần cứng 48

3.1.1 Khối cảm biến cử chỉ 48

3.1.2 Khối máy chủ 48

3.1.3 Khối vi điều khiển 49

3.1.4 Khối động cơ 49

3.2 Lập trình phần mềm 50

3.2.1 Chương trình trên vi điều khiển 50

3.2.2 Chương trình trên Labview 51

3.3 Kết luận 58

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 59

Kết luận 59

Trang 4

TÓM TẮT ĐỒ ÁN

Từ khi bộ điều khiển Leap Motion được phát hành, nhiều kỹ sư, lập trình

viên đã nghiên cứu cho ra đời những sản phẩm mới khai thác được khả năng mà Leap Motion mạng lại Điều khiển bằng cử chỉ là một phương pháp điều khiển mới, mang lại nhiều lợi ích cũng như hứng thú cho mọi người

Đề tài được thực hiện bằng các phương pháp: tìm hiểu qua internet, các diễn đàn và sự hướng dẫn của giáo viên

Trong đồ án này tôi trình bày những kiến thức cơ bản về bo mạch Arduino Uno R3, module điều khiển động cơ L293D, thiết bị cảm biến cử chỉ 3D (Leap Motion Controller) như là cấu tạo, nguyên lý hoạt động, khai thác một số cử chỉ

mà bộ điều khiển Leap Motion hỗ trợ như vị trí và tốc độ của bàn tay, trình bày những kiến thức cơ bản về phần mềm Labview, cách viết lệnh để điều khiển arduino và cách kết nối với Leap Motion

Đi vào thiết kế mô hình động cơ gồm 2 motor DC, phân tích và xây dựng chương trình điều khiển động cơ này trên phần mềm Labview kết hợp với bộ điều khiển Leap Motion

Để ứng dụng được vào thực tế thì đề tài phải tiếp tục nghiên cứu và phát triển thêm

Trang 5

In this thesis i present the basic knownledge of Arduino Uno R3 board, module shield driver L293D, gesture sensor device (Leap Motion Controller) as structure, principle of operation, exploit some gestures that Leap Motion Controller support as position and velocity of hand, present the basic knownlodge of Labview software as command write to control arduino and way

to connect with Leap Motion

Design motor model consist of 2 DC motors, analyze and build code to control this motor on Labview software combined with Leap Motion Controller For practical apply, the thesis must continue to research and develop

Trang 6

MỞ ĐẦU

Cùng với sự phát triển của khoa học kỹ thuật thì việc điều khiển các thiết

bị, máy móc từ xa cũng trở nên phổ biến hơn Cách thức điều khiển từ xa phổ biến bây giờ vẫn là dùng điện thoại thông minh, laptop kết nối qua bluetooth hay wifi để điều khiển, và việc này đòi hỏi người kỹ sư phải biết và hiểu rõ về lập trình truyền thống (gõ từng dòng lệnh) điều này gây khó khăn cho hầu hết các

kỹ sư Điện tử Viễn thông là những người không chuyên về lập trình

Labview ra đời đã giải quyết được khó khăn trên, việc lập trình trên phần mềm labview đơn giản hơn rất nhiều, đối với Labview việc lập trình đơn giản chỉ là kéo và thả các khối chức năng rồi kết nối chúng lại với nhau như việc chúng ta vẽ mạch điện tử Khả năng viết code dễ dàng là vậy nhưng việc cứ ngồi trước màn hình máy tính và điều khiển thiết bị bằng việc click chuột cũng gây nhàm chán cho người sử dụng nên việc thay thế cách điều khiển mới là cần thiết

Từ khi bộ điều khiển Leap Motion được giới thiệu vào năm 2013, rất nhiều ứng dụng đã được các kỹ sư, lập trình viên phát triển để khai thác khả năng của thiết bị này, trong đó có ứng dụng hữu ích là thay thế chuột máy tính Việc kết hợp Labview và Leap Motion để điều khiển thiết bị đang còn khá

mới mẻ ở việt nam nên tôi chọn đề tài “Nghiên cứu, thiết kế robot điều khiển

Trang 7

- Và cuối cùng là tổng hợp những hiểu biết trên để thiết kế một mô hình điều khiển thiết bị bằng cử chỉ kết hợp giữa Labview và Leap Motion

Đề tài được thực hiện bằng các phương pháp: tìm hiểu qua internet, các diễn đàn và sự hướng dẫn của giáo viên

Cấu trúc của đồ án, ngoài phần mở đầu, kết luận, danh mục bảng biểu, tài liệu tham khảo, nội dung của đồ án được trình bày trong 3 chương:

Chương 1: Cơ sở lý thuyết

Chương này trình bày các kiến thức cơ bản về bo mạch Arduino Uno R3, module điều khiển động cơ sử dụng IC L293D, kiến thức cơ bản về phần mềm Labview và tìm hiểu về bộ điều khiển Leap Motion

Chương 2: Phân tích, thiết kế hệ thống

Chương này đi vào phân tích yêu cầu của đồ án, lý do lựa chọn các thiết bị

sử dụng và tiến hành xây dựng các khối lệnh để điều khiển robot

Chương 3: Mô phỏng và thi công

Trên cơ sở lý thuyết ở chương 1 cũng như các phân tích yêu cầu và thuật toán ở chương 2, chương này đi vào mô phỏng chương trình trên phần mềm và tiến hành thi công mô hình điều khiển động cơ bằng sự kết hợp giữa Labview và Leap Motion đảm bảo đúng mục đích yêu cầu đặt ra

Nghệ an, ngày tháng năm 2016

Sinh viên thực hiện

Nguyễn Thế Lâm

Trang 8

DANH MỤC CÁC BẢNG BIỂU, HÌNH VẼ

Bảng 2.1: Bảng trạng thái chân Arduino 45

Hình 1.1: Giao diện làm việc của Labview 12

Hình 1.2: Các khối cơ bản của arduino 13

Hình 1.3: Khối init 14

Hình 1.4: Khối close 14

Hình 1.5: Các khối cơ bản của khối low level 15

Hình 1.6: Các khối cơ bản của khối sensor 16

Hình 1.7: Các khối cơ bản của leap 16

Hình 1.8: Khối open của leap 17

Hình 1.9: Khối read all data 17

Hình 1.10: Khối read hand position velocity 17

Hình 1.11: Các khối lệnh boolean 18

Hình 1.12: Các khối lệnh so sánh 19

Hình 1.13: Khối lệnh select 19

Hình 1.14: Cấu trúc vòng lặp while 20

Hình 1.15: Cấu trúc vòng lặp For 20

Hình 1.16: Cấu trúc Case 21

Hình 1.17: Board mạch Arduino Uno R3 22

Hình 1.18: Module shield L293D 24

Hình 1.19: Cấu tạo bên trong của Leap Motion 25

Hình 1.20: Thiết kế trên autodesk sử dụng leap motion 26

Hình 2.1: Sơ đồ chân Atmega328 29

Hình 2.2: Sơ đồ chân IC L293D 30

Hình 2.3: Sơ đồ mạch cầu H 31

Hình 2.4: Nguyên lý hoạt động của mạch cầu H 31

Hình 2.5: Cấu tạo và ký hiệu của MOSFET kênh N và kênh P 32

Hình 2.6: Cấu tạo động cơ DC 33

Hình 2.7: Sơ đồ nguyên lý của động cơ một chiều kích thích độc lập 36

Hình 2.8: Sơ đồ nguyên lý của động cơ một chiều kích thích song song 36

Hình 2.9: Sơ đồ nguyên lý của động cơ một chiều kích thích nối tiếp 37

Hình 2.10: Sơ đồ nguyên lý của động cơ một chiều kích thích hỗn hợp 37

Hình 2.11: Sơ đồ thay thế mạch điện phần ứng động cơ một chiều 38

Hình 2.12: Xác định phạm vi điều chỉnh 39

Hình 2.13: Phạm vi điều chỉnh tốc độ và mômen 40

Hình 2.14: Đặc tính điều chỉnh khi điều chỉnh từ thông động cơ 42

Hình 2.15: Đặc tính điều chỉnh điện trở phụ trên mạch điện phần ứng 43

Hình 2.16: Điều chỉnh độ rộng xung PWM 43

Hình 2.17: Dạng sóng dòng và áp trên động cơ 44

Trang 9

Hình 2.18: Block code điều khiển 2 động cơ DC 46

Hình 2.19: Trường hợp TRUE của cấu trúc case 47

Hình 3.1 Sơ đồ khối hệ thống điều khiển robot bằng cử chỉ 48

Hình 3.2: Bộ điều khiển leap motion 48

Hình 3.3: Sơ đồ đấu nối chân Arduino và module L293D 48

Hình 3.4: Giao diện nạp chương trình cho bo mạch Arduino 50

Hình 3.5: Nạp chương trình cho Arduino 50

Hình 3.6: Lưu đồ thuật toán chương trình điều khiển 51

Hình 3.7: Các khối kết nối Arduino trong Labview 52

Hình 3.8: Mô phỏng giao diện điều khiển động cơ 53

Hình 3.9: Chương trình điều khiển động cơ bằng leap motion 54

Hình 3.10: Trường hợp TRUE của trạng thái led tiến 54

Hình 3.11: Giao tiếp Leap Motion với Labview 56

Hình 3.12: Khối điều khiển tốc độ động cơ 57

Hình 3.13: Giao diện hiển thị tốc độ động cơ 57

Hình 3.14: Giao diện chương trình điều khiển chính 58

Trang 10

DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT

Ký hiệu Tiếng anh Tiếng việt

DC Dirrect Current Dòng một chiều

NI National Instrument Hãng NI

Vis Virtual Instrument Thiết bị ảo

PWM Pulse Width Modulation Điều chỉnh độ rộng xung

PID Proportional Integral Derivative Tỷ lệ vi tích phân

IC Integrated Circuit Mạch tích hợp

RISC Reduced Instruction Set Computer Máy tính tập lệnh đơn giản UART Universal Asynchronous Serial

Receiver and Transmiter

Bộ truyền nhận nối tiếp không đồng bộ

ADC Analog - to digital Converter Bộ chuyển đổi tương tự số DAC Digital - to Analog Converter Bộ chuyển đổi số tương tự

Trang 11

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.1 Giới thiệu phần mềm Labview

1.1.1 Khái quát chung về Labview

Labview (Laboratory Virtual Instrument Engineering Workbench) là một nền tảng thiết kế hệ thống và là môi trường phát triển cho ngôn ngữ lập trình đồ họa Labview hỗ trợ tạo các ứng dụng với giao diện người dùng chuyên nghiệp một cách nhanh chóng và hiệu quả, Labview được sử dụng để phát triển các ứng dụng đo lường, kiểm thử, và điều khiển tinh vi bằng cách sử dụng các khối lệnh trực quan và dây nối tín hiệu Ngoài ra, Labview còn có thể được mở rộng cho nhiều nền tảng phần cứng và hệ điều hành khác nhau

Labview cũng làm một ngôn ngữ lập trình, giống như các ngôn ngữ lập trình hiện đại khác thì Labview cũng cung cấp các thư viện thu nhận dữ liệu, một loạt các thiết bị điều khiển, phân tích dữ liệu, biểu diễn và lưu trữ dữ liệu

Nó còn có các công cụ phát triển được thiết kế riêng cho việc nối ghép và điều khiển thiết bị

Labview khác với các ngôn ngữ lập trình truyền thống ở điểm cơ bản là: các ngôn ngữ lập trình khác thường dùng trên cơ chế dòng lệnh, trong khi đó Labview dùng ngôn ngữ lập trình đồ họa để tạo ra các chương trình ở dạng sơ

đồ khối

Vì Labview là chương trình mô phỏng giao diện và hoạt động của các thiết

bị thực, nên chương trình Labview được gọi là VI (Virtual Instrument) Một chương trình VI gồm có Front Panel và Block Diagram Front panel là giao diện người dùng – nơi mà sẽ hiển thị các hình ảnh trực quan để người dùng dễ thao tác còn Block Diagram là nơi mà chúng ta viết lệnh cho chương trình

Không gian làm việc của Front Panel và Block Diagram được cho ở hình

Trang 12

Hình 1.1 Giao diện làm việc của Labview

Như hình trên ta thấy: hình a là giao diện làm việc của Front Panel, chứa các biểu tượng trực quan như trong đời thực nên việc người dùng tiếp cận để điều khiển là rất dễ dàng

Hình b chưa các khối lệnh được ghép nối một cách logic với nhau để thực hiện một thuật toán nào đó Với cách viết code như thế này, Labview đã cho phép nhiều đối tượng người dùng không chuyên về lập trình có thể tiếp cận và khai thác cũng như tự phát triển các ứng dụng thiết thực trong đời sống mà không cần phải tìm hiểu về các ngôn ngữ lập trình truyền thống như C, C++, Chức năng chính của Labview có thể tóm tắt như sau:

- Thu thập tín hiệu từ các thiết bị bên ngoài như cảm biến nhiệt độ, hình ảnh từ webcam, vận tốc của động cơ,

- Giao tiếp với các thiết bị ngoại vi thông qua nhiều chuẩn giao tiếp như RS232, USB, Ethernet,

- Mô phỏng và xử lý các tín hiệu thu nhận được để phục vụ các mục đích nghiên cứu hay mục đích của hệ thống mà người lập trình mong muốn

- Xây dựng các giao diện người dùng một cách nhanh chóng

Trang 13

- Cho phép thực hiện các thuật toán điều khiển nhƣ PID một cách nhanh chóng thông qua các chức năng tích hợp sẵn trong Labview

- Cho phép kết hợp với các ngôn ngữ lập trình truyền thống nhƣ C++, Java

Labview đƣợc dùng nhiều trong các phòng thí nghiệm, lĩnh vực khoa học

kỹ thuật nhƣ tự động hóa, điều khiển, điện tử, cơ điện tử, hàng không, hóa sinh, điện tử y sinh,

1.1.2 Kỹ thuật lập trình Lapview

- Các khối lệnh cơ bản cho arduino

Để lập trình đƣợc cho arduino trên phần mềm Labview thì từ ứng dụng VI Package Manager (đƣợc cài đặt sẵn khi cài đặt Labview) chúng ta phải cài đặt gói Labview Interface for Arduino Đây là bộ công cụ hỗ trợ giao tiếp giữa labview và nền tảng vi điều khiển Arduino

Sau khi cài đặt xong, trên phần mềm labview bây giờ đã có thêm hàm arduino hỗ trợ cho chúng ta lập trình

Đây là cửa sổ tích hợp các khối từ gói Arduino:

Hình 1.2 Các khối cơ bản của arduino

Một khối đƣợc chia làm hai dãy chân dữ liệu, dãy chân đƣa dữ liệu vào hoặc là các thiết lập ban đầu của tín hiệu và dãy chân đƣa dữ liệu ra

Trang 14

Hình 1.3 Khối init

Khối init có nhiều chân song để thiết lập cho việc kết nối ta chỉ cần quan

tâm:

Chân VISA resource: sẽ lựa chọn cổng COM khi kết nối arduino với máy

tính, tùy vào các máy tính khác nhau mà cổng COM này cũng khác nhau Chân này sẽ thiết lập cổng COM để giao tiếp giữa Labview và Arduino

Chân Baud Rate: chân này cho phép lựa chọn tốc độ baud cho Arduino

Tùy vào các ứng dụng khác nhau mà ta lựa chọn tốc độ này cho phù hợp,

Arduino hỗ trợ nhiều tốc độ baud khác nhau nhƣng giá trị mặc định khi khởi tạo

khối là 115200

Chân Board Type cho phép chúng ta lựa chọn kiểu module Arduino, ở đây

hỗ trợ 3 kiểu là: uno, atmega 328 và mega 2560

Chân Connection Type cho phép chọn kiểu kết nối, có 3 chuẩn là:

usb/serial, xbee và bluetooth

Chân Arduino Resource để kết nối với các khối khác

Để thiết lập bất kỳ chân nào của một khối ta di chuyển con trỏ chuột tới

chân cần thiết lập rồi click chuột phải sau đó chọn create, ở đây sẽ có ba kiểu

thiết lập là: constant (hằng số), control (điều khiển) và indicator (hiển thị), tùy vào mục đích mà ta lựa chọn cho phù hợp

Tiếp theo là khối close:

Hình 1.4 Khối close

Trang 15

Là khối để đóng một chương trình giao tiếp với arduino Chỉ gồm các chân

cơ bản là arduino resource, error in và error out

Khối low level chứa nhiều khối quan trọng của Arduino bao gồm các khối

để đọc, ghi tín hiệu analog hoặc digital từ bo Arduino Ngoài ra còn có các khối phục vụ việc băm xung, bus,

Hình 1.5: Các khối cơ bản của khối low level

Khối sensors bao gồm các khối VI sensor thường dùng như: cảm biến nhiệt

độ, cảm biến ánh sáng, LCD, led 7 thanh,

Trang 16

Hình 1.6 Các khối cơ bản của khối sensor

- Các khối lệnh cơ bản cho leap motion

Để lập trình cho Leap Motion trên phần mềm Labview, chúng ta phải cài đặt gói MakerHub Interface for Leap Motion từ ứng dụng VI Package Manager Sau khi cài đặt xong, trong cửa sổ làm việc Block Diagram, click chuột phải chúng ta sẽ có các khối cơ bản của leap như sau:

Hình 1.7 Các khối cơ bản của leap

Tương tự như Arduino thì Leap cũng có các khối open và close để phục vụ

cho việc khởi tạo và kết thúc một kết nối của Leap với Labview

Trang 17

Khối open của Leap chỉ gồm vài chân cơ bản như sau:

Hình 1.8 Khối open của leap

Với chân Enable Gestures khi được thiết lập giá trị true (T) thì Leap sẽ bật

các cử chỉ mà nó hỗ trợ để người dùng khai thác

Chân leap handle sẽ được nối với chân leap handle của khối khác, với chân

error out cũng vậy

Khối read all data sẽ yêu cầu và phân tích các khung dữ liệu từ bộ điều

khiển Leap, tất cả các dữ liệu kết hợp với khung được tổ chức trong một cụm gọi là Labview cluster để phục vụ cho việc truy cập

Hình 1.9 Khối read all data

Khối read hand position velocity có chức năng đọc vị trí và tốc độ của bàn

tay, hình dạng khối này như sau:

Hình 1.10 Khối read hand position velocity

Ngoài ra còn có một số khối các để đọc các cử chỉ khác mà bộ điều khiển Leap hỗ trợ như: ngón tay vẽ vòng tròn, chỉ ngón tay,

- Một số khối lệnh, vòng lặp thường dùng

Các khối lệnh boolean

Trang 18

Hình 1.11 Các khối lệnh boolean

Các khối lệnh And, Or, Not, thực hiện các phép toán logic tương ứng là phép And, phép Or hay phép Not Các khối lệnh And, Or, Not And, Not Or có 2 đầu vào và một đầu ra

Khối lệnh Bool to (0,1) thực hiện chuyển đổi giá trị kiểu boolean (true và

false) sang giá trị 0 và 1

Ngoài ra còn có các khối lệnh chuyển đối số sang mảng (Num to Array) và ngược lại, các khối lệnh tạo hằng số true và false

Các khối lệnh so sánh

Trang 20

Hình 1.14 Cấu trúc vòng lặp while

Giống như vòng lặp while trong ngôn ngữ lập trình thông thường, vòng lặp

while trong Labview là một cấu trúc lặp thực hiện các khối lệnh bên trong nó ít

nhất một lần

Trong hình trên:

1 Gọi là subdiagram: sẽ chứa các khối lệnh mà vòng lặp while thực thi

2 Gọi là iteration terminal (i): đếm số vòng lặp lại hiện tại, đếm số vòng

luôn bắt đầu bằng 0 cho vòng lặp đầu tiên

3 Gọi là conditional terminal: sẽ ước lượng một giá trị boolean để xác định có hay không tiếp tục thực thi vòng lặp while

Giá trị boolean này là: true hoặc false

Trang 21

Cấu trúc vòng lặp for khác while ở chỗ vòng lặp for hoạt động với số lần lặp xác định, trong khi đó vòng lặp while chỉ dừng quá trình lặp khi giá trị điều

kiện được kiểm tra là đúng

Cấu trúc case

Cấu trúc case trong Labview được cho ở hình sau:

Hình 1.16 Cấu trúc Case

Các thành phần của cấu trúc case:

1 Gọi là selector label: hiển thị giá trị tương ứng với mỗi trường hợp thực

thi

2 Gọi là subdiagram(case): chứa khối lệnh để thực thi khi giá trị của case

selector khớp với giá trị xuất hiện trong selector label

3 Gọi là case selector: sẽ lựa chọn trường hợp nào để thực thi dựa trên giá trị dữ liệu đầu vào Dữ liệu đầu vào có thể ở dạng boolean, string, integer

1.2 Tổng quan về Arduino Uno R3 và module L293D

1.2.1 Bo mạch Arduino Uno R3

Bo mạch Arduino có nhiều phiên bản với hiệu năng và mục đích sử dụng khác nhau như: Arduino Mega, Arduino LyliPad, Trong số đó, Arduino Uno

Trang 22

Hình 1.17 Board mạch Arduino Uno R3

Arduino Uno R3 được xây dựng với vi điều khiển là Atmega328 sử dụng thạch anh có chu kỳ dao động là 16 MHz Với vi điều khiển này, ta có tổng cộng

14 chân ra/vào được đánh số từ 0 đến 13, trong đó có 6 chân PWM, được đánh thêm dấu ~ trước số chân Ta có thêm 6 chân nhận tín hiệu analog được ký hiệu

từ A0 đến A5, 6 chân này cũng có thể được sử dụng như các chân ra/vào bình thường Chân 13 được nối trức tiếp với 1 con led tích hợp trên board

Trên board còn có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng usb và một ngõ cấp nguồn sử dụng jack 2.1 mm

Board cung cấp cho chúng ta các chân khác nhau như chân nguồn 3.3V, 5V, GND,

Điện áp khuyên dùng cấp cho mạch là từ 7 đến 12V, cường độ dòng điện trên mỗi chân vào/ra là 20mA

Khi làm việc với bo mạch Arduino, cần chú ý một số thuật ngữ sau:

 Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi mất nguồn điện Về vai trò, ta có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu trên bo mạch Chương trình được viết cho Arduino được lưu ở đây Kích thước của vùng nhớ này thông thường dựa vào vi điều khiển được sử dụng, ví dụ như Atmega8 có 8KB flash memory, loại bộ nhớ này có thể chịu được khoảng 10000 lần ghi/xóa

Trang 23

 RAM: tương tự như RAM của máy tính, sẽ bị mất dữ liệu khi ngắt nguồn điện nhưng bù lại tốc độ đọc/ghi rất nhanh Kích thước thường nhỏ hơn flash memory nhiều

 EEPROM: một dạng bộ nhớ tương tự như flash memory nhưng có chu kỳ ghi/xóa cao hơn – khoảng 100000 lần và có kích thước rất nhỏ Để đọc/ghi dữ liệu ta có thể dùng thư viện EEPROM của Arduino

Một số lưu ý khi làm việc với bo mạch Arduino Uno R3: mặc dù Arduino

có cầu chì tự phục hồi bảo vệ mạch khi xảy ra quá tải, tuy nhiên cầu chì này chỉ được mắc cho cổng USB nhằm tự động ngắt điện khi nguồn vào USB lớn hơn 5V Vì vậy, khi thao tác với Arduino, ta cần tính toán cẩn thận để tránh gây hư tổn đến bo mạch Các thao tác sau đây có thể gây hỏng một phần hoặc toàn bộ

bo mạch Arduino:

 Nối trực tiếp dòng 5V vào chân GND

 Nối một chân OUT bất kỳ vào GND

 Cấp nguồn lớn hơn 5V cho các chân I/O

1.2.2 Module điều khiển động cơ L293D

Arduino Motor Shield là một phần board mở rộng cho các board Arduino, dùng để điều khiển các loại động cơ DC, động cơ bước và động cơ servo

Motor Driver Shield L293D sử dụng 2 IC cầu H L293D và 1 IC logic 74HC595 điều khiển, do đó, shield này có thể điều khiển nhiều loại motor khác nhau với mức áp lên đến 36V và dòng tối đa là 600mA cho mỗi kênh điều khiển

Số lượng motor mà shield có thể điều khiển như sau:

 2 động cơ servo

 4 động cơ DC (M1, M2, M3, M4) độc lập thông qua 4 cầu H của L293D

 2 động cơ bước

Trang 24

Hình 1.18 Module shield L293D

Các chân trên SHIELD được kết nối với Arduino như sau:

 Servo Motor: 2 dây điều khiển 2 Servo kết nối với chân số 9 và 10 Nguồn nuôi lấy trực tiếp từ bo mạch Arduino

 Động cơ 1 chiều DC:

Motor 1 nối với chân 11 Motor 2 nối với chân 3 Motor 3 nối với chân 5 Motor 4 nối với chân 6

 Động cơ bước: chân 4, 7, 8 và 12 dùng điểu khiển motor thông qua IC74HC595

Trên SHIELD có 1 jumper PWR được sử dụng nếu kết nối nguồn ngoài cho board Arduino thông qua jack DC thì nguồn nuôi motor được lấy luôn từ jack này, không cần nối nguồn với EXT_PWR Nếu ngắt jumper, bạn cần nối một nguồn riêng vào terminal EXT_PWR để nuôi motor

1.3 Tổng quan về bộ điều khiển bằng cử chỉ

Leap motion là một thiết bị ngoại vi, dùng để hỗ trợ người dùng tương tác với máy tính tương tự như chuột và bàn phím thông qua các cử chỉ tay như: chỉ, cầm, nắm, chạm,

Hình ảnh bên trong của bộ điều khiển Leap Motion như sau:

Trang 25

Hình 1.19 Cấu tạo bên trong của Leap Motion

Leap motion sử dụng 2 camera và 3 cảm biến hồng ngoại, với các camera này thiết bị có thể quan sát trong một vùng hình cầu với bán kính khoảng 1m Các đèn led tạo ra các mẫu hình ảnh ít ánh sáng hồng ngoại, mỗi camera sẽ tạo khoảng 300 khung hình mỗi giây cho các dữ liệu phản chiếu, sau đó các dữ liệu được gửi qua cổng usb đến máy chủ

Hiện tại, tính năng của leap motion gồm có: điều hướng bằng việc nhận dạng cử chỉ chạm, chỉ, tương tác với các dữ liệu 3D ảo bằng các cử chỉ của tay như cầm, nắm, hỗ trợ các thao tác vẽ trên màn hình

Leap Motion tương thích với hầu hết các hệ điều hành phổ biến hiện nay như: Microsoft Windows, Mac OSX và Ubuntu Thiết bị có 1 cổng kết nối USB

để kết nối với máy tính Leap Motion nhận diện cùng lúc được 2 bàn tay và cả

10 ngón tay

Mặc dù nhận dạng được cử chỉ tay với độ chính xác cao, tuy nhiên leap motion có độ nhạy chưa cao, sử dụng trong thời gian dài sản phẩm nóng lên rất nhiều Bên cạnh đó với các máy chủ có cấu hình thấp, việc xử lý các dữ liệu phản ánh do leap motion truyền tải cho máy chủ gặp khó khăn, dễ xảy ra hiện tượng treo máy

Tuy nhiên, tương lai của thiết bị này rất rộng mở, nói chung, bất cứ phần mềm nào có thể dùng chuột và bàn phím thì đều có thể dùng với Leap Motion Đến nay, các phần mềm tạo hình 3D, kiến trúc đang được ưu tiên để tích hợp

Trang 26

kết sử dụng leap motion như hình sau minh họa việc thiết kế trên autodesk sử dụng Leap Motion:

Hình 1.20 Thiết kế trên autodesk sử dụng leap motion

Đặc biệt trong lĩnh vực điện tử, tự động hóa Leap Motion ứng dụng vào điều khiển các thiết bị như robot, máy in 3D,

1.4 Kết luận

Trong chương 1, tôi đã trình bày các nội dung như là cấu tạo và nguyên lý hoạt động về phần mềm labview, board mạch Arduino Uno R3, module điều khiển động cơ L293D và bộ điều khiển bằng cử chỉ leap motion Trong chương tiếp theo sẽ đi vào phân tích yêu cầu đề tài cũng như lựa chọn thiết bị và thuật

Trang 27

CHƯƠNG 2 PHÂN TÍCH, THIẾT KẾ HỆ THỐNG

2.1 Phân tích, lựa chọn thiết bị

2.1.1 Leap Motion Controller

Trên thị trường hiện nay có một vài thiết bị cảm biến cử chỉ như Leap Motion Controller, Kinect của hãng Microsoft và mới nhất là hệ thống Ziro Khác với Kinect ở thời điểm hiện tại, Leap Motion cho phép người dùng tự phát triển các ứng dụng cho riêng mình Đây là yếu tố quyết định đến việc Leap Motion sẽ được sử dụng rộng rãi trong tương lai

Còn về Ziro cũng là một hệ thống cho phép bạn thiết kế robot và điều khiển

nó thông qua chuyển động bàn tay Hệ thống Ziro lần đầu tiên được giới thiệu tại triển lãm CES 2016 diễn ra vào đầu năm Mặc dù là một hệ thống hứa hẹn nhiều thành công nhưng với thời điểm hiện tay thì Ziro đang có giá thành tương đối đắt, với khoảng 229 USD chúng ta sẽ có trong tay một găng tay, 4 động cơ

và một số bộ phận lắp ráp robot

Nhưng với sự mới mẻ, giá rẻ và đặc biệt là khả năng nhận diện với độ chính xác cao nên Leap Motion là một thiết bị đáng để nghiên cứu và phát triển các ứng dụng để tận dụng hiệu quả quả năng mà nó mang lại

2.1.2 Board mạch Arduino Uno R3

Theo cách làm việc thông thường, để xây dựng một bo mạch vi xử lý, người kỹ sư sẽ gắn chip vi xử lý vào một bo mạch được thiết kế Bo mạch phải

có đầy đủ bộ nguồn cấp điện cho vi xử lý, thạch anh tạo dao động, các tụ điện để giữ ổn định cho tín hiệu Sau đó sẽ lập trình mã nguồn bằng ngôn ngữ C hoặc Assembly rồi biên dịch ra một file nhị phân, chuyển mã code này vào trong vi

xử lý để hoạt động

Trang 28

lại mã nguồn, việc tháo lặp chip vi xử lý nhiều sẽ làm cho toàn bộ vi mạch kém

ổn định

Tuy hiện nay trên thị trường đã có các bộ kit phát triển tích hợp vi xử lý với

bo mạch, mạch nạp vi xử lý cũng được tích hợp trên bo mạch này Tuy nhiên, vẫn cần nhiều bước mới có thể thay đổi mã nguồn của một chip vi xử lý, lập trình trên phần mềm riêng, nạp code trên phần mềm riêng, nếu muốn gỡ rối (debug) chương trình thì lại càng phức tạp thêm

Nhưng với nền tảng Arduino, người kỹ sư chỉ cần sử dụng một phần mềm duy nhất là phần mềm Arduino và và một bo mạch phần cứng duy nhất Trong các loại bo mạch Arduino thì Arduino Uno R3 là bo mạch thông dụng nhất hiện nay bởi khả năng đáp ứng các ứng dụng trong thực tế, tính mở rộng cao và giá thành rẻ

Vi điều khiển AVR atmega328

Atmega328 là một chip vi điều khiển được sẩn xuất bởi hãng Atmel thuộc

họ MegaAVR có sức mạnh hơn hẳn Atmega8 Atmega328 là một bộ vi điều khiển 8 bít dựa trên kiến trúc RISC

Với 23 chân có thể sử dụng cho các kết nối vào ra, 32 thanh ghi, 3 bộ timer/counter có thể lập trình, có các ngắt nội và ngoại (2 lệnh trên một vector ngắt), giao thức truyền thông nối tiếp USART, SPI, I2C Ngoài ra có thể sử dụng bộ biến đổi số tương tự 10 bít (ADC/DAC) mở rộng tới 8 kênh, khả năng lập trình được watchdog timer, hoạt động với 5 chế độ nguồn, có thể sử dụng tới

6 kênh điều chế độ rộng xung (PWM), hỗ trợ bootloader

Atmega328 có khả năng hoạt động trong một dải điện áp rộng (1.8V – 5.5V)

Atmega328 là linh hồn của bo mạch Arduino, sức mạnh phần cứng mà Arduino Uno có được là từ đây

Sơ đồ chân Atmega328 được cho ở hình sau:

Trang 29

Hình 2.1 Sơ đồ chân Atmega328

Các thông số chính của vi điều khiển Atmega328:

- Kiến trúc: AVR 8bit

- Số timer: 3 timer gồm 2 timer 8 bit và 1 timer 16 bit

- Số kênh xung PWM: 6 kênh (1 timer 2 kênh)

2.1.3 Motor driver shield L293D

Motor driver shield L293D tương thích tốt với bo mạch Arduino, sử dụng 2

IC cầu H L293D và 1 IC logic 74HC595 điều khiển

Trang 30

Hình 2.2 Sơ đồ chân IC L293D

L293D là IC cầu H điều khiển động cơ Gồm 4 kênh điều khiển có thể điều khiển 2 động cơ DC Để điều khiển động cơ DC, ta sử dụng 2 kênh của L293D cho 1 động cơ

Mỗi kênh của L293D chịu được tải 600mA và dòng đỉnh là 1A Để sử dụng các động cơ có công suất cao hơn ta chỉ cần gắn song song 2 hoặc nhiều IC L293 lại với nhau

Với mỗi motor, có 3 chân từ vi điều khiển kết nối với L293D, trong đó có 1 chân điều khiển tốc độ động cơ dùng xung PWM, 2 chân còn lại là logic 0 hoặc

1 dùng điều chỉnh chiều quay của motor

Tín hiệu điều khiển được xử lý độc lập với nhau với từng đầu ra Ví dụ, bạn

có thể điều khiển 2 động cơ DC chạy với tốc độ khác nhau, hướng khác nhau, 1 động cơ dừng còn 1 động cơ chạy,

2.2 Mạch cầu H

Sơ đồ nguyên lý:

Ngày đăng: 01/08/2021, 10:39

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm