Untitled THÀNH PHỐ HỒ CHÍ MINH BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT Tp Hồ Chí Minh, tháng 20 SKL007931 NGÀNH CNKT Ô TÔ i LỜI CẢM ƠN Nhóm chúng em xin chân thành cảm ơn các quý thầy t[.]
Trang 1THÀNH PHỐ HỒ CHÍ MINH
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
697+
SKL00793 1
ĈӖÈ17Ӕ71*+,ӊ3 NGÀNH CNKT Ô TÔ
Ӭ1*'Ө1*$50670)',6&29(5<9¬ 0$7/$%6,08/,1.7521*7+,ӂ7.ӂ&È&%Ӝ
Trang 4đó đã giúp chúng em hoàn thành tập đồ án này và là hành trang để chúng em bước vào đời
Hơn hết nhóm gửi lời cảm ơn sâu sắc đến Thạc sĩ Giảng viên NGUYỄN TRUNG HIẾU Giáo viên hướng dẫn đề tài, người thầy đã tận tình hướng dẫn, chỉ bảo kịp thời, tạo
điều kiện, động viên và giúp đỡ chúng em rất nhiều về mặt tinh thần cũng như kiến thức
để chúng em vượt qua những ngày tháng khó khăn trong quá trình thực hiện đồ án này Bên cạnh đó chúng em cũng xin gửi lời cảm ơn tới gia đình, bạn bè đã hết lòng ủng hộ, giúp đỡ và góp ý cho nhóm em trong suốt quà trình thực hiện
Mặc dù đã rất cố gắng và nỗ lực nhiều, nhưng do kiến thức ít ỏi cũng như thời gian nghiên cứu là có hạn nên những thành quả đạt được không tránh khỏi những thiếu sót Do
đó chúng em kính mong nhận được những sự đóng góp, chỉ dạy của quý thầy cô để chúng
em hoàn thiện đồ án được tốt hơn
Nhóm chúng em xin chân thành cảm ơn!
Tp Hồ Chí Minh, ngày … tháng năm 2018
Nhóm sinh viên thực hiện
TRẦN ANH TUẤN
LÊ QUANG TÀI
Trang 5TÓM T ẮT
Trong thời đại hiện nay với sự phát triển không ngừng của khoa học kỹ thuật Lĩnh vực điều khiển đã và đang là một trong những ngành có vai trò rất quan trọng trong đời sống
xã hội, của nền công nghiệp, kinh tế quốc dân… Bất cứ ở một vị trí nào một công việc gì
mỗi người trong chúng ta đều phải tiếp cận với điều khiển, nó là khâu quan trọng cuối cùng quyết định sự thành bại trong mọi hoạt động của chúng ta
Điều khiển vị trí hay tốc độ là một trong những vấn đề cơ bản nhất của lý thuyết điều khiển, từ đó ứng dụng vào điều khiển các vấn đề phức tạp hơn như con lắc ngược, robot cân bằng Cùng với việc cải tiến và giải quyết một số hạn chế của đề tài trước qua việc ứng
dụng board ARM STM32F407 DISCOVERY
Vì những lí do trên chúng em quyết định chọn đề tài “Ứng dụng ARM STM32F4 Discovery và Matlab/Simulink trong thiết kế các bộ điều khiển”
Trang 6M ỤC LỤC
L ỜI CẢM ƠN i
TÓM TẮT ii
M ỤC LỤC iii
DANH M ỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU vi
DANH MỤC CÁC HÌNH vii
DANH M ỤC CÁC BẢNG x
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1
1.1 Tình hình nghiên c ứu trong và ngoài nước 1
1.1.1 Tổng quan tình hình nghiên thuộc lĩnh vực đề tài 1
1.1.2 Danh mục các công trình liên quan 1
1.2 Tính c ấp thiết của đề tài 1
1.3 Mục tiêu của đề tài 1
1.4 Phương pháp và phạm vi nghiên cứu 2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3
2.1 L ịch sử phát triển lý thuyết điều khiển 3
2.1.1 Điều khiển kinh điển (classical control) 3
2.1.2 Điều khiển hiện đại (modern control) 3
2.1.3 Điều khiển thông minh (intelligent control) 4
2.2 Thành phần cơ bản của hệ thống điều khiển 4
2.3 Thi ết kế bộ điều khiển 5
2.3.1 Phần loại thiết kế bộ điều khiển 5
2.3.2 Bộ điều khiển PID 6
CHƯƠNG 3: GIỚI THIỆU PHẦN MỀM VÀ PHẦN CỨNG 9
3.1 Giới thiệu về MATLAB/SIMULINK 9
3.2 Gi ới thiệu về board mạch ARM STM32F407 DISCOVERY 9
3.3 Các công cụ cần chuẩn bị để làm thí nghiệm 10
3.3.1 Phần cứng 10
3.3.2 Phần mềm 10
CHƯƠNG 4: HƯỚNG DẪN SỬ DỤNG THƯ VIỆN WAIJUNG TRONG MATLAB/SIMLINK 12
4.1 Chuyển đổi tín hiệu Analog sang Digital và Digital sang Analog 12
4.1.1 Giới thiệu chân ADC, DAC 12
4.1.1.1 Số lượng chân 12
4.1.1.2 Đặc tính điện áp 12
4.1.2 Thí nghiệm sử dụng khối ADC 13
4.1.2.1 Cấu hình khối Regular ADC 13
4.1.2.2 Điều khiển LED bằng biến trở 15
4.1.3 Thí nghiệm sử dụng khối DAC 17
4.1.3.1 Cấu hình khối Regular DAC 17
4.1.3.2 Tạo tín hiệu tuần hoàn 18
4.2 S ử dụng Digital Input/Output 19
4.2.1 Giới thiệu Digital Input/Output 19
Trang 74.2.1.1 Sơ đồ mạch đầu vào 20
4.2.1.2 Sơ đồ mạch đầu ra 20
4.2.2 Thí nghiệm sử dụng khối Digital Output 22
4.2.2.1 Cấu hình khối Digital Output 22
4.2.2.2 Điều chỉnh thời gian sáng của LED 23
4.2.3 Thí nghiệm sử dụng khối Digital Input 25
4.2.3.1 Cấu hình khối Digital Input 25
4.2.3.2 Điều chỉnh LED bằng nút nhấn 26
4.3 Sử dụng Timer/Counter 27
4.3.1 Giới thiệu Timer/Counter 27
4.3.2 Thí nghiệm sử dụng khối Basic PWM 29
4.3.2.1 Khái quát PWM 29
4.3.2.2 Cấu hình khối Basic PWM 30
4.3.2.3 Điều chỉnh độ sáng của LED dùng PWM 31
4.3.3 Thí nghiệm sử dụng khối Encoder Read 32
4.3.3.1 Giới thiệu khối Encoder Read 32
4.3.3.2 Cấu hình khối Encoder Read 34
4.3.3.3 Đọc tốc độ động cơ DC dùng khối Encoder Read 35
4.3.4 Thí nghiệm sử dụng khối Timer IRQ 36
4.3.4.1 Khái quát ngắt ngoài 36
4.3.4.2 Cấu hình khối Timer IRQ 36
4.3.4.3 Điểu khiển LED dùng khối Timer IRQ 37
4.4 Sử dụng cổng giao tiếp UART 38
4.4.1 Giới thiệu UART 38
4.4.2 Thí nghiệm sử dụng khối UART Setup và UART Tx 39
4.4.2.1 Cấu hình khối UART Setup và UART Tx 39
4.4.2.2 Truyền một giá trị từ STM32F407 DISCOVERY lên máy tính 41
4.4.3 Thí nghiệm sử dụng khối Host Serial 41
4.4.3.1 Cấu hình các khối Host Serial 41
4.4.3.2 Truyền một giá trị xuống board STM32F407 DISCOVERY 43
4.5 S ử dụng cổng giao tiếp I2C 45
4.5.1 Giới thiệu I2C 45
4.5.2 Giới thiệu cảm biến GY-521 6DOF MPU6050 46
4.5.3 Thí nghiệm sử dụng khối I2C 47
4.5.3.1 Cấu hình khối I2C 47
4.5.3.2 Thí nghiệm đọc cảm biến GY-521 6DOF MPU 6050 50
CHƯƠNG 5: MÔ HÌNH DC MOTOR 53
5.1 Gi ới thiệu phần cứng mô hình DC motor 53
5.1.1 DC motor 53
5.1.2 Mô-đun điều khiển motor 53
5.2 Xây d ựng phương trình động học 54
5.2.1 Thông số DC motor 54
5.2.2 Thiết lập phương trình vi phân 55
5.2.3 Thiết lập hàm truyền 55
5.2.4 Thiết lập phương trình không gian trạng thái 56
5.3 Bộ điều khiển DC mtor 57
Trang 85.3.1 .Mô hình và sơ đồ mạch điện 57
5.3.2 Giải thuật và kết quả thực nghiệm 58
5.3.3 So sánh, đánh giá với bộ điều khiển Arduino 61
CHƯƠNG 6: MÔ HÌNH CON LẮC NGƯỢC 67
6.1 Gi ới thiệu phần cứng mô hình con lắc ngược 67
6.1.1 DC motor 67
6.1.2 Cảm biến góc quay 68
6.2 Xây d ựng phương trình động học 68
6.2.1 Thông số của con lắc 68
6.2.2 Thiết lập phương trình vi phân 68
6.2.3 Thiết lập hàm truyền 71
6.3 B ộ điều khiển con lắc ngược 71
6.3.1 Mô hình và sơ đồ mạch điện 71
6.3.2 Giải thuật và kết quả thực nghiệm 72
6.3.3 So sánh và đánh giá kết quả với Arduino 73
CHƯƠNG 7: MÔ HÌNH ROBOT TỰ CÂN BẰNG 75
7.1 Gi ới thiệu phần cứng mô hình robot cân bằng 75
7.1.1 DC motor 75
7.1.2 Module điều khiển động cơ 75
7.1.3 Cảm biến gia tốc MPU 6050 76
7.2 Xây d ựng phương trình động lực học 76
7.2.1 Thông số của Robot cân bằng 76
7.2.2 Thiết lập phương trình 77
7.3 B ộ điều khiển robot cân bằngMô hình và sơ đồ mạch điện 81
7.3.1 Giải thuật 81
CHƯƠNG 8: KẾT LUẬN VÀ ĐỀ NGHỊ 82
8.1 Kết quả thực hiện 82
8.2 Hướng phát triển đề tài 82
DANH M ỤC TÀI LIỆU THAM KHẢO 83
PHỤ LỤC 84
Trang 9DANH M ỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU
PID Proportional Intergral Derivative
Trang 10DANH M ỤC CÁC HÌNH
Hình 2.1 Sơ đồ khối hệ thống điều khiển 5
Hình 2.2 Sơ đồ khối hiệu chỉnh nối tiếp 5
Hình 2.3 Sơ đồ khối hồi tiếp trạng thái 6
Hình 2.4 Sơ đồ khối PID 6
Hình 2.5 Sơ đồ khối bộ điều khiển P 7
Hình 2.6 Sơ đồ bộ điều khiển D 8
Hình 3.1 Phần mềm MATLAB & SIMULINK 9
Hình 3.2 Board mạch ARM STM32F407 DISCOVERY 10
Hình 4.1 Khối Regular ADC 14
Hình 4.2 Hộp thoại Regular ADC 14
Hình 4.3 Code Simulink “Chớp LED bằng điện trở” 16
Hình 4.4 Kết quả lắp mạch “biến trở điều khiển LED” 16
Hình 4.5 Kết quả đồ thị khi văn biến trở 17
Hình 4.6 Khối Regular DAC 17
Hình 4.7 Hộp thoại Regular DAC 17
Hình 4.8 Code Simulink “Tạo tín hiệu tuần hoàn” 19
Hình 4.9 Khối tạo tần số cao 19
Hình 4.10 Đồ thị xuất xuất 2 xung tam giác và sin 19
Hình 4.11 Sơ đồ mạch Pull-Up Input 20
Hình 4.12 Sơ đồ mạch Pull-Down Input 20
Hình 4.13 Sơ đồ mạch Push-Pull Output khi P-MOS mở 21
Hình 4.14 Sơ đồ mạch Push-Pull Output khi P-MOS đóng 21
Hình 4.15 Khối Digital Output 22
Hình 4.16 Hộp thoại Digital Output 22
Hình 4.17 Code Simulink “Điều chỉnh thời gian sáng LED” 23
Hình 4.18 Cách Run mô hình trên Simulink 24
Hình 4.19 Thiết lập khối Pulse Generator 24
Hình 4.20 Kết quả lắp mạch “Điều chỉnh thời gian sáng LED” 25
Hình 4.21 Đồ thị tín hiệu sáng LED 25
Hình 4.22 Khối Digital Input 25
Hình 4.23 Hộp thoại Digital Input 26
Hình 4.24 Code Simulink “Điều khiển LED bằng nút nhấn” 26
Hình 4.25 Kết quả lắp mạch “Điều khiển LED bằng nút nhấn” 27
Hình 4.26 Sự hoạt động của Timer/Counter khi Prescaler thay đổi từ 1 đến 4 28
Hình 4.27 Cách điều chỉnh độ rộng xung 29
Hình 4.28 Điều chỉnh độ rộng xung với cạnh lên 29
Hình 4.29 Điều chỉnh độ rộng xung với cạnh lên và xuống 30
Hình 4.30 Khối Basic PWM 30
Hình 4.31 Khối hộp thoại Basic PWM 30
Hình 4.32 Code Simulink “điều chỉnh độ sáng Led dùng PWM” 31
Hình 4.33 Kết quả lắp mạch “Điều chỉnh độ sáng LED dùng PWM 32
Hình 4.34 Kết quả đồ thị “Điều chỉnh độ sáng LED dùng PWM” 32
Hình 4.35 Cấu trúc bộ mã hóa quay 33
Trang 11Hình 4.36 Tín hiệu từ kênh A, kênh B lệch pha nhau 90 độ 33
Hình 4.37 Giao diện tín hiệu xung vuông 34
Hình 4.38 Khối Encoder read 34
Hình 4.39 Khối hộp thoại Encoder Read 35
Hình 4.40 Hộp thoại khối Timer IRQ 36
Hình 4.41 Khối Timer IRQ 36
Hình 4.42 Code simulink “điều khiển LED dùng khối Timer IRQ” 37
Hình 4.43 Chương trình con đọc LED 38
Hình 4.44 Mạch điều khiển LED dùng Timer IRQ 38
Hình 4.45 Khối UART Setup 39
Hình 4.46 Khối UART Tx 39
Hình 4.47 Khối hộp thoại UART Tx 40
Hình 4.48 Code simulink “truyền một giá trị từ Board mạch lên máy tính 41
Hình 4.49 Kết quả lắp mạch “Truyền giá trị từ Board lên máy tính” 41
Hình 4.50 Kết quả gửi lên máy tính qua phần mềm Terminal 41
Hình 4.51 Hộp thoại Host Serial Setup 42
Hình 4.52 Hộp thoại Host Serial Tx 42
Hình 4.53 Hộp thoại Host Serial Rx 43
Hình 4.54 Mô hình code nạp xuống board 43
Hình 4.55 Mô hình chạy chế độ inf trên máy tính 44
Hình 4.56 Kết quả lắp mạch “Thí nghiệm truyền giá trị xuống board” 44
Hình 4.57 Đồ thị khi điều chỉnh Slider gửi giá trị xuống board 44
Hình 4.58 Sơ đồ kết nối các thiết bị trên I2C 45
Hình 4.59 Cảm biến GY-521 6DOF MPU6050 46
Hình 4.60 Khối I2C Master Setup 48
Hình 4.61 Khối hộp thoại I2C Master Setup 48
Hình 4.62 Kh ối I2C Master Read/Write 49
Hình 4.63 Khối hộp thoại I2C Master Read/Write 49
Hình 4.64 Code Simulink “Đọc cảm biến MPU6050” (1) 50
Hình 4.65 Code Simulink “Đọc cảm biến MPU6050” (2) 51
Hình 4.66 Giá trị gia tốc đọc về lúc cân bằng (đỏ - trục x; vàng – trục y; xanh – trục z) 51 Hình 4.67 Đọc giá trị góc lúc đặt cân bằng (đỏ - trục x; vàng – trục y; xanh – trục z) 52
Hình 5.1 Động cơ DC 53
Hình 5.2 Module cầu H 54
Hình 5.3 Mạch điện phần ứng và sơ đồ chuyển động rotor 54
Hình 5.4 Mô hình DC motor 57
Hình 5.5 Sơ đồ mạch điện điều khiển tốc độ DC motor 58
Hình 5.6 Giải thuật điều khiển tốc độ động cơ sử dụng STM32F407VG DISCOVERY 59 Hình 5.7 Khối đọc tốc độ động cơ “Encoder Read” 59
Hình 5.8 Chương trình hiển thị kết quả trên máy tính (real-time) 60
Hình 5.9 Kết quả điều khiển tốc độ DC motor 60
Hình 5.10 Giải thuật điều khiển tốc độ động cơ sử dụng Arduino Mega 2560 61
Hình 5.11 Kết quả đồ thị sử dụng Arduino Mega 2560 – thời gian lấy mẫu 1 ms 61
Hình 5.12 Kết quả của bộ điều khiển STM32F407 DISCOVERY – xung vuông, chu kỳ 10ms (đỏ - mong muốn; đen – thực tế) 62
Trang 12Hình 5.13 Kết quả của bộ điều khiển ARDUINO MEGA 2560 – xung vuông, chu kỳ
10ms (đen - mong muốn; đỏ – thực tế) 62
Hình 5.14 Kết quả của bộ điều khiển STM32F407 DISCOVERY – xung vuông, chu kỳ 1ms (đỏ - mong muốn; đen – thực tế) 63
Hình 5.15 Kết quả của bộ điều khiển ARDUINO MEGA 2560 – xung vuông, chu kỳ 1ms (đỏ - mong muốn; đen – thực tế) 63
Hình 5.16 Kết quả của bộ điều khiển STM32F407 DISCOVERY – xung sin, tần số pi (đỏ - mong muốn; đen – thực tế) 64
Hình 5.17 Kết quả của bộ điều khiển ARDUINO MEGA 2560 – xung sin, tần số pi (đỏ - mong muốn; đen – thực tế) 64
Hình 5.18 Kết quả của bộ điều khiển STM32F407 DISCOVERY – xung sin, tần số 4*pi (đỏ - mong muốn; đen – thực tế) 65
Hình 5.19 Kết quả của bộ điều khiển ARDUINO MEGA 2560 – xung sin, tần số pi (đỏ - mong muốn; đen – thực tế) 65
Hình 6.1 Sơ đồ vật thể tự do hệ con lắc 68
Hình 6.2 Hình con lắc theo phương chiếu thẳng bằng 69
Hình 6.3 Hình con lắc theo phương chiếu thẳng đứng 69
Hình 6.4 Mô hình con lắc ngược 71
Hình 6.5 Sơ đồ mạch điện điều khiển con lắc ngược 72
Hình 6.6 Giải thuật điều khiển con lắc ngược 72
Hình 6.7 Kết quả thực nghiệm dùng STM32F407 DISCOVERY 73
Hình 6.8 Kết quả thực nghiệm con lắc ngược 73
Hình 6.9 Kết quả con lắc ngược dùng Arduino 73
Hình 7.1 DC motor 25GA370 75
Hình 7.2 Cầu H L298 76
Hình 7.3 MPU 6050 76
Hình 7.4 Sơ đồ tính toán robot cân bằng 77
Hình 7.6 Cẩm biến MPU6050 gá trên robot 81
Hình 7.5 Mô hình robot cân bằng 81
Hình 7.7 Sơ đồ mạch điện robot cân bằng 81
Hình 7.8 Giải thuật điều khiển robot cân bằng 81
Hình 9.1 Giao diện Website Waijung Blockset (1) 83
Hình 9.2 Giao diện Website Waijung Blockset (2) 83
Hình 9.3 Biểu tượng phần mềm Matlab/Simulink 84
Hình 9.4 Thư viện phần mềm Simulink (1) 84
Hình 9.5 Thư viện phần mềm Simulink (2) 85
Hình 9.6 Demo trong Simulink 85
Hình 9.7 Giao diện sau khi nạp thành công 86
Hình 9.8 Run file setup 87
Hình 9.9 Chọn Next để tiếp tục cài đặt 88
Hình 9.10 Qúa trình cài đặt 89
Hình 9.11 Hai cửa sổ hiện ra chọn Next và Finish 89
Hình 9.12 Mô-đun UART CP2102 89
Hình 9.13 Kết nối UART với máy tính 89
Hình 9.14 Giao diện thiết lập UART Setup (trái) và giao diện UART Tx (phải) 90
Hình 9.15 Giải nén phần mềm 90
Trang 13DANH M ỤC CÁC BẢNG
Bảng 4.1 Số lượng chân mô-đun ADC 12
Bảng 4.2 Đặc tính điện mô-đun ADC 13
Bảng 4.3 Đặc tính điện mô-đun DAC 13
Bảng 4.4 Mô tả các chức năng trong khối ADC 15
Bảng 4.5 Nối dây biến biến trở 16
Bảng 4.6 Mô tả khối Regular DAC 18
Bảng 4.7 Đặc tính dòng điện 21
Bảng 4.8 Các khối Simulink cho điều chỉnh thời gian sáng của LED 23
Bảng 4.9 Mô tả khối Pulse Genertor 24
Bảng 4.10 Các khối Simulink cho thí nghiệm “Điều khiển LED bằng nút nhấn” 27
Bảng 4.11 Cấu hình các mô-đun Timer 28
Bảng 4.12 Mô tả khối hộp thoại Encoder Read 35
Bảng 4.13 Mô tả khối hộp thoại Timer IRQ 37
Bảng 4.14 Mô tả khối hộp thoại UART Setup 39
Bảng 4.15 Mô tả khối hộp thoại UART Tx 40
Bảng 4.16 Bảng mô tả khối hộp thoại I2C Setup 48
Bảng 4.17 Mô tả Khối hộp thoại I2C Master Read/Write 49
Bảng 5.1 Thông số mô hình hóa DC motor 54
Bảng 7.1 các đại lượng, kí hiệu, đơn vị trong phương trình 76
Trang 14CHƯƠNG 1 : TỔNG QUAN ĐỀ TÀI
1.1 Tình hình nghiên cứu trong và ngoài nước
1.1.1 T ổng quan tình hình nghiên thuộc lĩnh vực đề tài
Trong nước: Hiện nay có nhiều đề tài nghiên cứu dùng các lý thuyết điều khiển khác
nhau: PID, Fuzzy, LQR, đề điều khiển robot cân bằng, con lắc ngược thông qua điều khiền tốc độ và vị trí của DC motor Tuy nhiên con lắc ngược và đặc biệt là robot cân bằng cũng luôn đặt ra nhiều vấn đề khó khăn đối với lý thuyết điều khiển cũng như thiết bị điều khiển chung vì nó là hệ phi tuyến
Ngoài nước: Công trình nghiên cứu chủ yếu là thiết kế hoàn chỉnh một module điều
khiển duy nhất từ phần xử lý tín hiệu, xử lý và tính toán trung tâm, công suất
1.1.2 Danh m ục các công trình liên quan
• Nghiên cứu của Mai Tuấn Đạt (Đại học Bách Khoa -thành phố Hồ Chí Minh) với
đề tài “Xe hai bánh tự cân bằng di chuyển trên địa hình phẳng”
• Trương Lê Hữu Phát – Lê Phước Vạn, Đồ án tốt nghiệp “Robot hai bánh tự cân
bằng dùng LQR”, Tp Hồ Chí Minh, 2016
• Nguyễn Tùng Lâm – Nguyễn Tường Duy, Đồ án tốt nghiệp “Thiết kế chế tạo bộ
KIT thí nghiệm phục vụ môn học điều khiển tự động”, Tp Hồ Chí Minh, 2016
1.2 Tính c ấp thiết của đề tài
Môn học ứng dụng điều khiển tự động trên ô tô là môn học được áp dụng cho sinh viên năm 3 ngành công nghệ kỹ thuật ô tô của trường Đại học Sư phạm Kỹ thuật TPHCM Môn
học này trang bị cho sinh viên các kiến thức về hệ thống điều khiển tự động Mặc dù đã
có một số ví dụ minh họa và mô hình giảng dạy nhưng qua thời gian thì một số mô hình cũng đã trở nên hư hỏng cần phải phục chế lại Thêm vào đó với việc dùng Board Arduino Mega 2560 để Kit mô hình DC motor và con lắc ngược cũng có một số hạn chế như là trong một số thời điểm cần đáp ứng nhanh thì vẫn chưa thực hiện được do tốc độ xử lí của Arduino chưa cao
Từ vấn đề trên chúng em thấy cần thiết phải nghiên cứu và ứng dụng một Board mạch khác có bộ nhớ và tốc độ xử lí nhanh hơn để đáp ứng cho vào các mô hình trên mà cụ thể
là Board ARM STM32F407 DISCOVERY
1.3 Mục tiêu của đề tài
Trang 15Tìm hiểu các thiết bị ngoại vi và hướng dẫn sử dụng Board ARM STM32F407 DISCOVERY khi nhúng vào Matlab/Simulink
Đọc được tín hiệu cảm biến tốc độ và vị trí, cảm biến gia tốc để điều khiển các mô hình điều khiển
Điều khiển tốc độ và vị trí DC motor khi thay đổi các tín hiệu đầu vào (hằng số, xung vuông và sóng sin) và tăng dần thời gian đáp ứng
Dựa vào bài toán vị trí DC motor điều khiển con lắc ngược và robot cân bằng
Khôi phục cải tiến lại mô hình DC motor và con lắc ngược Thiết kế, chế tạo robot cân
bằng
Điều khiển, lấy kết quả thực nghiệm các mô hình và so sánh kết quả điều khiển dùng Board Arduino Mega 2560
1.4 Phương pháp và phạm vi nghiên cứu
Phương pháp nghiên cứu kết hợp giữa lý thuyết và thực nghiệm, nghiên cứu các tài liệu
về lý thuyết điều khiển tự động và các tài liệu có liên quan, dựa vào phần tính toán mô
phỏng của các đề tài trước để hiểu được lý thuyết thuật toán và mô phỏng Tìm hiểu các thiết bị ngoại vi và bảng dữ liệu của Board ARM STM32F407 để thiết lập mô hình điều khiển
Phạm vi nghiên cứu gồm điều khiển vị trí, tốc độ DC motor, cân bằng con lắc ngược chuyển động quay và robot cân bằng Từ đó, chúng em đánh giá kết quả lý thuyết và kết quả thực nghiệm dựa trên mô phỏng và thực nghiệm đồng thời đưa ra các so sánh về tốc
độ xử lí của 2 board mạch Arduino và ARM STM32F407 Cuối cùng chúng em đưa ra
nhận xét và đề xuất hướng phát triển đề tài
Trang 16CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT
2.1 Lịch sử phát triển lý thuyết điều khiển
Định nghĩa điều khiển: Điều khiển là quá trình thu nhập thông tin, xử lý thông tin và
tác động lên hệ thống để đáp ứng của hệ thống “gần” với mục đích định trước Điều khiển
tự động là quá trình điều khiển không cần sự tác động của con người
2.1.1 Điều khiển kinh điển (classical control)
Lý thuyết điều khiển kinh điển (trước 1960) mô tả hệ thống trong miền tần số (phép
biến đổi Fourier) và mặt phẳng s (phép biến đổi Laplace) Do dựa trên các phép biến đổi này, lý thuyết điều khiển kinh điển chủ yếu áp dụng cho hệ thống tuyến tính bất biến theo
thời gian, mặc dù có một vài mở rộng để áp dụng cho hệ phi tuyến, thí dụ phương pháp hàm mô tả Lý thuyết điều khiển kinh điển thích hợp để thiết kế hệ thống một ngõ vào –
một ngõ ra (SISO: single-input/single-output), rất khó áp dụng cho các hệ thống nhiều ngõ vào – nhiều ngõ ra (MIMO: multi-input/multi-ouput) và các hệ thống biến đổi theo thời gian
Các phương pháp phân tích và thiết kế hệ thống trong lý thuyết điều khiển kinh điển
gồm các phương pháp Nyquist, Bode, và phương pháp quỹ đạo nghiệm số Để thiết kế hệ
thống dùng phương pháp Nyquist và Bode cần mô tả hệ thống dưới dạng đáp ứng tần số (đáp ứng biên độ và đáp ứng pha), đây là một thuận lợi vì đáp ứng tần số có thể đo được bằng thực nghiệm Mô tả hệ thống cần để thiết dùng phương pháp quỹ đạo nghiệm số là hàm truyền, hàm truyền cũng có thể tính được từ đáp ứng tần số Hàm truyền của các hệ
thống phức tạp được tính bằng cách sử dụng sơ đồ khối hay sơ đồ dòng tín hiệu Mô tả chính xác đặc tính động học bên trong hệ thống là không cần thiết đối với các phương pháp thiết kế kinh điển, chỉ có quan hệ giữa ngõ vào và ngõ ra quan trọng
Các khâu hiệu chỉnh đơn giản như hiệu chỉnh vi tích phân tỉ lệ PID (Proportional Integral Derivative), hiệu chỉnh sớm trễ pha,… thường được sử dụng trong các hệ thống điều khiển kinh điển Ảnh hưởng của các khâu hiệu chỉnh này đến biểu đồ Nyquist, biểu
đồ Bode và quỹ đạo nghiệm số có thể thấy được dễ dàng, nhờ đó có thể dễ dàng lựa chọn được khâu hiệu chỉnh thích hợp
2.1.2 Điều khiển hiện đại (modern control)
Từ khoảng năm 1960 đến nay
Trang 17Kỹ thuật thiết kế hệ thống điều khiển hiện đại dựa trên miền thời gian Mô tả toán học dùng để phân tích và thiết kế hệ thống là phương trình trạng thái Mô hình không gian
trạng thái có ưu điểm là mô tả được đặc tính động học bên trong hệ thống (các biến trạng thái) và có thể dễ dàng áp dụng cho hệ MIMO và hệ thống biến đổi theo thời gian Lý thuyết điều khiển hiện đại ban đầu được phát triển chủ yếu cho hệ tuyến tính, sau đó được
mở rộng cho hệ phi tuyến bằng cách sử dụng lý thuyết của Lyapunov
Bộ điều khiển được sử dụng chủ yếu trong thiết kế hệ thống điều khiển hiện đại là bộ điều khiển hiện đại là bộ điều khiển hồi tiếp trạng thái Tùy theo cách tính vector hồi tiếp
trạng thái mà ta có phương pháp phân bố cục, điều khiển tối ưu, điều khiển bền vững,…
Với sự phát triển của lý thuyết điều khiển số và hệ thống rời rạc, lý thuyết điều khiển
hiện đại rất thích hợp để thiết kế các bộ điều khiển là các chương trình phần mềm chạy trên vi xử lý và máy tính số Điều này cho phép thực thi được các bộ điều khiển có đặc tính động phức tạp hơn cũng như hiệu quả hơn so với các bộ điều khiển đơn giản như PID hay sớm trễ pha trong lý thuyết điều khiển kinh điển
2.1.3 Điều khiển thông minh (intelligent control)
Điều khiển kinh điển và điều khiển hiện đại, gọi chung là điều khiển thông thường (conventional control) có khuyết điểm là để thiết kế được hệ thống điều khiển cần phải
biết mô hình toán học của đối tượng Trong khi đó thực tế có những đối tượng điều khiển
rất phức tạp, rất khó hoặc không thể xác định được mô hình toán Các phương pháp điều khiển thông minh như điều khiển mờ, mạng thần kinh nhân tạo, thuật toán di truyền mô
phỏng/bắt chước các hệ thống thông minh sinh học, về nguyên tắc không cần dùng mô hình toán học để thiết kế hệ thống, do đó có khả năng ứng dụng thực tế rất lớn Khuyết điểm của điều khiển mờ là quá trình thiết kế mang tính thử sai, dựa vào kinh nghiệm của chuyên gia Nhờ kết hợp logic mờ với mạng thần kinh nhân tạo hay thuật toán di truyền
mà thông số bộ điều khiển mờ có thể thay đổi thông qua quá trình học hay quá trình tiến hóa, vì vậy khắc phụ được khuyết điểm thử sai Hiện nay các bộ điều khiển thông thường
kết hợp với các kỹ thuật điều khiển thông minh tạo nên các bộ điều khiển lai điều khiển các hệ thống phức tạp với chất lượng rất tốt
2.2 Thành ph ần cơ bản của hệ thống điều khiển
Trang 18- u(t): tín hiệu điều khiển
Hình 2.1 Sơ đồ khối hệ thống điều khiển
Để thực hiện được quá trình điều khiển như định nghĩa ở trên, một hệ thống điều khiển
bắt buộc gồm có ba thành phần cơ bản là thiết bị đo lường (cảm biến), bộ điều khiển và đối tượng điều khiển Thiết bị đo lường có chức năng thu nhập thông tin, bộ điều khiển
thực hiện chức năng xử lý thông tin, ra quyết định điều khiển và đối tượng điều khiển chịu
sự tác động của tín hiệu điều khiển Hệ thống điều khiển trong thực tế rất đa dạng, sơ đồ
khối trên là cấu hình của hệ thống điều khiển thường gặp nhất
2.3 Thi ết kế bộ điều khiển
2.3.1 Ph ần loại thiết kế bộ điều khiển
Thiết kế là toàn bộ quá trình bổ sung các thiết bi phần cứng cũng như thuật toán, phần
mềm vào hệ cho trước để được hệ mới thỏa mãn yêu cầu về tính ổn định, độ chính xác, đáp ứng quá độ Có 2 cách thiết kế:
• Hiệu chỉnh nối tiếp: thêm các bộ điều khiển nối tiếp với hệ hở cho trước
Hình 2.2 Sơ đồ khối hiệu chỉnh nối tiếp
Trang 19- Các bộ điều khiển thường được sử dụng: sớm pha, trễ pha, sớm trễ pha, P, PI,
- Phương pháp thiết kế: phân bô cực, LQR
2.3.2 Bộ điều khiển PID
Bộ điều khiển PID là bộ điều khiển hồi tiếp vòng kín, kết hợp ba bộ điều khiển vi phân,
tích phân, tỉ lệ Nó có chức năng điều khiển hệ thống đáp ứng nhanh, vọt lố thấp, sai số
xác lập bằng không nếu chọn thông số phù hợp
Mục tiêu điều khiển của bộ PID là giảm độ vọt lố (POT), giảm thời gian xác lập (t),
Hình 2.3 Sơ đồ khối hồi tiếp trạng thái
Hình 2.4 Sơ đồ khối PID
Trang 20triệt tiêu sai số xác lập và giảm dao động
Trang 21• Bộ điều khiển D
- Phải sử dụng kết hợp với khâu P hoặc khâu I
- Kd càng lớn thì độ vọt lố càng nhỏ
- Kd càng lớn thì đáp ứng quá độ càng nhanh
- Khâu D rất nhạy với nhiễu tần số cao
Trong thực tế, thiết kế bộ điều khiển PID bằng nhiều phương pháp như QĐNS, dùng
biểu đồ Bode, hay phương pháp giải tích nhưng rất ít dùng do khó khăn trong việc xây
dựng hàm truyền Một trong những phương pháp phổ biến để thiết kế bộ điều khiển PID
là phương pháp Zeigler – Nichols Và phương pháp điều chỉnh thủ công cũng là một trong
những phương pháp thực nghiệm phổ biến để thiết kế bộ điều khiển PID
Hình 2.6 Sơ đồ bộ điều khiển D
Trang 22CHƯƠNG 3 : GIỚI THIỆU PHẦN MỀM VÀ PHẦN CỨNG
3.1 Giới thiệu về MATLAB/SIMULINK
MATLAB/SIMULINK là một chương trình viết cho máy tính PC hoạt động trong môi trường MS-DOS và môi trường WINDOWS nhằm hỗ trợ cho lập trình, các tính toán khoa
học và kỹ thuật được thiết kế với công ty “The MATHWORKS”
Thuật ngữ MATLAB được viết tắt của hai từ MATRIX và LABORATORY MATLAB được điều khiển với các tập lệnh, tác động qua bàn phím Nó cho phép tính toán số với ma
trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác Matlab giúp đơn giản hóa việc giải quyết các bài toán tính toán kỹ thuật so với các ngôn
ngữ lập trình truyền thống như C, C++, và Fortran Các câu lệnh trong MATLAB rất mạnh
và có những vấn đề chỉ cần một câu lệnh là đủ giải quyết bài toán Mô phỏng trong MATLAB sẽ cho ta hình ảnh tọa độ không gian hai chiều (2D) và ba chiều (3D)
Hình 3.1 Phần mềm MATLAB & SIMULINK
SIMULINK là một phần mềm mở rộng của MATLAB (1 Toolbox của Matlab) dùng
để mô hình hóa, mô phỏng và phân tích một hệ thống động Nó cho phép mô tả hệ thống tuyến tính, hệ phi tuyến, các mô hình trong miền thời gian liên tục, hay gián đoạn hoặc
một hệ gồm cả liên tục và gián đoạn MATLAB/SIMULINK được sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh, truyền thông, thiết kế điều khiển tự động, đo lường kiểm tra, phân tích mô hình tài chính, hay tính toán sinh học Với hàng triệu kỹ sư
và nhà khoa học làm việc trong môi trường công nghiệp cũng như ở môi trường hàn lâm, MATLAB/SIMULINK là ngôn ngữ của tính toán khoa học
3.2 Gi ới thiệu về board mạch ARM STM32F407 DISCOVERY
Trang 23Board mạch STM32F407 Discovery là một loại kit thuộc họ vi điều khiển ARM Dòng ARM Cortex KIT STM32F4 Discovery là một bộ xử lí thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ Nó được ứng dụng vào rất nhiều thị trường khác nhau bao gồm các ứng dụng doanh nghiệp, mạng gia đình, cộng nghệ mạng không dây và các hệ thống ô tô
Board mạch STM32F407 Discovery có vi điều khiển chính là STM43F04VGT6 microcontroller tích hợp với chip 32-bit ARM Cortex-M4F, 1MB bộ nhớ Flash, 192Kb RAM Bo mạch tích hợp sẵn mạch nạp ST-LINK/V2 và các cảm biến khác như cảm biến gia tốc LIS302DL, bộ xử lý âm thanh MP45DT02, đèn LED thông báo trạng thái nguồn, nút nhấn, nút Reset
Hình 3.2 Board mạch ARM STM32F407 DISCOVERY
3.3 Các công cụ cần chuẩn bị để làm thí nghiệm
3.3.1 Ph ần cứng
• STM32F4 DISCOVERY
• Mạch chuyển USB UART CP2102
• Mạch điều khiển động cơ L298N
• Cáp nối, dây điện và linh kiện điện tử (điện trở, LED,…)
• Máy đo xung Hantek
ần mềm
Trang 24• Hệ điều hành Windows 8.1 trở xuống (tốt nhất nên sử dụng Window 7)
• Phần mềm MATLAB có cái các công cụ: Simulink, Time Workshop, Time Workshop Embedded Coder
Real-• Thư viện Waijung Block
• Phần mềm ST Link Utility
• Phần mềm Terminal
• Phần mềm Hantek6022BE
Trang 25CHƯƠNG 4 : HƯỚNG DẪN SỬ DỤNG THƯ VIỆN WAIJUNG TRONG
MATLAB/SIMLINK
4.1 Chuy ển đổi tín hiệu Analog sang Digital và Digital sang Analog
4.1.1 Gi ới thiệu chân ADC, DAC
• Đặc tính điện áp của mô-đun ADC
- Điện áp chuyển đổi từ 0V đến VREF+
- Điện áp nguồn từ 1.8V đến 3.6V
• Đặc tính điện áp của mô-đun DAC
- Điện áp cấp ra 0.2V đến 3.6V
Trang 26Bảng 4.2 Đặc tính điện mô-đun ADC
Bảng 4.3 Đặc tính điện mô-đun DAC
4.1.2 Thí nghiệm sử dụng khối ADC
4.1.2.1 Cấu hình khối Regular ADC
Đường dẫn lấy khối Regular ADC: Simulink library >> Waijung Blockset >> STM32F4 Target >> On-chip Peripherals >> ADC >> Regular ADC
Trang 27Hình 4.1 Khối Regular ADC
Hình 4.2 Hộp thoại Regular ADC
Trang 28Bảng 4.4 Mô tả các chức năng trong khối ADC
ADC Module 1, 2, 3 Có 3 mô-đun để lựa chọn
Output Date Type Double
Single Raw (unint16)
Lựa chọn kiểu dữ liệu cho mỗi cổng ra ADC
ADC Prescaler Auto, 2, 4, 6,
Checked/Un-Chọn chân điều khiển ADC
Sample Time (sec) -1 Thời gian lấy mẫu (chọn giá trị "-1" thì thời
gian lấy mẫu khối ADC bằng thời gian lấy mẫu hệ thống)
Enable custom port
labels
checked
Checked/Un-Thêm tiêu đề cho khối Custom output port
labels
, Tên mỗi tiêu đề cách nhau dấu phẩy
Sử dụng khối này cho ứng dụng cần xử lý tín hiệu analog bằng phần mềm Ví dụ, đọc tín hiệu analog từ cảm biến (nhiệt độ, áp suất,…), đo điện áp và dòng điện từ cảm biến Đầu ra của khối là các giá trị số từ 0 đến 4095 (STM32F4 ADC có độ phân giải 12 bit)
Khối này sẽ thiết lập chức năng đọc ADC và trả về giá trị đọc trong mỗi thời gian mẫu
4.1.2.2 Điều khiển LED bằng biến trở
• Mục đích:
- Cho phép người dùng “đọc’’ tín hiệu từ Analog từ khối Regular ADC
- Hiểu được chức năng của biến trở và ứng dụng vào điều khiển LED
• Tiến hành:
Biến trở như hình có chức năng là để thay đổi giá trị điện áp đầu vào
- LED 1 bắt đầu sáng tại 0.5V
- LED 2 bắt đầu sáng tại 1V
- LED 3 bắt đầu sáng tại 1.5V
Trang 29- LED 4 bắt đầu sáng tại 2V
Hình 4.3 Code Simulink “Chớp LED bằng điện trở”
Bảng 4.5 Nối dây biến biến trở
Hình 4.4 Kết quả lắp mạch “biến trở điều khiển LED”
Trang 30Hình 4.5 Kết quả đồ thị khi văn biến trở
4.1.3 Thí nghi ệm sử dụng khối DAC
4.1.3.1 Cấu hình khối Regular DAC
Đường dẫn lấy khối Regular DAC: Simulink library >> Waijung Blockset >> STM32F4 Target >> On-chip Peripherals >> DAC
Hình 4.6 Khối Regular DAC
Hình 4.7 Hộp thoại Regular DAC
Trang 31Bảng 4.6 Mô tả khối Regular DAC
Input Type Volts (double)
Raw 12 bits (unit 16 aligned)
left-Raw 8 bits (uint8) Volt (single) Raw 12 bits (unint 16 right-aligned)
Lựa chọn kiểu dữ liệu
DAC1 (A4)
DAC2 (A5)
Checked/Un-checked Chọn chân điều khiển DAC
Input Vref voltage (between 0 - 3.3V)
raw data (between 0 - 4095)
Chọn giá trị ngưỡng (giá trị điện áp hoặc giá trị số)
-1 Thời gian lấy mẫu (chọn giá trị "-1" thì
thời gian lấy mẫu khối DAC bằng thời gian lấy mẫu hệ thống)
Khối DAC nhận đầu vào là một trong hai tín hiệu: điện áp (0 - 3.3V) hoặc dữ liệu thô (từ 0 - 4095)
4.1.3.2 Tạo tín hiệu tuần hoàn
• Mục đích:
- Tạo ra tín hiệu tuần hoàn
• Tiến hành:
Thí nghiệm này sẽ sử dụng STM32F407 Discovery để phát ra tín hiệu tuần hoàn, có hai
cổng vào Cổng vào đầu tiên sẽ gắn tín hiệu sóng tam giác với chân DAC1 (A4) mức điện
áp từ 0-2.5V Cổng đầu vào thứ hai nối tín hiệu sóng hình sin với chân DAC2 (A5) mức điện áp 0.5-2.5V
Trang 32Chú ý: thí nghiệm ở trên lấy nguồn tín hiệu từ nguồn Simulink nên nó không phù hợp
với tín hiệu cần tần số cao do mất thời gian tính toán các hàm lượng giác Vì thế thường dùng khối Arbitrary Function Generator khi cần tần số cao
• Kết quả đo xung:
4.2 S ử dụng Digital Input/Output
4.2.1 Giới thiệu Digital Input/Output
Hình 4.8 Code Simulink “Tạo tín hiệu tuần hoàn”
Sử dụng Khối rate transion
để điều chỉnh tín hiệu liên tục (đường đen) thành tín
hi ệu rời (đường đỏ)
Hình 4.9 Khối tạo tần số cao
Hình 4.10 Đồ thị xuất xuất 2 xung tam giác và sin
Trang 334.2.1.1 Sơ đồ mạch đầu vào
• Pull-Up Input (điện trở kéo lên)
Hình 4.11 Sơ đồ mạch Pull-Up Input
Khi nhấn công tắc thì MCU sẽ hiểu là mức LOW
• Pull-Down Input (điện trở kéo xuống)
Khi nhấn công tắc thì MCU sẽ hiểu là mức HIGH
Hình 4.12 S ơ đồ mạch Pull-Down Input
• Floating Input (thả nổi)
Điện trở không được kết nối trong MCU nên khi chọn chế độ này cần lắp thêm điện trở bên ngoài (Pull-Up hoặc Pull-Down)
4.2.1.2 Sơ đồ mạch đầu ra
• Push-Pull Output
Mạch điều khiển bên trong có 2 con MOSFET: P-MOS và N-MOS:
- Trạng thái HIGH: P-MOS mở và N-MOS đóng, điện áp đầu ra bằng VDD
- Trạng thái LOW: P-MOS đóng và N-MOS mở, điện áp đâu ra bằng Ground
Trang 34Hình 4.13 Sơ đồ mạch Push-Pull Output khi P-MOS mở
Nếu mắc LED theo mạch hình 4.13 trên thì LED sáng khi trạng thái “1”
Hình 4.14 Sơ đồ mạch Push-Pull Output khi P-MOS đóng
Nếu mắc LED theo mạch hình 4.14 thì LED sáng khi trạng thái “0”
Ưu điểm chọn Push-Pull Output:
- Thích hợp hệ thống yêu cầu đóng ngắt với tần số cao
- Điều khiển trực tiếp đến các thiết bị
Nhược điểm chọn Push-Pull Output:
- Dòng điện bị giới hạn Các chân của STM34F4 chịu dòng lớn nhất 25 mA (ngoài trừ PC13 – PC15 là 3 mA) Vì vậy ta thường sử dùng điện trở R = 660 Ohm mắc nối tiếp với LED để hạn dòng
Bảng 4.7 Đặc tính dòng điện
Trang 35• Open-Drain Output
Chân output được cấp nguồn ngoài (Vext), đèn sáng ở trạng thái “0”
Ưu điểm chọn Push-Pull Output:
- Sử dụng nguồn điện áp ngoài (Vext) nên có thể dùng nguồn điện áp cao hơn VDD Nhược điểm chọn Push-Pull Output:
- Dòng điện không được quá 25 mA
4.2.2 Thí nghiệm sử dụng khối Digital Output
4.2.2.1 Cấu hình khối Digital Output
Đường dẫn lấy khối Digital Output: Simulink library >> Waijung Blockset >> STM32F4 Target >> On-chip Peripherals >> I/O >> Digital Output
Hình 4.15 Khối Digital Output
Chọn cổng (A, B, C, D, E hoặc H) Tần số đầu ra (2, 25, 50, 100)
Chọn mạch Push-Pull hoặc Open-Drain
Chọn chân điều khiển
Trang 364.2.2.2 Điều chỉnh thời gian sáng của LED
• Mục đích :
- Giúp người dùng mô phỏng thực tế
- Biết cách sử dụng khối Pulse Generator để điều chỉnh thời gian sáng của LED
• Tiến hành:
Bảng 4.8 Các khối Simulink cho điều chỉnh thời gian sáng của LED
Khối thiết lập Target Setup Waijung Bolockset / STM32F4 target /
Device Configuration
Khối đầu ra Digital Input Waijung Bolockset / STM32F4 target / On
Chip Peripheral / IO
Kh ối tạo xung Pulse Generator Simulink / Sources
Chú ý: Trong khối Pulse Generator có một tham số quan trọng gọi là chu kì, dùng để tính ra độ rộng xung, nó quyết định thời gian sáng và tắt của LED Ví dụ người dùng muốn sáng trong 1 giây, tắt trong 3 giây và quá trình này xảy ra liên tục Như vậy độ rộng xung được tính bằng mối quan hệ sau:
% Độ rộng xung: (thời gian LED sáng) x 100/ chu kì
Ở đây chu kì là thời gian LED sáng + thời gian LED tắt = 1 + 3 =4 s
Vậy % độ rộng xung là (1) x 100 / 4 = 25%
Người dùng có thể thiết lập khối Pulse Generator như hình bên dưới và chọn vào biểu tượng Run như hình , sau đó nháy đúp vào Scope để xem sóng xung như hình Trên thực
tế người dùng không thể thấy được sự chớp của LED do tốc độ quá nhanh Nhưng ta vẫn
Hình 4.17 Code Simulink “Điều chỉnh thời gian sáng LED”
Trang 37có thể liên tượng được bằng việc nhìn vào sóng xung, thời điểm xung ở mức cao tương ứng với LED sáng, còn ngược lại mức thấp LED tắt đồng thời ta nhìn vào cả chu kì thì
lấy LED sáng ở 25% của chu kì và tắt ở 75% của chu kì
Hình 4.18 Cách Run mô hình trên Simulink
Hình 4.19 Thiết lập khối Pulse Generator Bảng 4.9 Mô tả khối Pulse Genertor
Pulse Type Time Based
Sample Based
Xung dựa trên thời gian mô phỏng Xung dựa trên thời gian mẫu Times Use Simulatione
times Use external signal
Chọn kiểu mô phỏng: sử dụng tín hiệu mô
phỏng
Sử dụng tín hiệu bên ngoài
Trang 38• Kết quả:
4.2.3 Thí nghi ệm sử dụng khối Digital Input
4.2.3.1 Cấu hình khối Digital Input
Đường dẫn lấy khối Digital Output: Simulink library >> Waijung Blockset >> STM32F4 Target >> On-chip Peripherals >> I/O >> Digital Input
Hình 4.22 Khối Digital Input Hình 4.20 Kết quả lắp mạch “Điều chỉnh thời gian sáng LED”
Hình 4.21 Đồ thị tín hiệu sáng LED
Trang 39Hình 4.23 Hộp thoại Digital Input
4.2.3.2 Điều chỉnh LED bằng nút nhấn
• Mục đích:
- Giúp người dùng đọc giá trị nút nhấn bằng khối Digital Input
- Giúp người dùng hiểu được mục đích của thí nghiệm qua đó ứng dụng vào thực
tế
• Tiến hành
Chọn cổng (A, B, C, D, E, F, G, H, I) Tần số đầu vào (2, 25, 50, 100)
Ch ọn mạch Pull-Up hoặc Pull-Down
Chọn chân điều khiển
Trang 40Bảng 4.10 Các khối Simulink cho thí nghiệm “Điều khiển LED bằng nút nhấn”
Kh ối thiết lập Target Setup Waijung Bolockset / STM32F4 target /
Device Configuration
Kh ối Digital đầu vào Digital Input Waijung Bolockset / STM32F4 target / On Chip Peripheral / IO Khối Digital đầu ra Digital Output Waijung Bolockset / STM32F4 target /
On Chip Peripheral / IO Khi người dùng chạy chương trình này LED sẽ sáng khi nhấn nút và LED tắt khi nhả nút Chương trình sẽ luôn gửi tín hiệu khi nhấn nút và ngừng gửi khi nhả nút Chúng ta
thấy mô hình này phù hợp cho việc điều khiển bằng tay như máy cẩu, máy nâng…
• Kết quả
Hình 4.25 Kết quả lắp mạch “Điều khiển LED bằng nút nhấn”
4.3 Sử dụng Timer/Counter
4.3.1 Gi ới thiệu Timer/Counter
Mỗi vi điều khiển điều có một tín hiệu Clock giúp xử lí chương trình, thông thường Clock thường có tín hiệu Digital với tần số cao và được thiết lập cả trong và ngoài quá trình xử lí dữ liệu Tốc độ của Clock ảnh hưởng đến khả năng xử lí của Vi điều khiển nhanh hoặc chậm
Tín hiệu Clock được sử dụng nhiều trong các mô-đun như mô-đun ADC, các mô-đun giao tiếp và đặc biệt là các mô-đun Timer
• Đặc điểm của mô-đun Timer:
- Thanh ghi của bộ đếm có 16 bit kiểu dữ liệu số nguyên, khi có một cạnh lên hoặc một tín hiệu bên ngoài vào cổng của Timer thì bộ điếm sẽ hoạt động