Tải bản đầy đủ (.pdf) (25 trang)

Tìm hiểu SWI và động cơ bước hiển thị số vòng quay qua LED đơn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.37 MB, 25 trang )

Hệ điều khiển thời gian thực

SVTH: Nhóm 1

MỤC LỤC
I.

Cơ sở lý thuyết ..........................................................................................................3
1. Tìm hiểu về RTOS ...............................................................................................3
1.1

RTOS là gì ? ...................................................................................................3
1.1.1 Hệ thống thời gian thực (Real time System): ..........................................3
1.1.2 Thời gian thực cứng (Hard Real-time) và thời gian thực mềm (Soft
Real- Time):.............................................................................................3
1.1.3 Định nghĩa hệ điều hành thời gian thực RTOS: .....................................4

1.2

Các thành phần trong RTOS: .........................................................................4
1.2.1 Bộ lịch trình (Scheduler): .......................................................................4
1.2.2 Bộ điều phối (Dispatcher): ......................................................................6
1.2.3 Các đối tượng (Objects) trong RTOS: .....................................................7

1.3

Định nghĩa Tasks: ...........................................................................................8
1.3.1 Task hệ thống (System Task): .................................................................8
1.3.2 Các trạng thái của một Task: ...................................................................9
1.3.3 Cấu trúc của một Task: ..........................................................................10


2. Tìm hiểu về SWI ................................................................................................10
2.1

Định nghĩa SWI ............................................................................................10

2.2

Độ ưu tiên SWI trong hệ thống ....................................................................10

2.3

Quy tắc lập lịch trình (Scheduling Rules) ....................................................11

2.4

Các bước xử lí trong hệ thống ......................................................................12

3. Động cơ bước .....................................................................................................12
3.1

Khái niệm .....................................................................................................12

3.3

Phân loại .......................................................................................................13

3.4

Ưu điểm và nhược điểm ...............................................................................13


4. Giới thiệu về Kit Launchpad dùng vi điều khiển TivaC ....................................14
II. Thiết kế ...................................................................................................................15
1. Sơ đồ khối.........................................................................................................15
2. Kết nối phần cứng............................................................................................16
3. Thiết kế phần cứng...........................................................................................16
3.1

Phím nhấn .....................................................................................................15
1


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

3.2

Led đơn .........................................................................................................17

3.3

Mạch bảo vệ..................................................................................................17

3.4

Mạch đệm dòng ............................................................................................18

4. Phần mềm CCS...................................................................................................18
III. Code điều khiển ......................................................................................................18
IV. Kết quả đánh giá .....................................................................................................24

1. Kết quả đạt được.................................................................................................24
2. Ưu điểm và hạn chế: ...........................................................................................24
3. Đề nghị ...............................................................................................................24
TÀI LIỆU THAM KHẢO ......................................................................................24

2


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

TÌM HIỂU SWI VÀ ĐỘNG CƠ BƯỚC HIỂN THỊ
SỐ VÒNG QUAY QUA LED ĐƠN
Mục tiêu:
Trong điều khiển chuyển động kỹ thuật số, động cơ bước là một cơ cấu
chấp hành đặc biệt hữu hiệu bởi nó có thể thực hiện trung thành các lệnh đưa
ra dưới dạng số. Động cơ bước được ứng dụng nhiều trong ngành Tự động
hoá, chúng được ứng dụng trong các thiết bị cần điều khiển chính xác. Ví dụ:
Điều khiển robot, điều khiển tiêu cự trong các hệ quang học, điều khiển định vị
trong các hệ quan trắc, điểu khiển bắt, bám mục tiêu trong các khí tài quan sát,
điều khiển lập trình trong các thiết bị gia công cắt gọt, điều khiển các cơ cấu
lái phương và chiều trong máy bay... Trong công nghệ máy tính, động cơ bước
được sử dụng cho các loại ổ đĩa cứng, ổ đĩa mềm, máy in...
I.

Cơ sở lý thuyết

1.


Tìm hiểu về RTOS

1.1

RTOS là gì ?

1.1.1 Hệ thống thời gian thực (Real time System):
 Thời gian (Time) :
 Sự chính xác của hệ thống không chỉ phụ thuộc vào kết quả
tính toán logic mà còn phụ thuộc vào thời gian cho ra kết quả.
 Thực (Real):
 Đáp ứng của hệ thống với những sự kiện bên ngoài.
 Thời gian thực (Real-Time):
 Phải đảm bảo các yếu tố:
 Đáp ứng nhanh
 Dự đoán được.
 Các tác vụ (Real-time Task) được xác định bằng deadline.
 Deadline là thời gian tối đa một tác vụ phải hoàn thành
việc thính toán.
1.1.2 Thời gian thực cứng (Hard Real-time) và thời gian thực mềm (Soft Real-Time):

Hình 1: Thời gian thực cứng và thời gian thực mềm.
3


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

 Thời gian thực cứng:


Một tác vụ là thời gian thực cứng nếu như thời gian tính
toán vượt quá deadtime có thể gây ra sự phá vỡ môi trường điều
khiển.
 Thời gian thực mềm:

Một tác vụ là thời gian thực mềm nếu như đảm bảo thực
thi trong deadtime cho phép và nếu như không đảm bảo thì sẽ không
tạo ra những nguy hại nào đáng kể cho hệ thống và không làm ảnh
hưởng đến sự ứng xử của hệ thống.
1.1.3

Định nghĩa hệ điều hành thời gian thực RTOS:

1.2

Là hệ thống có:
 Lịch trình thực thi theo thời gian.
 Quản lý tài nguyên hệ thống.
 Cung cấp những nền tảng cơ bản để phát triển các ứng dụng
trên nó.
Các thành phần trong RTOS:

1.2.1

Hình 2: Các đối tượng trong RTOS
 Bộ lịch trình (Scheduler):
Là một tập các thuật toán để xác định tác vụ (Task) nào được
thực thi.
 Đối tượng (Object):

Là những cấu trúc đặc biệt (Kernel) giúp người lập trình tạo ra
các ứng dụng.
 Dịch vụ (Service) :
Là những điều khiển mà Kernel (lõi) thực thi trong đối tượng
(object): chia thời gian (Timing), ngắt (interrupt), đáp ứng (handling)
và quản lý tài nguyên hệ thống (resource management).
Bộ lịch trình (Scheduler):

4


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

 Là một phần vô cùng quan trọng của lõi hệ thống điều khiển
(Operating System Kernel).
 Nó giúp xác định tác vụ (task) nào sẽ dành quyền CPU để
thực thi tiếp theo. Sau đó, nó thực hiện việc chuyển trạng thái
(context switching) được thực hiện bằng bộ điều phối (dispatcher).

Hình 3: Chuyển đổi trạng thái (Context Switching)
 Trạng thái (ngữ cảnh) của tác vụ (Task)
 Mỗi task có một trạng thái riêng của nó, nó chính là trạng thái
của những thanh ghi (registers).
 Mỗi thời điểm 1 task mới được tạo ra, kernel sẽ tạo ra và lưu
giữ một block điều khiển liên quan đến task đó (TCBs). TCBs là
những cấu trúc dữ liệu hệ thống mà kernel dùng để lưu trữ những
thông tin đặc trung của task. TCBs chứa mọi thứ mà một kernel cần
để biết về một task cụ thể nào đó. Khi task đnag chạy, trạng thái của

nó là động. Trạng thái động này được lưu trữ trong TCB. Khi task
không còn chạy nữa, trạng thái sẽ bị đóng băng (frozen) trong TCB,
và được sử dụng cho lần thực thi tiếp theo của task.
 Công tắc chuyển đổi trạng thái (Context Switch):
 Sẽ xảy ra khi bộ lịch trình (scheduler) chuyển từ một trạng
thái này sang một trạng thái khác.
 Việc chuyển đổi trạng thái bao gồm:
 Thời gian chuyển đổi:
Là thời gian tiêu tốn để cho bộ lịch trình chuyển từ task này
sang task khác.
Nó không có liên quan nào đến các lệnh thực hiện trong task.
Nếu một ứng dụng được thiết kế mà xảy ra chuyển đổi trạng
thái thường xuyên thì có thể dẫn đến những thực thi không cần thiết.
Vì vậy, nên thiết kế ứng dụng theo cách mà tạo ra ít chuyển đổi trạng
thái nhất.
 Khi nào chuyển đổi xảy ra:
Mỗi khi ứng dụng tạo một lời gọi hệ thống (System Call), bộ
lịch trình sẽ xác định rằng có cần chuyển đổi trạng thái hay không.
Khi bộ lịch trình xác định việc chuyển đổi là cần thiết thì sẽ gọi bộ
phân phối (dispatcher) để thực hiện việc chuyển đổi.
5


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

 Ví dụ: Khi bộ thực thi của Kernel xác định cần dừng việc thực thi
Task 1 để chuyển qua trạng Task 2 thì nó sẽ thực thi theo các bước
sau: Kernel sẽ lưu thông tin trạng thái của Task 1  Load thông tin

trạng thái của Task 2, Task 2 trở thành luổng (thread) thực thi hiện
tại. Trạng thái chuyển đổi của Task 1 sẽ được đóng bang trong khi
Task 2 đang được thực thi, nhưng nếu như bộ chuyển đổi xác định
cần chạy lại Task 1 thì Task 1 sẽ quay lại vị trí ngay trước khi nó bị
chuyển đổi.

Hình 4: Ví dụ về Contex Switch
1.2.2 Bộ điều phối (Dispatcher):
 Dòng thực thi (Flow of Execution):
Tại bất kì thời điểm nào RTOS đang chạy, dòng thực thi sẽ
chuyển đến 3 vùng: đến các Task ứng dụng (application Task), đến
một chương trình phục vụ ngắt (ISR), hoặc đến Kernel.
 Khi nào bộ phân phối được thực hiên:
 Khi một Task hoặc ISR tạo một lời gọi hệ thống, dòng điều
khiển sẽ chuyển đến Kernel để thực thi một trong số những thủ tục
được cung cấp bởi Kernel.
 Khi rời khỏi Kernel, dispatcher sẽ có trách nhiệm là chuyển
lệnh điều khiển đến một trong số những Task ứng dụng.

Hình 5: Điều phối từ một Task
6


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

 Cách thực hiện như sau:
 Không cần thiết để chuyển toàn bộ lệnh điều khiển đến
cùng một task gọi System Call. Điều này sẽ được xác định bằng giải

thuật phân chia thời gian biểu (scheduling algorithms) của bộ lịch
trình (scheduler).
 Chuyển đổi thực thi từ một Task
 Tùy thuộc vào cách truy cập vào Kernel như thế nào mà
dispatching sẽ xãy ra khác nhau. Khi một Task thực hiện một lời gọi
hệ thống, dispatcher sẽ được sử dụng để thoát khỏi Kernel mỗi khi
Lời gọi hệ thống được hoàn thành. Trong trường hợp này, dispatcher
được dùng như một lời gọi của lời gọi (call-by-call basic) để nó có
thể hỗ trợ cho việc chuyển đổi trạng thái của Task. Bất kì Task nào
cũng có thể gọi system call. Một hay nhiều Task có thể ở trạng thái
sắn sàng cho thực thi.
 Chuyển đổi thực thi từ 1 chương trình phục vụ ngắt (ISR):

Hình 6: Điều phối từ một ISR
 Khi một ISR tạo một System Call, Dispatcher sẽ bị bỏ vô
hiệu hóa cho đến khi ISR thưc thi xong. Quá trinh này sẽ đúng miễn
là có đủ tài nguyên để chuyển đổi giữa các Task. Chuyển đổi trạng
thái này sẽ không được diễn ra bởi vì ISR phải được thực thi xong
mà không được ngắt bởi các Tasks. Sau khi ISR thực thi xong,
Kernel sẽ thoát đến dispatcher để có thể điều phối đến đúng task thực
thi tiếp theo.
1.2.3 Các đối tượng (Objects) trong RTOS:
 Tasks:
Là các luồng (thread) thực thi cùng tồn tại và độc lập nhau có
thể “cạnh tranh” nhau để dành quyền thực thi.
 Semaphores:
Là đối tượng bắt sự kiện để đồng bộ giữa các tasks, có thể
tăng hoặc giảm.
 Message Queues:


7


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

1.3

Là một kiểu cấu trúc dữ liệu được dùng để đồng bộ hóa hoặc
trao đổi thông tin giữa các Tasks.
 Real-time embedded applications:
Là sự kết nối giữa các đối tượng của Kernel để giải quyết vấn
đề thời gian thực như sự đồng thời, sự đồng bộ, và trao đổi dữ liệu
Định nghĩa Tasks:

1.3.1

Hình 7: Sơ đồ cấu trúc của một Task cơ bản.
 Task là một luồng thực thi độc lập mà có thể cạnh tranh chiếm quyền
thực thi. Một ứng dụng được chia ra làm nhiều Tasks đồng thời
(Concurrent Task) để tối ưu khả năng đáp ứng vào ra trong luật thời
gian.
 Một Task được định nghĩa thuần túy là một tập các tham số và cấu
trúc dữ liệu.
 Các thành phần của một Task:
Khi được tạo ra, Task sẽ có tên, ID duy nhất, độ ưu tiên, một
block điều khiển Task (TCB), Stack, và các thủ tục thực thi Task.
Task hệ thống (System Task):
Bao gồm các Task sau:

 Task khởi tạo (Initialization or Startup Task)
Khởi tạo hệ thống và tạo task khởi động hệ thống.
 Task “Rỗi” (Idle Task).
Idle Task chạy theo chu kì rỗi của hệ thống (idle cycles),
được đặt ở độ ưu tiên thấp nhất.
Thực thi một vòng lặp vô tận. Idle task chắc chắn rằng bộ
đếm chương trình luôn luôn có giá trị cho trong trường hợp không có
task nào thực thi.
Kernel cho phép các thao tác được cấu hình bời người dùng
(developer) để chạy những yêu cầu đặc biệt: sleep mode.
8


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

 Task “đăng nhập” (Logging Task).
Là tin nhắn truy cập vào hệ thống.
 Task “Lỗi” (Exception- Handling Task).
Thực thi các trường hợp lỗi hệ thống hoặc ứng dụng.
 Task “sữa lỗi” (Debug Agent Task).
Cho phép sữa lỗi thông qua công cụ debug (host debugger).
Chú ý rằng các task hệ thống khác có thể được tạo ra trong quá trình
khởi tạo, phụ thuộc vào các thành phần có trong Kernel.

1.3.2

Hình 8: Các trạng thái của một Task.
Các trạng thái của một Task:

 Trạng thái của một Task:
Tại bất kì một thời điểm, mỗi task tồn tại một trong số những
trạng thái nhỏ bao gồm: Sẵn sàng (Ready), Đang thực thi (Running),
hoặc Khóa (Blocked). Khi một hệ thống nhúng thời gian thực chạy,
mỗi task thay đổi từ trạng thái này đến trạng thái khác theo quy luật
logic của một trạng thái hữu hạn đơn giản (Finite state machine
(FSM)).
Về cơ bản, 3 trạng thái chính được sử dụng trong hầu hết các
hệ thống Kernel sử dụng phương pháp lịch trình thay thế.
(preemptive – scheduling).

9


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

1.3.3 Cấu trúc của một Task:

Hình 9: Hiện thực cấu trúc của một Task

2.

 Chạy đến kết thúc Task (Run – to – completion Task)
Một ví dụ của Run – to – completion Task là Task khởi tạo
ở cấp ứng dụng (application level). Task khởi tạo có nhiệm vụ khởi
tạo ứng dụng và tạo ra các dịch vụ, Tasks, và một số đối tượng của
Kernel.
 Vòng vô tận Task (Enless-Loop Task)

Một cấu trúc Enless-Loop Task bao gồm cả phần code khỏi
tạo nhưng phần khởi tạo chỉ cần một lần, sau đó sẽ là vòng lặp vô
tận.
Một thành phần không thể thiếu của vòng lặp vô tận là một
hay nhiều blocking call nẳm trong vòng lặp. Những blocking call
này cho phép các Task có độ ưu tiên thấp hơn có thể chạy được.
Tìm hiểu về SWI

2.1

Định nghĩa SWI
SWI (software interrupt) là một ngắt gây ra bởi phần mềm, thường là
bằng một chương trình trong chế độ người dùng.

2.2

Độ ưu tiên SWI trong hệ thống

10


Hệ điều khiển thời gian thực

Idle

SVTH: Nhóm 1

Task

SWI







HWI

Thời gian xử lí linh hoạt
Thường ở “tỉ lệ khung hình”
Chu kỳ là mini giây
Mức độ ưu tiên

Hình 10: Độ ưu tiên SWI trong hệ thống

2.3

CPU chỉ thực hiện một lệnh ở một thời điểm nên nó chỉ có thể tạm
ngưng việc thực thi một tiến trình đang chạy để thực thi một tiến trình khác rồi
sau đó quay trở về thực thi tiếp tiến trình đang bị tạm ngưng.
Khi một ngắt xuất hiện, việc thực thi trương trình chính tạm thời bị dừng
và CPU thực hiện rẽ nhánh đến trình phục vụ ngắt ISR. Ta có thể nói chương
trình chính được thực thi ở mức nền còn ISR được thực thi ở mức ngắt.
Mỗi một nguyên nhân dẫn đến ngắt phải được thông qua thanh ghi cho
phép ngắt IE (interrupt enable).
Ưu tiên ngắt: Các ngắt có mức ưu tiên cao hơn sẽ được phục vụ trước
nhờ thanh ghi IP (interrupt priority).
Quy tắc lập lịch trình (Scheduling Rules)

Hình 11: Quy tắc lập lịch trình

Biểu đồ dưới đây cho thấy độ ưu tiên được sắp xếp theo thứ tự tăng dần từ
dưới lên trên với Hwi có ưu tiên cao nhất.
Trong hình trên SWI có 2 quá trình, swi_a (p1) và swi_b (p2) có độ ưu tiên
cao hơn.

11


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

Khởi đầu swi_a đang ở trạng thái running và sau đó Hwi yêu cầu một ngắt
swi_post (swi_b). Khi nhận được yêu cầu ngắt từ Hwi thì lập tức swi_b từ trạng
thái ready chuyển sang trạng thái running. Trong khi đó swi_a đang ở hàng đợi
sẵn sàng, khi tiến trình swi_b kết thúc thì swi_a sẽ quay về trạng thái running.

2.4

Hình 12: Kỹ thuật FIFO
Chiến lược FIFO: CPU được cấp phát cho tiến trình đầu tiên trong danh
sách sẵn sàng có yêu cầu, và chỉ được giải phóng khi tiến trình đó tự nguyện
hoặc có một yêu cầu xuất nhập.
Sau khi Hwi gửi yêu cầu ngắt swi_post (swi_b) thì CPU được trả lại cho
swi_a (p1), trong khi đó swi_b vẫn ở trạng thái ready và chờ đến khi swi_a thực
hiện xong thì swi_b mới chuyển sang trạng thái running.
Các bước xử lí trong hệ thống
INT!

Hard R/T Process


Post Swi

Swi Ready

Cleanup, RET

Continue Processing

Hình 13: Các bước xử lý trong hệ thống
3.

Động cơ bước

3.1

Khái niệm

3.2

Động cơ bước là một thiết bị cơ - điện dùng để biến đổi xung điện một
chiều thành chuyển động quay cơ học rời rạc. Góc quay và tốc độ quay tương
ứng với số xung và tần số xung điện cấp cho động cơ.
Mỗi vòng quay của trục động cơ được thiết lập bởi một số lượng hữu
hạn các góc bước, là góc quay của roto mỗi khi stato bị đảo cực tính.
Cấu tạo
Động cơ bước có thể được coi là tổng hợp của hai loại động cơ: Động cơ
một chiều không tiếp xúc và động cơ đồng bộ giảm tốc công suất nhỏ.
Động cơ bước có thể được mô tả như là một động cơ điện không dung
chuyển mạch.

12


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

Cụ thể, các mấu trong động cơ là rotor và stato là các nam châm vĩnh
cửu hoặc trong trường hợp của động cơ biến từ trở nó là những khối răng làm
bằng vật liệu nhẹ có từ tính, cho phép chúng quay khá nhanh và với một mô
điều khiển thích hợp cho phép chúng khởi động và dừng lại ở bất kỳ vị trí nào
ta muốn một cách dễ dàng.

Hình 14: Cấu tạo động cơ bước
3.3

Phân loại

3.4

Động cơ bước có thể được phân loại dựa theo cấu trúc hoặc cách quấn
các cuộn dây trên stator.
• Dựa theo cấu trúc rotor, động cơ bước được chia thành 3 loại:
- Động cơ bước từ trở biến thiên.
- Động cơ bước nam châm vĩnh cửu.
- Động cơ bước lai.
• Dựa theo các quấn dây trên stator, động cơ bước được chia thành 2 loại:
- Động cơ bước đơn cực.
- Động cơ bước lưỡng cực.
Ngoài ra, các loại này còn rơi vào một trong hai phương pháp cấu tạo.

Trong phương pháp thứ nhất, rotor có các răng bình thường. Stator có các răng
tượng tự để giữ các cuộn dây. Trong phương pháp thứ hai, mặt răng của rotor
và stator có nhiều răng nhỏ hơn. Ưu điểm của răng nhỏ này là tạo ra các góc
bước nhỏ hơn.
Ưu điểm và nhược điểm
Ưu điểm:
- Khi dùng động cơ bước không cần mạch phản hồi cho điều khiển vị trí
và vận tốc.
- Thích hợp với các thiết bị điều khiển số với khả năng điều khiển số trực
tiếp.
- Dễ dàng điều khiển khởi động, dừng và đảo chiều quay.
- Không có chổi than nên làm việc tin cậy.
Nhược điểm
- Cộng hưởng sẽ xảy ra khi điều khiển không đúng cách.
- Công suất thấp.

13


Hệ điều khiển thời gian thực

4.

SVTH: Nhóm 1

Giới thiệu về Kit Launchpad dùng vi điều khiển TivaC
Tiva™ C Series TM4C123G LaunchPad Evaluation Board là nền tảng
dành cho ARM® Cortex™-M4F. Sử dụng chip TM4C123GH6PMI với tính
năng hỗ trợ USB 2.0, chế độ ngủ đông, module điều xung (MC PWM). Trên kit
có các nút nhấn, LED RGB, dễ dàng nạp và debug chương trình với CCS hoặc

IAR.
Một số tính năng cơ bản:
 Chuyển động kiểm soát PWM
 USB micro-ab kết nối:
 Thiết bị chế độ cấu hình mặc định.
 Máy chủ/OTG chế độ supportable.
 Rgb dẫn người sử dụng.
 Hai người sử dụng các thiết bị chuyển mạch (ứng dụng/Wake)
 Có sẵn I/O đưa ra tiêu đề trên một 0.1-in (2,54-mm) lưới
 Chuyển đổi-lựa chọn nguồn điện:
 ICDI
 Thiết bị USB
 Chuyển đổi thiết lập lại
 Cài đặt sẵn rgb QuickStart ứng dụng
 Được hỗ trợ bởi Tivaware C loạt phần mềm bao gồm thư viện USB và
driver các thiết bị ngoại vi.
 Tiva C loạt TM4C123G bệ phóng Boosterpack xl giao diện, có tính năng
Stackable tiêu đề để mở rộng khả năng của các Tiva C loạt bệ phóng nền tảng
phát triển.

Hình 15: KIT Tiva C Launchpad
14


Hệ điều khiển thời gian thực

II.

Thiết kế


1.

Sơ đồ khối

SVTH: Nhóm 1

Hình 16. Sơ đồ khối
2.

Kết nối phần cứng
KEY nối từ port PA2 đến PA5 của Kit Tiva C.
LED ĐƠN nối từ port PC4 đến PC7 của Kit Tiava C.
Từ KIT TIVA C nối từ port PD0 đến PD3 với đầu vào MẠCH BẢO VỆ
(PC817).
Đầu ra MẠCH BẢO VỆ nối từ chân 1 đến chân 4 của ULN2803 (mạch đệm
dòng).
Chân 15 đến chân 18 của ULN2803 nối với MOTOR BƯỚC.

3.

Thiết kế phần cứng

3.1

Phím nhấn

Hình 17. Khối phím nhấn
15



Hệ điều khiển thời gian thực

SVTH: Nhóm 1

Chức năng:
A1 quay thuận một vòng.
A2 quay nghịch một vòng.
A3 quay nghịch 900.
A4 quay thuận 1800.
3.2

Led đơn

Hình 18. Khối hiển thị
Sử dụng 4 led đơn được tính theo mã nhị phân để hiển thị số vòng quay của
motor bước.
Ví dụ:
0001: giá trị mặc định.
0010: hiển thị mã nhị phân giá trị là 2.
0011: hiển thị mã nhị phân giá trị là 3.

16


Hệ điều khiển thời gian thực

3.3

SVTH: Nhóm 1


Mạch bảo vệ

Hình 19. Khối mạch bảo vệ

3.4

Chức năng: để bảo vệ kit Tiva C.
Mạch đệm dòng

Hình 20. Khối đệm dòng
Chức năng: đệm dòng cho motor bước.
17


Hệ điều khiển thời gian thực

4.

SVTH: Nhóm 1

Phần mềm CCS

Hình 21. Giao diện CCS (Code Composer Studio)
III.

Code điều khiển
/*
* ======== empty.c ========
*/
/* XDCtools Header files */

#include <xdc/std.h>
#include <xdc/cfg/global.h>
#include <xdc/runtime/System.h>

/* BIOS Header files */
#include <ti/sysbios/BIOS.h>

/* TI-RTOS Header files */
#include <ti/drivers/GPIO.h>
// #include <ti/drivers/I2C.h>
// #include <ti/drivers/SPI.h>
// #include <ti/drivers/UART.h>
// #include <ti/drivers/Watchdog.h>
// #include <ti/drivers/WiFi.h>
18


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

/* Board Header file */
#include "Board.h"
// TivaWare Header Files
//-----------------------------------------#include <stdint.h>
#include <stdbool.h>

#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "driverlib/sysctl.h"

#include "driverlib/gpio.h"
#include "inc/hw_ints.h"
#include "driverlib/interrupt.h"
#include "driverlib/timer.h"
#include "string.h"

//---------------------------------------// Prototypes
//---------------------------------------void hardware_init(void);
void quay(void);
void Timer_ISR(void);

//--------------------------------------// Globals
//---------------------------------------

unsigned char code[]={0x08,0x0b,0x02,0x06,0x04,0x05,0x01,0x0a};
int i, k;
unsigned char key;
uint8_t ReadData;
19


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

uint8_t ReadData2;
uint8_t ReadData3;
uint8_t ReadData4;
uint8_t ReadData5;


//--------------------------------------------------------------------------// main()
//--------------------------------------------------------------------------void main(void)
{
hardware_init(); // init hardware via Xware
BIOS_start();
}

//--------------------------------------------------------------------------// hardware_init()
//
// inits GPIO pins for toggling the LED
//--------------------------------------------------------------------------void hardware_init(void)
{
//Set CPU Clock to 40MHz. 400MHz PLL/2 = 200 DIV 5 = 40MHz
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_
16MHZ|SYSCTL_OSC_MAIN);

// setup PORT D 0,1,2,3 lam output motor
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE,
GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
//pa
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
//pa2
20


Hệ điều khiển thời gian thực

SVTH: Nhóm 1


GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_2); // Khai bao
chan PF4 la Input
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_2,
GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
//pa3
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_3); // Khai bao
chan PF4 la Input
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_3,
GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
//pa4
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_4); // Khai bao
chan PF4 la Input
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_4,
GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
//pa5
GPIOPinTypeGPIOInput(GPIO_PORTA_BASE, GPIO_PIN_5); // Khai bao
chan PF4 la Input
GPIOPadConfigSet(GPIO_PORTA_BASE, GPIO_PIN_5,
GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
//timer for 500ms
uint32_t ui32Period;
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2); // enable Timer 2
periph clks
TimerConfigure(TIMER2_BASE, TIMER_CFG_PERIODIC); // cfg Timer 2
mode - periodic
ui32Period = (SysCtlClockGet() /2); // period = CPU clk div 2 (500ms)
TimerLoadSet(TIMER2_BASE, TIMER_A, ui32Period); // set Timer 2 period
TimerIntEnable(TIMER2_BASE, TIMER_TIMA_TIMEOUT); // enables
Timer 2 to interrupt CPU
TimerEnable(TIMER2_BASE, TIMER_A);


// enable Timer 2

}

21


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

void quay(){
//Semaphore_pend(LEDSem, BIOS_WAIT_FOREVER); // wait for Sem from
ISR
ReadData2 = GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_2); // Doc gia
tri chan PA
ReadData3 = GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_3); // Doc gia
tri chan PA
ReadData4 = GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_4); // Doc gia
tri chan PA
ReadData5 = GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_5); // Doc gia
tri chan PA
if ((ReadData2&0x04)==0) //quay thuan 1 vong
{
for(i=0;i<400;i++){
int st=i%8;
GPIOPinWrite(GPIO_PORTD_BASE, 0x0f,code[st]&0x0f);
SysCtlDelay(80000);
}

}
else if ((ReadData3&0x08)==0)//quay thuan 1 vong
{
for(i=400;i>0;i--){
int st=i%8;
GPIOPinWrite(GPIO_PORTD_BASE, 0x0f,code[st]&0x0f);
SysCtlDelay(80000);
}
}
else if ((ReadData4&0x10)==0)//quay thuan 1/2 vong
{
for(i=200;i>0;i--){
int st=i%8;
GPIOPinWrite(GPIO_PORTD_BASE, 0x0f,code[st]&0x0f);
22


Hệ điều khiển thời gian thực

SVTH: Nhóm 1

SysCtlDelay(80000);
}
}
else if ((ReadData5&0x20)==0)//quay thuan 1/4 vong
{

for(i=100;i>0;i--){
int st=i%8;
GPIOPinWrite(GPIO_PORTD_BASE, 0x0f,code[st]&0x0f);

SysCtlDelay(80000);
}
}
}
void Timer_ISR(void)
{
TimerIntClear(TIMER2_BASE, TIMER_TIMA_TIMEOUT); // must clear
timer flag FROM timer
Swi_post(mtstep);
}

Các thành phần:
HWI là Timer tạo xung 500ms để post SWI.
SWI khi đươc gọi thì đọc các ngõ vào. Xét điều kiện cho motor quay.

23


Hệ điều khiển thời gian thực

IV.

Kết quả đánh giá

1.

Kết quả đạt được

SVTH: Nhóm 1


Mạch điều khiển động cơ bước hoạt động tốt, hoàn thành yêu cầu đề tài đặt ra.
2.

Ưu điểm và hạn chế:
Ưu điểm:
Phần cứng được thiết kế theo dạng module nên dễ kiểm tra lỗi.
Mạch hoạt động nhanh và chính xác.
Hạn chế:
Lập trình trên phần mềm CCS còn hạn chế.
Phần cứng chưa tối ưu.

3.

Đề nghị
Cần nhiều thời gian hơn để tìm hiểu về ngôn ngữ CCS trên Kit Tiva C
cũng như hoạt động của động cơ bước và các cách kết nối cần thiết để điều
khiển được động cơ bước.
CÁM ƠN
Nhóm xin chân thành cám ơn sự hướng dẫn nhiệt tình của Thầy Nguyễn
Khắc Nguyên đã hướng dẫn tận tình và giúp đỡ nhóm chúng em trong quá trính
thực hiện đồ án. Nhóm cũng xin cám ơn các bạn trong lớp đã đóng góp ý kiến
và giải thích những chỗ chưa hiểu để thực hiện đồ án này.
TÀI LIỆU THAM KHẢO
/> /> />
24


Hệ điều khiển thời gian thực

SVTH: Nhóm 1


BẢNG CÔNG VIỆC CỦA CÁC THÀNH VIÊN
BUỔI

1
2
3
4
5
6
7
8
9
10
11
12






Thành viên trong nhóm
Lý Trường Giang














Tăng Vũ Hải













Thiết kế mạch và làm mạch thực tế:
Thuyết trình:
Bài báo cáo:
Powerpoint:
Viết code CCS:

Nguyễn Trọng Minh














Nguyễn Trọng Minh + Tăng Vũ Hải
Lý Trường Giang
Tăng Vũ Hải + Lý Trường Giang
Nguyễn Trọng Minh
Cả nhóm

25


×