Sử dụng cổng giao tiếp UART

Một phần của tài liệu Ứng dụng ARM STM32F4 discovery và matlab simulink trong thiết kế các bộ điều khiển đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 46)

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

Một phần của tài liệu Ứng dụng ARM STM32F4 discovery và matlab simulink trong thiết kế các bộ điều khiển đồ án tốt nghiệp ngành công nghệ kỹ thuật ô tô (Trang 46)

Tải bản đầy đủ (PDF)

(99 trang)