LỜI NÓI ĐẦU ................................................................................................................ 4 DANH MỤC HÌNH ẢNH............................................................................................... 5 CHƯƠNG 1 CƠ SỞ LÝ THUYẾT ................................................................................ 8 1.1 Lịch sử phát triển lý thuyết điều khiển ...................................................................... 8 1.1.1 Điều khiển kinh điển (classical control) ............................................................. 8 1.1.2 Điều khiển hiện đại (modern control) ................................................................. 8 1.1.3 Điều khiển thông minh (intelligent control) ....................................................... 9 1.2 Thành phần cơ bản của hệ thống điều khiển ............................................................. 9 1.3 Thiết kế bộ điều khiển ............................................................................................. 10 1.3.1 Phần loại thiết kế bộ điều khiển ........................................................................ 10 1.3.2 Bộ điều khiển PID ............................................................................................ 11 CHƯƠNG 2 GIỚI THIỆU PHẦN MỀM VÀ PHẦN CỨNG ...................................... 12 2.1 Giới thiệu về MATLAB/SIMULINK ...................................................................... 12 2.2 Giới thiệu về board mạch ARM STM32F407 DISCOVERY ................................. 12 CHƯƠNG 3 HƯỚNG DẪN SỬ DỤNG THƯ VIỆN WAIJUNG TRONG MATLAB/SIMLINK ............................................................................................................ 14 3.1 Chuyển đổi tín hiệu Analog sang Digital và Digital sang Analog .......................... 14 3.1.1 Giới thiệu chân ADC, DAC .............................................................................. 14 3.1.2 Thí nghiệm sử dụng khối ADC ........................................................................ 16 3.1.2 Thí nghiệm sử dụng khối DAC ......................................................................... 19 3.2 Sử dụng Digital Input/Output .................................................................................. 21 3.2.1 Giới thiệu Digital Input/Output ........................................................................ 21 3.2.2 Thí nghiệm sử dụng khối Digital Output .......................................................... 24 3.2.3 Thí nghiệm sử dụng khối Digital Input ............................................................ 27 3.3 Sử dụng Timer/Counter ........................................................................................... 29 3.3.1 Giới thiệu Timer/Counter ................................................................................. 29 Downloaded by EBOOKBKMT VMTC (nguyenphihung1009@gmail.com) lOMoARcPSD|2935381 3 3.3.2 Thí nghiệm sử dụng khối Basic PWM ............................................................. 31 3.3.3 Thí nghiệm sử dụng khối Encoder Read........................................................... 34 3.3.4 Thí nghiệm sử dụng khối Timer IRQ ............................................................... 38 3.4 Sử dụng cổng giao tiếp UART................................................................................. 40 3.4.1 Giới thiệu UART .............................................................................................. 40 3.4.2 Thí nghiệm sử dụng khối UART Setup và UART Tx ...................................... 40 3.4.3 Thí nghiệm sử dụng khối Host Serial ............................................................... 43 CHƯƠNG 4 KẾT LUẬN .............................................................................................. 48 TÀI LIỆU THAM KHẢO ............................................................................................. 49 PHỤ LỤC ................... 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. 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. 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”.
CƠ SỞ LÝ THUYẾT
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
1 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
1 1.2 Điề u khi ể n hi ệ n đạ i (modern control)
Từ khoảng năm 1960 đến nay 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
1.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.
Thành phần cơ bản của hệ thống điều khiển
Hình 1.1 Sơ đồ khối hệ thống điều khiển
Chú thích các ký hiệu viết tắt:
- r(t): tín hiệu vào, tín hiệu chuẩn
- cht(t): tín hiệu hồi tiếp
- u(t): tín hiệu đ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.
Thiết kế bộ điều khiển
1.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 1.2 Sơ đồ khối hiệu chỉnh nối tiếp
- Phương pháp thiết kế ở dạng này là phương pháp QĐNS, phương pháp biểu đồ
• Điều khiển hồi tiếp trạng thái: Tất cả các trạng thái của hệ thống được phản hồi trở về ngõ vào
- Khi đó, bộ điều khiển sẽ là: r(t) - Kx(t), với K = [k i k2 kn] lá vector hồi tiếp trạng thái
- Phương pháp thiết kế: phân bô cực, LQR
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 1.3 Sơ đồ kh ố i h ồ i ti ế p tr ạ ng thái
Hình 1.4 Sơ đồ kh ố i PID
GIỚI THIỆU PHẦN MỀM VÀ PHẦN CỨNG
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ậtngữ MATLAB đượcviếttắtcủ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)
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.
Giới thiệu về board mạch ARM STM32F407 DISCOVERY
Hình 2.1 Phần mềm MATLAB & SIMULINK
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 2.2 Board mạch ARM STM32F407 DISCOVERY
HƯỚNG DẪN SỬ DỤNG THƯ VIỆN WAIJUNG TRONG MATLAB/SIMLINK
Chuyển đổi tín hiệu Analog sang Digital và Digital sang Analog
3.1.1 Gi ớ i thi ệ u chân ADC, DAC
Số chân ADC để đọc tín hiệu điện áp từ thiết bị bên ngoài và số chân DAC gửi tín hiệu điện áp đến thiết bị bên ngoài được thể hiện ở hình bên dưới:
Hình 3.1 Số lượng chân mô-đun ADC
• Đặ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
Hình 3.2 Đặc tính điệ n mô- đun ADC
Hình 3.3 Đặc tính điệ n mô- đun DAC
3.1.2 Thí nghi ệ m s ử d ụ ng kh ố i ADC
3.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
Hình 3.4 Hộp thoại Regular ADC
Sample Time(sec): Thời gian lấy mẫu (chọn giá trị “-1” thì thời gian lấy mẫu hối ADC bằng thời gian lấy mẫu hệ thống
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
3.1.2.2 Điều khiển LED bằng biến trở
• 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
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
• LED 4 bắt đầu sáng tại 2V
Hình 3.6 Code Simulink “Chớ p LED b ằng điệ n tr ở”
Bảng 3.1 Nối dây biến biến trở
Hình 3.8 Kết quả lắp mạch “biến trở điều khiển LED”
Hình 3.7 Kết quả đồ thị khi văn biến trở
3.1.2.2 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
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)
3.1.2.3Tạ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
Hình 3.11 Code Simulink “Tạo tín hiệu tuần hoàn”
Chú ý: 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
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 đỏ)
S ử d ụ ng Digital Input/Output
3.2.1 Gi ớ i thi ệ u Digital Input/Output
• Pull-Up Input (điện trở kéo lên) 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 3.13 Đồ th ị xu ấ t xu ấ t 2 xung tam giác và sin
Hình 3.14 Sơ đồ mạch Pull-Up 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)
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
Hình 3.16 Sơ đồ m ạ ch Push-Pull Output khi P-MOS m ở
Nếu mắc LED theo mạch hình 3.16 trên thì LED sáng khi trạng thái “1”
Hình 3.15 Sơ đồ mạch Pull-Down Input
“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
Hình 3.18 Đặc tính dòng điện
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
3.2.2 Thí nghi ệ m s ử d ụ ng kh ố i Digital Output
3.2.2.2 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.
3.2.2.3 Điều chỉnh thời gian sáng của LED
• 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
Chọn mạch Push-Pull hoặc Open-Drain
Hình 3.20 Hộp thoại Digital Output
Bảng 3.2 Các khối Simulink cho điều chỉnh thời gian sáng của LED
Khốithiếtlập Target Setup Waijung Bolockset / STM32F4 target / Device Configuration
Khốiđầu ra Digital Input Waijung Bolockset / STM32F4 target
Khốitạo xung Pulse Generator Simulink / Sources
Màn hình Scope Simulink / Sink
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%
Hình 3.21 Code Simulink “Điề u ch ỉ nh thời gian sáng LED”
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 có 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 3.22 Cách Run mô hình trên Simulink u
Hình 3.23 Thi ế t l ậ p kh ố i Pulse Generator
Hình 3.24 Đồ thị tín hiệu sáng LED
3.2.3 Thí nghi ệ m s ử d ụ ng kh ố i Digital Input
3.2.3.2 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 3.26 Hộp thoại Digital Input
3.2.3.3 Điều chỉnh LED bằng nút nhấn
- 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
Kh ố i thi ế t l ậ p Target Setup Waijung Bolockset / STM32F4 target /
Kh ố i Digital đầ u vào Digital Input Waijung Bolockset / STM32F4 target /
Kh ố i Digital đầ u ra Digital Output Waijung Bolockset / STM32F4 target /
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…
Sử dụng 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
- Up counter: bắt đầu đếm từ 0 đến một giá trị đặt trước, khi đến ngưỡng giá trị đặt trước thì bộ đếm sẽ bắt đầu lại 0 và tiếp tục quá trình tương tự
- Down counter: bắt đầu từ một giá trị đặt trước và đếm lùi về 0, khi về 0 bộ đếm sẽ bắt đầu lại giá trị đặt trước và tiếp tục quá trình tương tự
- Up-Down counter: bắt đầu đếm từ 0 đến một giá trị đặt trước, khi đến ngưỡng giá trị đặt trước thì bộ đếm lùi về 0
- Prescaler divider: một mạch đếm nó được dùng để giảm tín hiệu tần số cao thành tín hiệu tần số thấp bằng phép chia số nguyên Người dùng có thể chọn một giá trị từ
0 đến 65535 như một hàm số chia
Trong STM32F4DISCOVERY, có 17 mô-đun có kết hợp với tín hiệu Clock và trong đó có 14 mô-đun dùng cho Timer
Hình 3.28 Sự hoạt động của Timer/Counter khi Prescaler thay đổi từ 1 đến 4
PWM là một tín hiệu dạng sóng tuần hoàn với tần số rời rạc, cho phép có thể điều chỉnh độ rộng xung ở mức cao và mức thấp
Có hai cách điều chỉnh xung:
Dùng công thức tính toán:
% Độ rộng xung: = (𝑡𝑂𝑁 x 100) / Chu kì
Với Period là chu kì
Việc điều chỉnh độ rộng xung có thể thực hiện bằng việc so sánh hai tín hiệu với nhau Tín hiệu đầu tiên là tín hiệu tam giác (Triangular signal) tín hiệu thứ hai là tín hiệu mong muốn (reference signal)
Trong STM32F407VG DISCOVERY thường dùng giá trị Counter trong mô-đun Timer
Ví dụ một tín hiệu tam giác với tần số không đổi so sánh với một tín hiệu mong muốn Nếu giá trị của Counter thấp hơn giá trị tín hiệu mong muốn thì trạng thái tín hiệu đầu ra sẽ được hiểu ở mức ON, còn ngược lại nếu giá trị của Counter cao hơn giá trị tín hiệu mong muốn thì tín hiệu đầu ra sẽ được hiểu ở mức OFF
Hình 3.30 Cách điều chỉnh độ rộng xung
Hình 3.31 Điều chỉnh độ rộng xung với cạnh lên
Ngoài ra giá trị Counter có thểđếm cả cạnh lên và xuống (Up-Down Counter)
3.3.2.3 Cấu hình khối Basic PWM Đường dẫn lấy khối PWM: Simulink Library >> Waijung Blockset >> STM32F4 target >> On Peripheral Chip >> TIM
Hình 3.32 Điều chỉnh độ rộng xung với cạnh lên và xuống
3.3.2.4Điều chỉnh độ sáng của LED dùng PWM
- Điều chỉnh độ rộng xung PWM bằng biến trở
- Điều chỉnh độ rộng xung PWM với nhiều kênh
- Điều chỉnh độ sáng của LED bằng tín hiệu PWM
Chọn Timer từ 1-14 Chu kì của tín hiệu PWM
Chọn cực tính của xung ‘’Cao hoặc Thấp’’
Hình 3.34 Khối hộp thoại Basic PWM
Giá trị điện áp đầu ra Vout biến thiên theo biến trở và nó được kết nối với chân PA5 còn LED kết nối với chân PA0 như hình Biến trở được dùng để điều chỉnh độ rộng xung của giá trị điện áp đọc được từ chân PA5, khi điện áp ở chân PA5 tăng thì độ sáng của LED cũng sẽ tăng theo Ngược lại khi điện áp ở chân PA5 giảm thì độ sáng của LED cũng sẽ giảm
Khi LED được nối với chân PA1 độ sáng của LED sẽ tăng chậm và sau đó LED tắt, quá trình này sẽ được lặp lại
Khi LED được nối với chân PA2 độ sáng của LED sẽ mạnh sau đó giảm dần rồi tắt và lặp lại như vậy.
3.3.3 Thí nghi ệ m s ử d ụ ng kh ố i Encoder Read
3.3.3.1Giới thiệu khối Encoder Read
Encoder là một thiết bị cơđiện dùng đểđo vị trí góc hoặc tốc độ quay của động cơ Nó bao gồm một đĩa tròn xẽ rãnh được gắn vào trục chính Đầu đọc gồm 1 - 3 bộ thu phát quang Đầu ra là xung vuông Độ phân giải Phụ thuộc rãnh trên 1 vòng Như bộ mã hóa với 180 số kênh có thể đo góc lên tới 360/180 = 2.0 độ
Hình 3.36 Kết quả đồ thị “Điều chỉnh độ sáng LED dùng PWM”
Hình 3.37 C ấ u trúc b ộ mã hóa quay
Khi trục bộ mã hóa bắt đầu xoay, các khe trên đĩa sẽ chạy qua cảm biến ánh sáng Máy dò ảnh ở đầu thu sẽ cảm nhận tín hiệu ánh sáng và khi bộ cảm biến được kết nối với mạch tín hiệu, hệ thống có thể nhận biết có bao nhiêu độ động cơ đã xoay
Từ hình 3.37, người ta có thể quan sát thấy các đĩa nằm trong 2 hàng và bị chồng chéo Để phát hiện hướng xoay, chẳng hạn như động cơ quay theo chiều kim đồng hồ (CW) hoặc hướng ngược chiều kim đồng hồ (CCW), có thể được thực hiện bằng cách đo chênh lệch pha giữa tín hiệu kênh A và kênh B Nếu các tín hiệu từ kênh A được dẫn từ tín hiệu của kênh B thì động cơ sẽ chuyển động theo chiều kim đồng hồ và nếu các tín hiệu từ kênh A bị trễ phía sau kênh B, thì động cơ sẽ di chuyển theo hướng ngược chiều kim đồng hồ và điều này được thể hiện trong hình 3.38 Để phát hiện hướng quay, xung đòi hỏi hai bộ mạch giải mã để biểu thị hướng quay
CW và CCW xoay có giá trị 0 và 1 tương ứng Dựa trên số đọc của bộ giải mã, tín hiệu đếm sẽ được tăng hoặc giảm.
Hình 3.38 Tín hiệu từ kênh A, kênh B lệch pha nhau 90 độ
Ngoài ra, một lợi thế khác của việc sử dụng tín hiệu với sự khác biệt pha 90 là người dùng có thể điều chỉnh độ phân giải của số đếm được hiển thị trong Hình 4.37
Tín hiệu kênh A được chọn làm tín hiệu tham chiếu Khi các cạnh tăng và giảm của kênh
A bằng 3 thì số đếm là (x1) Khi các cạnh tăng và các cạnh rơi của tín hiệu bằng 6 (gấp hai lần số xung tín hiệu) thì số đếm là (x2) Khi các cạnh tăng và giảm của tín hiệu là 12 thì số đếm là (x4) gấp 4 lần số xung tín hiệu kênh A
Nếu đĩa bộ mã hóa có 180 kênh thì làm thế nào để đếm bốn lần? Vì số kênh trên mỗi chu kỳ bằng 180 x 4 = 720 vịtrí nên độ phân giải thấp nhất có thểlà 360/720 = 0,5 độ và cứ như vậy
3.3.3.2 Cấu hình khối Encoder Read
Encoder Read: Đường dẫn lấy khối Digital Output: Simulink library >> Waijung Blockset >> STM32F4 Target >> On-chip Peripherals >> I/O >> TIM >>Encoder Read
Hình 3.39 Giao diện tín hiệu xung vuông
Hình 3.41 Kh ố i h ộ p tho ạ i Encoder Read
Bảng 4.12 Mô tả khối hộp thoại Encoder Read
Cấu hình Tùy chọn Giá trị Mô tả
Channel A, B Kênh đọc tín hiệu encoder
PPR Số xung đếm được khi quay 1 vòng
Reset Counter Chọn/Không chọn
Sample Time giây Thời gian lấy mẫu
Số xung mà encoder đọc được tính:
- Từ 0 đến PPRx4 khi sử dụng cả 2 kênh A và B
3.3.4 Thí nghi ệ m s ử d ụ ng kh ố i Timer IRQ
3.3.4.1 Khái quát ngắt ngoài Được hiểu như là chúng ta tạm thời dừng một việc đang làm để làm một việc nào đó ưu tiên hơn và sau khi hoàn thành việc đó ta sẽ quay lại làm việc đang làm trước đó
Trong STM32F407VG DISCOVERY có hỗ trợ 82 nguồn của ngắt bao gồm tín hiệu Digital Input, I2C, UART, Timer…
Sử dụng cổng giao tiếp UART
Trong các hệ thống nhúng hiện này dựa vào chip vi điều khiển sẽ cho phép ta kết nối với nhiều thiết bị bên ngoài nhằm mục đích truyền và nhận thông tin từ các thiết bị đó Trong STM32F407VG DISCOVERY có hỗ trợ chuẩn giao tiếp UART (chuyển và nhận thông tin không đồng bộ) sẽ giúp kết nối và giao tiếp với các thiết bị bên ngoài như máy tính, mô-đun GPS, Wi-Fi…Với lợi thếkhông đồng bộ giúp ta có thể dễ dàng nhận thông tin hai chiều vừa truyền lên vừa nhận được thông tin tương đương Để nhận dữ liệu lên máy tính hoặc truyền dữ liệu từ máy tính xuống ta sử dụng thư viện UART (UART Setup, UART Tx, UART Rx) trong Waijung Blockset và máy tính cần thiết lập phần mềm Terminal (xem phụ lục 3), phần mềm này là giao diện để truyền và nhận dữ liệu
3.4.2 Thí nghi ệ m s ử d ụ ng kh ố i UART Setup và UART Tx
3.4.2.1 Cấu hình khối UART Setup và UART Tx
UART Setup: Đường dẫn lấy khối Digital Output: Simulink library >> Waijung Blockset >>
STM32F4 Target >> On-chip Peripherals >> UART >> UART Setup
Bảng 3.4 Mô tả khối hộp thoại UART Setup
C ấ u hình Tùy ch ọ n, Gía tr ị Mô t ả
UART Module 1| 2| 3| 4| 5| 6 Có 6 mô-đun lựa chọn
Baud rate 9600| 115200| Tốc độ truyền dữ liệu
4, 5: có thể chọn tốc độ truyền 5,25 Mbps (cao nhất)
Parity None|Odd| Even Lựa chọn chẵn, lẻ
Tx pin Chọn chân truyền dữ liệu
Rx pin Chọn chân nhận dữ liệu
Khối UART Tx được sử dụng để truyền dữ liệu bên trong vi điều khiển ra thiết bị bên ngoài qua chân Tx đây là một cách thuận tiện để truyền dữ liệu Có 3 gói kiểu dữ liệu cho phép ta lựa chọn để truyền: ASCII Mode, Binary Mode and String Buffer Mode Đường dẫn lấy khối Digital Output: Simulink library >> Waijung Blockset >>
STM32F4 Target >> On-chip Peripherals >> UART >> UART Tx.
Hình 3.47 Khối hộp thoại UART Tx
Bảng 3.5 Mô tả khối hộp thoại UART Tx
C ấ u hình Tùy ch ọ n, Giá tr ị Mô t ả
UART Module 1|2|3|4|5|6 Có 6 mô-đun để lựa chọn
Transfer Blocking Chọn cách truyền dữ liệu:
Non-blocking Blocking: Phải đợi truyền xong dữ liệu này rồi mới xử lí dữ liệu tiếp theo
Non-Blocking : không cần đợi truyền hết dữ liệu mới gửi lên
Có thể cùng lúc truyền dữ liệu khác
Packet mode Ascii Chọn kiểu dữ liệu muốn truyền
Binar String Buffer End of packet CR (0x0D 0x0D - ''\r'') Cách kết thúc khi dữ liệu được
LF (0x0A - ''\n'') truyền lên CRLF (0x0D 0x0D - ''\r'' chỉ nhận lên
None ''\r\n'' Nhận lên sau đó xuống dòng mới
Sample Time -1 Thời gian lấy mẫu (chọn giá trị
(sec) "-1" thì thời gian lấy mẫu khối
UART Tx bằng thời gian lấy mẫu hệ thống)
3.4.2.2 Truyền một giá trị từ STM32F407 DISCOVERY lên máy tính
- Biết cách hoạt động của khối UART Tx
- Hiểu được cách chọn kiểu dữ liệu ASCII
3.4.3 Thí nghi ệ m s ử d ụ ng kh ố i Host Serial
3.4.3.1 Cấu hình các khối Host Serial
Hình 3.49 Code simulink “truyề n m ộ t giá tr ị t ừ Board mạch lên máy tính
Hình 3.50 Kết quả gửi lên máy tính qua phần mềm Terminal
Hình 3.51 H ộ p tho ạ i Host Serial Setup
Chọn cổng kết nối (Khi cổng chọn là , khối sẽ tự động quét cổng khả dụng)
Chọn kiểu truyền dữ liệu
Hình 3.52 Hộp thoại Host Serial Tx
3.4.3.2 Truyền một giá trị xuống board STM32F407 DISCOVERY
Mục đích: Sử dụng các Host Serial để truyền giá trị từ máy tính xuống board và từ board gửi lên lại máy tính
Ta cần tạo 2 mô hình bên dưới:
Hình 3.53 Hộp thoại Host Serial Rx
Hình 3.55 Mô hình chạy chế độ inf trên máy tính
Hình 3.56 Lắp mạch “Thí nghiệm truyền giá trị xuống board”
Hình 3.57 Đồ thị khi điều chỉnh Slider gửi giá trị xu ố ng board