4.4.1. Giới thiệu 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.
4.4.2. Thí nghiệm sử dụng khối UART Setup và UART Tx
4.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 4.14 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
(bps)
9600| 115200| 1000000| …
Tốc độ truyền dữ liệu
Nếu chọn mô-đun 1 và mô-đun 6: có thể chọn tốc độ truyền 10,5 Mbps (cao nhất) Nếu chọn mô-đun 2, 3, 4, 5: có thể chọn tốc độ truyền 5,25 Mbps (cao nhất)
Data bits 8
Parity None| Odd| Even Lựa chọn chẵn, lẻ Stop bit 0,5| 1| 1,5| 2
Tx pin Chọn chân truyền dữ liệu
Rx pin Chọn chân nhận dữ liệu
• UART Tx:
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 4.45 Khối UART Setup
Hình 4.47 Khối hộp thoại UART Tx
Bảng 4.15 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
Non-blocking
Chọn cách truyền dữ liệu: 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 Binar
String Buffer
Chọn kiểu dữ liệu muốn truyền
End of packet CR (0x0D 0x0D - ''\r'') LF (0x0A - ''\n'') CRLF (0x0D 0x0D - ''\r\n''
None
Cách kết thúc khi dữ liệu được truyền lên
''\r'' chỉ nhận lên ''\n'' xuống dòng mới
''\r\n'' Nhận lên sau đó xuống dòng mới
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 UART Tx bằng thời gian lấy
4.4.2.2. Truyền một giá trị từ STM32F407 DISCOVERY lên máy tính
• Mục đích:
- 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. • Tiến hành:
• Kết quả:
4.4.3. Thí nghiệm sử dụng khối Host Serial
4.4.3.1. Cấu hình các khối Host Serial
• Khối Host Serial Setup
Hình 4.48 Code simulink “truyền một giá trị từ Board mạch lên máy tính
Hình 4.49 Kết quả lắp mạch “Truyền giá trị từ Board lên máy tính”
• Khối Host Serial Tx
Chọn cổng kết nối (Khi cổng chọn là <auto>, khối sẽ tự động quét cổng khả dụng)
Chọn tốc độ truyền
Hình 4.51 Hộp thoại Host Serial Setup
• Khối Host Serial Rx
Hình 4.53 Hộp thoại Host Serial Rx
4.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.
• Tiến hành:
- Ta cần tạo 2 mô hình bên dưới:
Hình 4.54 Mô hình code nạp xuống board
Hình 4.55 Mô hình chạy chế độ inf trên máy tính
• Kết quả:
Hình 4.56 Kết quả lắp mạch “Thí nghiệm truyền giá trị xuống board”
4.5. Sử dụng cổng giao tiếp I2C 4.5.1. Giới thiệu I2C 4.5.1. Giới thiệu I2C
Đầu năm 1980 hãng Phillips đã phát triển một chuẩn giao tiếp nối tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter-Intergrated Circuit. Đây là đường Bus giao tiếp giữa các IC với nhau. Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển AVR, ARM... chip nhớ như: RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tự(DAC), IC điểu khiển LCD, LED...
I2C sử dụng hai đường truyền tín hiệu: Một đường xung nhịp đồng hồ SCL (Serial Clock Line) chỉ do Master phát đi ( thông thường ở 100kHz và 400kHz. Mức cao nhất là 1Mhz và 3.4MHz). Hai là đường dữ liệu SDA (Serial Data Line) theo 2 hướng.
Có rất nhiều thiết bị có thể cùng được kết nối vào một bus I2C, tuy nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được nhận ra bởỉ một địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thể hoạt động như là thiết bị nhận hoặc truyền dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ (master) hãy tớ (slave).
Về lý thuyết lẫn thực tế I2C sử dụng 7 bit để xác định địa chỉ, do đó trên một bus có thể có tới 2^7 địa chỉ tương ứng với 128 thiết bị có thể kết nối, nhưng chỉ có 112 , 16 địa chỉ còn lại được sử dụng vào mục đích riêng. Bit còn lại quy định việc đọc hay ghi dữ liệu (1 là write, 0 là read)
Điểm mạnh của I2C chính là hiệu suất và sự đơn giản của nó: một khối điều khiển trung tâm có thể điều khiển cả một mạng thiết bị mà chỉ cần hai lối ra điều khiển. Ngoài ra I2C còn có chế độ 10bit địa chỉ tương đương với 1024 địa chỉ, tương tự như 7 bit, chỉ có 1008 thiết bị có thể kết nối, còn lại 16 địa chỉ sẽ dùng để sử dụng mục đích riêng.
4.5.2. Giới thiệu cảm biến GY-521 6DOF MPU6050
Cảm biến GY-521 6DOF IMU MPU6050 được sử dụng để đo 6 thông số: 3 trục Góc quay (Gyro), 3 trục gia tốc hướng (Accelerometer), là loại cảm biến gia tốc phổ biến nhất trên thị trường hiện nay.
• Thông số kỹ thuật:
- Điện áp sử dụng: 3÷5V - Điện áp giao tiếp: 3÷5V - Chuẩn giao tiếp I2C
- Giá trị Gyroscopes trong khoảng: ± 250 500 1000 2000 degree/sec - Giá trị Accelerometer trong khoảng: ± 2g, ± 4g, ± 8g, ± 16g - Tốc độ truyền dữ liệu: 400 kHz
Hình 4.59 Cảm biến GY-521 6DOF MPU6050
• Trong giao tiếp với STM32F407G Discovery thì MPU 6050 ở chế độ Slave (tớ), với tốc độ tối đa đường truyền Bus là 400 kHz. Để giao tiếp I2C với MPU 6050 ta cần biết cấu hình các thanh ghi của MPU 6050:
- Thanh ghi Who_Am_I: chứa giá trị Slave của MPU6050 có giá trị là 0x68
- Thanh ghi Configuration: cấu hình khung đồng bộ lấy mẫu và bộ lọc thông thấp cho cảm biển, mặc định giá trị là 0x00
- Thanh ghi Gyroscope Configuration: cấu hình tầm đo góc xoay hồi vị, ở đây chọn tầm đo có giá trị 0x00 với tầm đo -250 tới 250 độ/s
- Thanh ghi Accelerometer Configuration: Cấu hình tầm đo gia tốc, ở đây chọn tầm đo có giá trị 0x00 với tầm đo từ -2g đến 2g
- Thanh ghi Power Management 1: Chọn nguồn Clock cho MPU, mặc định nguồn Clock là dao động nội thạch anh 8 MHz.
- Các thanh ghi dữ liệu Acc: ghi giá trị gia tốc của 3 trục x, y, z
- Các thanh ghi dữ liệu Gyro: ghi các giá trị góc xoay hồi vị của 3 trục x, y, z
4.5.3. Thí nghiệm sử dụng khối I2C
4.5.3.1. Cấu hình khối I2C
Đường dẫn lấy khối Digital Output: Simulink library >> Waijung Blockset >> STM32F4 Target >> On-chip Peripherals >> I2C >> I2C Master Setup.
Bảng 4.16 Bảng mô tả khối hộp thoại I2C Setup
Cấu hình Tùy chọn, giá trị Mô tả
I2C Module 1| 2| 3 Có 3 mô-đun để lựa chọn Transfer mode Blocking
Non-blocking
Chọn cách truyền dữ liệu:
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
Ghi chú: Hiện tại trong thư viện Waijung chỉ hỗ trợ Blocking.
Duty cycle in fast mode
TLow/Thigh=2 TLow/Thigh=16/9
Điều chỉnh thời gian High và Low cho Clock ở chế độ Fast
Clock speed (kHz)
100 | 400 Chọn tốc độ truyền do Master quy định Timeout (ms) 25 | giá trị khác Xác định timeout bằng đơn vị ms
SDA pin Chọn chân cho SDA
SCL pin Chọn chân cho SCL
Hình 4.60 Khối I2C Master Setup
• I2C Master Read/Write
Có chức năng để nhận và truyền dữ liệu từ thiết bị Tớ (Slave). Người dùng phải thiết lập địa chỉ 7 bit của thiết bị Tớ để giao tiếp với thiết bị Chủ qua I2C.
Đường dẫn lấy khối Digital Output: Simulink library >> Waijung Blockset >> STM32F4 Target >> On-chip Peripherals >> I2C >> I2C Master Read/Write
Bảng 4.17 Mô tả Khối hộp thoại I2C Master Read/Write
Cấu hình Tùy chọn, giá trị Mô tả
I2C Module 1| 2|3 Có 3 mô-đun để lựa chọn
Bytes Write Count
Giá trị dương Xác định số lượng Byte để nhận dữ liệu Bytes Read Count Giá trị dương Xác định số lượng Byte để truyền dữ
liệu
Wait Write Time Giá trị dương Thời gian delay này không bắt buộc, có thể sử dụng để thêm vào để tạo độ trễ khi đã nhận giá trị từ I2C trước khi truyền đi
Chú ý: thời gian này có thể làm chậm quá trình xử lí.
Sample time (sec) -1 Xác định thời gian lấy mẫu cho hệ thống
Hình 4.62 Khối I2C Master Read/Write
4.5.3.2. Thí nghiệm đọc cảm biến GY-521 6DOF MPU 6050
• Mục đích:
- Giúp người dùng hiểu được cách sử dụng giao tiếp I2C - Đọc tín hiệu gia tốc và góc quay hồi vị
• Tiến hành :
Hình 4.64 Code Simulink “Đọc cảm biến MPU6050” (1)
Mô hình simulink trên được chia thành 3 phần chính:
- MPU6050 Initialize: Thiết lập địa chỉ và các thanh ghi của cảm biến MPU6050 - MPU6050 Read: Đọc các giá trị gia tốc và góc xoay hồi vị ở 3 trục x, y, z - UART Tx: Truyền các giá trị dữ liệu đọc về qua giao tiếp UART Tx
Trong khối chương trình con MPU Initialize giúp ta thiết lập địa chỉ của cảm biến, chọn tốc độ truyền xung Clock, tầm đo của gia tốc và góc quay hồi vị để chuẩn bị cho việc đọc giá trị dữ liệu từ cảm biến.
Thực tế giá trị dữ liệu trả về có kiểu số nguyên 16 bit (từ -2^15 đến 2^15) do đó cần đổi đơn vị ra đơn vị chuẩn và rồi dữ liệu được truyền lên lên máy tính thông qua giao tiếp UART để giúp nhận dữ liệu. Ở đây giá trị gia tốc của trục z là lớn nhất vì nó có gia tốc trọng trường còn gia tốc tại trục x, y là nhỏ nhất vì nó song song với bề mặt đất, còn với
Thiết lập MPU6050 Đọc giá trị dữ liệu
Truyền dữ liệu qua giao tiếp UART
Hình 4.65 Code Simulink “Đọc cảm biến MPU6050” (2)
• Kết quả:
CHƯƠNG 5 : MÔ HÌNH DC MOTOR 5.1. Giới thiệu phần cứng mô hình DC motor
5.1.1. DC motor
Động cơ một chiều (DC motor) là một thiết bị chuyển đổi điện năng thành cơ năng, nó có hai bộ phận chính là nam chân vĩnh cửu và cuộn dây. Ngoài ra nó còn có một chuổi than để liên kết nguồn điện bên ngoài với cuộn dây của motor, khi cuộn dây có điện thì sẽ có từ trường xung quanh cuộn dây. Chiều quay của motor phụ thuộc vào chiều điện áp cấp cho motor làm cho motor quay cùng chiều hoặc ngược chiều kim đồng hồ.
DC motor thường là bộ phận chấp hành quan trọng của nhiều hệ thống điều khiển. Nó trực tiếp cung cấp chuyển động quay cho trục động cơ, gắn với bánh xe hoặc dây đai có thể cung cấp chuyển động tịnh tiến.
Để phù hợp với mô hình mô phỏng ta chọn động cơ như sau: • Nguồn cấp cho động cơ: 12-21V
• Tốc độ cao nhất lúc không tải:
• Số xung một vòng của Encoder: 200 xung/vòng • Dòng điện: 2.2A
Hình 5.1 Động cơ DC
5.1.2. Mô-đun điều khiển motor
Module cầu H dùng IR2184 đây là module cầu H dùng IC kích FET chuyên dụng IR2184, FET sử dụng IRF3205 nên cho dòng cao. Module này được thiết kế dành cho các
ứng dụng điều khiển tốc độ và vị trí dùng DC Motor. Hình 5.2 Module cầu H • Thông số kỹ thuật: - Dòng liên tục 10A. - Dòng đỉnh 30A (200 ms). - Điện áp cấp từ +24V. 5.2. Xây dựng phương trình động học 5.2.1. Thông số DC motor
Hình 5.3 Mạch điện phần ứng và sơ đồ chuyển động rotor
Bảng 5.1 Thông số mô hình hóa DC motor
Thông số Ký hiệu
Mô - men quán tính của rotor J
Hằng số ma sát nhớt motor b
Điện trở R
Cuộn dây có độ tự cảm L
5.2.2. Thiết lập phương trình vi phân
Giả sử, từ trường là không đổi. Mô-men xoắn của rotor động cơ chỉ tỉ lệ với dòng điện phần ứng i bởi hằng số Ki thông qua phương trình:
𝑇 = 𝐾𝑡. 𝑖 (5-1)
Sức phản điện động của motor e tỉ lệ với vận tốc góc của trục bởi hằng số Ke.
𝑒 = 𝐾𝑒. 𝜃̇ (5-2)
Trong đơn vị SI, hằng số momen xoắn động cơ và sức phản điện động của motor bằng nhau Kt = Ke. Do đó, ta sẽ sử dụng K đại diện cho cả hai hằng số momen xoắn động cơ và hằng số sức phản điện động của motor.
Từ hình 5.3, chúng ta có thể thiết lập các phương trình sau đây dựa trên định luật II Newton và định luật Kirchoff. Ta có:
𝐽𝜃̇ + 𝑏𝜃̈ = 𝐾𝑖 (5-3)
𝐿𝑑𝑖
𝑑𝑡+ 𝑅𝑖 = 𝑉 − 𝐾𝜃̇ (5-4)
5.2.3. Thiết lập hàm truyền
Biến đổi Laplace 2 vế phương trình (5-3), (5-4)
(𝑱𝒔 + 𝒃)𝒔𝜽(𝒔) = 𝑲𝑰(𝒔) (5-5) (𝑳𝒔 + 𝑹)𝑰(𝒔) = 𝑽(𝒔) − 𝑲𝒔𝜽(𝒔) (5-6) Ta có : { 𝜽̇(𝒔) = 𝒔𝜽(𝒔) = 𝑲𝑰(𝒔) (𝑱𝒔 + 𝒃) 𝑽(𝒔) = 𝑲𝟐𝑰(𝒔) (𝑱𝒔 + 𝒃)+ (𝑳𝒔 + 𝑹)𝑰(𝒔) (5-7)
Hàm truyền tốc độ của motor
𝑺(𝒔) =𝜽̇(𝒔)
𝑽(𝒔)=
𝑲
𝑱𝑳𝒔𝟐+ (𝑱𝑹 + 𝒃𝑳)𝒔 + 𝒃𝑹 + 𝑲𝟐 [𝒓𝒂𝒅/𝒔
𝑽 ] (5-8)
𝑷(𝒔) = 𝜽(𝒔) 𝑽(𝒔)= 𝑺(𝒔) 𝟏 𝒔 = 𝑲 𝑱𝑳𝒔𝟑+ (𝑱𝑹 + 𝒃𝑳)𝒔𝟐+ (𝒃𝑹 + 𝑲𝟐)[ 𝒓𝒂𝒅 𝑽 ] (5-9)
5.2.4. Thiết lập phương trình không gian trạng thái
Từ 2 phương trình vi phân (5.3) và (5.4), ta có: { 𝑑𝜃̇ 𝑑𝑡 = 𝐾 𝐽 𝑖 − 𝑏 𝐽 𝜃̇ 𝑑𝑖 𝑑𝑡 = − 𝑅 𝐿𝑖 − 𝐾 𝐿 𝜃̇ + 𝑉 𝐿 (5-10)
Ta có hệ phương trình trạng thái tốc độ của motor:
{ 𝑑 𝑑𝑡[ 𝜃̇ 𝑖] = [ −𝑏 𝐽 𝐾 𝐽 −𝐾 𝐿 −𝑅 𝐿 ] [𝜃̇ 𝑖] + [ 0 1 𝐿 ] 𝑉 𝑦(𝑡) = [1 0] [𝜃̇𝑖] (5-11) Với 𝐴 = [ −𝑏 𝐽 𝐾 𝐽 −𝐾 𝐿 −𝑅 𝐿 ]; 𝐵 = [01 𝐿 ]; 𝐶 = [1 0] Cũng từ 2 phương trình vi phân (5.3) và (5.4), ta có: { 𝑑𝜃 𝑑𝑡 = 𝜃̇ 𝑑𝜃̇ 𝑑𝑡 = 𝐾 𝐽 𝑖 − 𝑏 𝐽 𝜃̇ 𝑑𝑖 𝑑𝑡 = − 𝑅 𝐿𝑖 − 𝐾 𝐿 𝜃̇ + 𝑉 𝐿 (5-12)
Ta có hệ phương trình trạng thái vị trí của motor:
{ 𝒅 𝒅𝒕[ 𝜽 𝜽̇ 𝒊 ] = [ 𝟎 𝟏 𝟎 𝟎 −𝒃 𝑱 𝑲 𝑱 𝟎 −𝑲 𝑳 −𝑹 𝑳 ] 𝒚(𝒕) = [𝟏 𝟎 𝟎] [𝜽𝜽̇ 𝒊 ] [𝜽𝜽̇ 𝒊 ] + [ 𝟎 𝟎 𝟏 𝑳 ] 𝑽 (5-13) Với 𝑨 = [ 𝟎 𝟏 𝟎 𝟎 −𝒃 𝑱 𝑲 𝑱 ] ; 𝑩 = [ 𝟎 𝟎 𝟏] ; 𝑪 = [𝟏 𝟎 𝟎]
5.3. Bộ điều khiển DC mtor
5.3.1. .Mô hình và sơ đồ mạch điện