Tải bản đầy đủ (.docx) (70 trang)

HAUI-ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC CNKT ĐIỆN TỬ VIỄN THÔNG: THIẾT KẾ BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TỪ XA DÙNG STM32F103C8T6

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 (2.67 MB, 70 trang )

BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
------------------------------------

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC CNKT ĐIỆN TỬ - VIỄN THÔNG

THIẾT KẾ BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TỪ XA

CBHD
Sinh viên
Mã sinh viên

Hà Nội – 2020

: ThS. Phạm Văn Chiến
: Nguyễn Văn Lâm
: 1141050117


NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................


.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Hà Nội, ngày… tháng… năm 2020
Người nhận xét


MỤC LỤC


DANH MỤC HÌNH ẢNH

DANH MỤC BẢNG


DANH MỤC VIẾT TẮT

Viết tắt

Tiếng anh

Tiếng việt

I2C


Inter-Integrated Circuit

Truyền thông nối tiếp 2 dây

EEPROM

Electrically

Bộ nhớ không mất dữ liệu
khi ngừng cung cấp điện

Erasable Programmable
Read – Only Memory
GPIO

General-Purpose
Input/Output

Nơi giao tiếp chung giữa tín
hiệu ra và tín hiệu vào

PCB

Printed Circuit Board

Mạch in

SMS

Short Message Services


Tin nhắn

WIFI

Wireless Fidelity

Mạng kết nối không dây


LỜI CẢM ƠN
Em chân thành cám ơn quý thầy, cô trường Đại Học Cơng Nghiệp Hà
Nội đã tận tình dạy dỗ trong suốt những năm qua. Trong đó phải kể đến quý
thầy cô trong khoa điện tử đã tạo điều khiện cho em thực hiện đồ án tốt
nghiệp này.
Đặc biệt, em xin chân thành cảm ơn giáo viên hướng dẫn ThS. Phạm
Văn Chiến đã tận tình giúp đỡ em trong quá trình lựa chọn và hỗ trợ em trong
quá trình thực hiện đề tài. Cung cấp cho em những kiến thức quý báu cũng
như những lời khuyên cực kỳ hữu ích. Tạo động lực cho em hoàn thành tốt
nhiệm vụ của mình.
Em xin cám ơn những ý kiến đóng góp của các thầy cô giáo đã giúp em
thực hiện đề tài này. Để hoàn thành em đã nỗ lực nghiên cứu, thiết kế và chế
tạo, nhưng do thời gian và kiến thức cịn hạn chế nên khơng thể tránh khỏi
những thiếu sót. Em rất mong nhận được những lời góp ý chân thành từ thầy
cơ và các bạn để có thêm những hiểu biết và hoàn thiện hơn trong quá trình
làm việc sau này.
Em xin chân thành cảm ơn!


7


MỞ ĐẦU
Ngày nay với sự phát triển của ngành điện tử và ứng dụng điện tử đã
giúp sự sáng tạo của con người trở thành hiện thực. Các lĩnh vực của cuộc
sống đều áp dụng những thiết bị điện tử và dường như nhìn đâu trong gia đình
chúng ta cũng có thiết bị điện tử. Ngành điện tử và ứng dụng đã tạo chỗ đứng
và khẳng định được tầm quan trọng của mình đối với nhu cầu của con người.
Với những ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ
biến, từ những ứng dụng đơn giản như điều khiển 1 chốt đèn giao thông định
thời, đếm sản phẩm trong một dây chuyền sản xuất, điều khiển tốc độ động cơ
điện một chiều, một đồng hồ thời gian thực. Đến những ứng dụng phức tạp
như hệ thống điều khiển robot, bộ kiểm soát trong nhà máy hoặc hệ thống
kiểm soát các máy năng lượng hạt nhân. Các hệ thống tự động trước đây sử
dụng nhiều công nghệ khác nhau như các hệ thống tự động hoạt động bằng
nguyên lý khí. Các thiết bị, hệ thống này có chức năng xử lý và mức độ tự
động thấp so với các hệ thống tự động hiện đại được xây dựng trên nền tảng
của các hệ thống nhúng.
Trong nhiều năm trước, các dòng vi điều khiển 8051 được sinh viên sử
dụng nhiều với tính năng đơn giản, dễ. PIC với ưu thế tốc độ cao, chi phí thấp
hơn cũng được nghiên cứu, sử dụng nhiều. Nhưng một vài năm trở lại đây có
một dịng vi điều khiển mới càng ngày càng nắm vị trí quan trọng trong các
lĩnh vực với tốc độ xử lý cao và có nhiều tính năng vượt trội nên trong đề tài
tốt nghiệp này, em đã sử dụng vi điều khiển STM32F103C8T6 thuộc họ vi
điều khiển ARM để thực hiện đề tài “Thiết kế bộ điều khiển thiết bị điện từ
xa”.


8

CHƯƠNG 1. TỔNG QUAN

1.1. Lý do chọn đề tài
Ngày nay cùng với sự phát triển mạnh mẽ của các ngành khoa học kĩ
thuật, công nghệ kỹ thuật điện tử mà trong đó đặc biệt là kỹ thuật điều khiển
tự động đóng vai trị quan trọng trong lĩnh vực khoa học kỹ thuật, quản lý,
công nghiệp, cung cấp thông tin… Do đó, là một sinh viên chun ngành
Cơng Nghệ Kỹ Thuật Điện Tử Truyền Thông chúng ta phải biết nắm bắt xu
hướng và vận dụng những kiến thức đã được học để phát triển nó một cách có
hiệu quả nhằm góp phần vào sự phát triển nền khoa học kỹ thuật thế giới nói
chung và trong sự phát triển kỹ thuật điện tử, truyền thơng nói riêng. Bên
cạnh đó cịn là sự thúc đẩy sự phát triển của nền kinh tế nước nhà.
Như chúng ta đã biết, tại mỗi hộ gia đình Việt Nam hiện nay sử dụng
rất nhiều thiết bị điện như: Tivi, tủ lạnh, quạt điện, hệ thống đèn chiếu sáng,
hệ thống rèm cửa tự động, bình nóng lạnh, hệ thống âm thanh, hế thống cửa
tự động…Đa phần những thiết bị này khi sử dụng đang gây ra những sự bất
tiện vì chúng hoạt động độc lập và địi hỏi người sử dụng phải chủ động đến
từng thiết bị để điều khiển. Thử tưởng tượng, khi đang xem tivi bạn muốn tắt
đèn, bật quạt và kéo rèm cửa, thì bạn sẽ phải đứng dậy đi đến những thiết bị
đó để bật/ tắt chúng. Điều đó thật bất tiện phải không? Nhưng nếu chỉ cần
ngồi tại ghế xem tivi mà có thể bật/ tắt được những thiết bị này thì sẽ rất tiện
lợi.
Chính vì những bất cập trên cùng với xu hướng công nghệ nên em chọn
đề tài “ Thiết kế bộ điều khiển thiết bị điện từ xa” để có thể điều khiển
những thiết bị điện được thuận tiện hơn.


9

1.2. Tìm hiểu các bộ điều khiển thiết bị điện và rèm cửa trên thị trường
1.2.1. Một số bộ điều khiển thiết bị điện trên thị trường
Trên thị trường hiện nay có nhiều bộ điều khiển thiết bị điện trong gia

đình rất đa dạng phong phú từ mẫu mã cho tới giá tiền với nhiều phương thức
điều khiển khác nhau. Sau đây là một số bộ điều khiển thông dụng:
1.2.1.1. Bộ điều khiển sử dụng sóng vơ tuyến.
Là loại điều khiển từ xa xuất hiện đầu tiên, đến nay vẫn giữ một vai trò
quan trong trong đời sống. Đây là loại điều khiển sử dụng ở khơng gian lớn,
có vật che chắn.
Nó điều khiển các thiết bị điện bằng cách nhấn bất kỳ phím nào trên
điều khiển từ xa, tạo ra các tín hiệu vơ tuyến tương ứng và các tín hiệu này
được nhận bởi phần thu từ đó điều khiểu đầu ra.
- Ưu điểm:
+ Phạm vi truyền tải rộng( khoảng 30 mét).
+ Có thể đi xuyên tường.
- Nhược điểm:
+ Trong khơng gian sẽ có vơ số thiết bị có tín hiệu vơ tuyến,
điều này có thể gây ra nhiễu trong quá trình điều khiển.
+ Mới chỉ đáp ứng khả năng bật hoặc tắt thiết bị điện.

Hình 1.1: Bộ điều khiển từ xa sử dụng sóng vơ tuyến


10

1.2.1.2. Bộ điều khiển sử dụng internet
Bộ điều khiển có thể bật tắt thiết bị điện từ xa ở bất kì nơi đâu có sóng
wifi – 3G dùng cho điện thoại, máy tính bảng, laptop,… có thể truy cập vào
phần mềm từ đó theo dõi được trạng thái hiện tại của thiết bị điện ở bất kỳ nơi
đâu.
Ưu điểm:
+ Điều khiển thiết bị điện ở khoảng cách không giới hạn.
+ Quản lý rất tốt thiết bị điện qua phần mềm.

+ Giao diện dễ dàng khi sử dụng.
- Nhược điểm:
+ Chỉ hoạt động khi có kết nối internet.
+ Mới chỉ đáp ứng khả năng bật hoặc tắt thiết bị điện.

Hình 1.2: Bộ điều khiển sử dụng internet
1.2.1.3. Bộ điều khiểu từ xa sử dụng tin nhắn SMS và cuộc gọi đến
Điều khiển các thiết bị điện bằng tin nhắn hoặc cuộc gọi tại vị trí có
phủ sóng mạng điện thoại di động.Tự động gửi lại tin nhắn báo trạng thái của
thiết bị .
- Ưu điểm:
+ Sóng điện thoại bao phủ rộng khắp, nhờ thế bạn có thể điều
khiển được hệ thống tưới dù ở bất kì đâu.
- Nhược điểm:
+ Bạn phải tốn kém vì phải nạp thẻ (nạp tiền) cho sim.


11

+ Mới chỉ đáp ứng khả năng bật hoặc tắt thiết bị điện.

Hình 1.3: Bộ điều khiển sử dụng SMS và cuộc gọi
1.2.1.4. Bộ điều khiển từ xa sử dụng sóng hồng ngoại
Thiết bị sử dụng sóng hồng ngoại để điều khiển. Đây là loại điều khiển
được sử dụng ở khơng gian hẹp và khơng có vật che chắn. Thích hợp để điều
khiển những thiết bị trong một căn phịng.

Hình 1.4: Bộ điều khiển từ xa sử dụng sóng hồng ngoại
- Ưu điểm:
+ Hoạt động ổn định trong phạm vi dưới 10 mét.

- Nhược điểm:
+ Không thể đi xuyên vật cản.
+ Khoảng cách truyền còn hạn chế.
+ Mới chỉ đáp ứng khả năng bật hoặc tắt thiết bị điện.


12

1.2.1.5. Nhận xét từ thực tế.
Sau khi tìm hiểu qua những bộ điều khiển thiết bị điện trên thị trường
thì chúng đều có ưu điểm là dễ dàng sử dụng, gọn nhẹ và điều khiển được ở
khoảng cách xa. Nhưng lại chỉ đáp ứng nhu cầu bật tắt thiết bị.
Hiện nay hệ thống rèm cửa tự động hay rèm cửa thơng minh trong hộ
gia đình đang được sử dụng phổ biến, vì thế những bộ điều khiển cần có khá
năng điều khiển cả hệ thống rèm cửa tự động.
1.2.2. Một số loại rèm cửa trên thị trường
Rèm cửa hay màn cửa theo định nghĩa chung nhất là vật dùng để che
cửa sổ, tác dụng chính là cản sáng, che nắng và làm đẹp. Hiện nay trên thị
trường chủ yếu được phân loại thành rèm cửa truyền thống và rèm cửa tự
động.
1.2.2.1. Rèm truyền thống
Rèm truyền thống có thế mạnh là chi phí rẻ, dễ dàng chế tạo và lắp đặt.
Nhưng loại rèm này khơng có khả năng tự vận hành.
1.2.2.2.

Hình 1.5: Rèm vải bng
Rèm tự động

Hình 1.6: Rèm cầu vồng



13

Rèm tự động hay cịn gọi là rèm thơng minh, người sử dụng có thể điều
khiển, điều chỉnh rèm tự xa mà khơng hề tốn chút sức lực. Ngồi ra, rèm cửa
tự động cũng làm cho ngôi nhà của bạn thêm phần hiện đại hơn.

Hình 1.7: Rèm vải bng tự động

Hình 1.8: Rèm cuốn tự động
1.3. Nội dung nghiên cứu
1.3.1. Đối tượng nghiên cứu
- Vi điều khiển STM32F103C8T6.
- IC PT2248.
- IC EEPROM AT24C02.
- IC L298n
- Giao tiếp I2C.
- Cảm biến vật cản.
- Phương thức điều khiển bằng sóng hồng ngoại.
1.3.2. Tính năng của sản phẩm cần đặt được
- Gửi được tín hiệu hồng ngoại trong khoảng cách 5 m đến 7 m.
- Sản phẩm bật tắt được các thiết bị điện.


14

- Sản phẩm điều khiển được rèm cửa từ xa.
1.3.3. Sơ đồ khối tổng quan của hệ thống

Hình 1.9: Sơ đồ khối tổng quan

- Khối nguồn: Cung cấp điện áp phù hợp cho hệ thống hoạt động.
- Khối điều khiển trung tâm: Sử dụng vi điều khiển STM32F103C8T6.
- Khối đầu vào: Cảm biến vật cản, điều khiển phát hồng ngoại, led thu
hồng ngoại, nút nhấn và khối lưu trữ.
- Khối đầu ra: Khối động cơ , khối relay, led báo và khối lưu trữ.
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1. Điều khiển từ xa sử dụng IC PT2248
2.1.1. Giới thiệu
Tia hồng ngoại là các bức xạ điện từ mà mắt ta khơng nhìn thấy
được( cịn gọi là các bức xa ngồi vùng khả biến), có bước sóng từ 700nm
dến 1mm. Mọi vật có nhiệt độ lớn hơn 0( - 273,15) đều phát ra tia hồng ngoại.
Dùng để sấy, sưởi; chụp ảnh hay quay phim ban đêm; theo dõi nhiệt độ cơ thể
trong y tế và truyền tín hiệu điều khiển trong các bộ điều khiển từ xa.

Hình 2.10: Hình ảnh điều khiển hồng ngoại thực tế


15

Điều khiển từ xa là một thiết bị phát sóng hồng ngoại, sử dụng trong
các mục đích điều khiển từ xa( tầm khoảng 7m). Điều khiển từ xa nhận lệnh
từ người điều khiển thơng qua các phím bấm, sau đó xuất ra một khung dữ
liệu ứng với phím được bấm.
Để xây dựng điều khiển hồng ngoại chúng ta sử dụng IC PT2248 [1].
Đây là một mạch điện sử dụng công nghệ CMOS, là linh kiện phát xạ mã hóa
tia hồng ngoại rất thơng dụng, có điện áp nguồn là 2,2V ~ 5,0V.
2.1.2. Sơ đồ chân

Hình 2.12: Sơ đồ chân IC PT2248
Hình 2.11: Hình ảnh IC PT2248

IC PT2248 sử dụng 16 chân vỏ nhựa kiểu cắm thẳng hàng.
- Vss là đầu âm của dòng điện nối đất.
- XT và /XT: là đầu vào của bộ phận dao động bên trong.
- K1 ~ K6 là những đầu vào tín hiệu của bàn phím kiểu ma trận.
- T1 ~ T3 kết hợp với các chân K1 ~ K6 có thể tạo thành 18 phím.
- CODE là đầu vào của mã số, dùng mã số để truyền tải và tiếp
nhận.
- TEST là đầu đo thử, bình thường khi sử dụng có thể bỏ trống.
- TXOUT là đầu ra tín hiệu truyền tải tín hiệu, 12 bit thành một
chu kỳ, sử dụng sóng mang 38KHz để điều chế.
- Vcc là đầu dương nguồn điện 2,2V ~ 5,0V.


16

2.1.3. Nguyên lý hoạt động
Để có thể phát đi xa, ta cần có một xung có tần số Fc = 38 Khz để làm
sóng mang, nhưng trên thị trường khó tìm được thạch anh đúng tần số nên ta
chọn tần số của thạch anh là 455 Khz cho bộ tạo dao động. Sau đó tần số sẽ
được đưa qua bộ phân tần để chia nó ra thành 12 lần.
Tín hiệu mà PT2248 gửi đi là một chuỗi bit gồm 3 phần: Phần code
bits, phần continuous single – shot code và phần key input code.

Hình 2.13: Khung truyền mã của một nút nhấn
Lệnh phát ra của do mã 12 bit tạo thành, trong đó C1 ~ C3 ( CODE) là
Code Bits. Các bit mã C1, C2, C3 được thực hiện bằng việc nối hay không
nối các chân T1, T2, T3 với các chân code bằng các diode. Nếu nối qua diode
thì các C tương ứng sẽ thành 1 và là 0 khi không được nối. H, S1, S2 là đại
diện cho mã số phát xạ liên tục( Continuos single code) hoặc mã số phát xạ
không liên tục( Single-shot code), chúng đối xứng với các phím T1, T2, T3.

D1 đến D6 là mã số của nút nhấn( Key input code). Dưới đây là mã số cụ thể
của từng nút nhấn:
2.1.4. Dạng xung phát ra
Trong một bit, tỉ lệ của phần xung dương là ¼ đại diện cho bit 1, khi tỉ
lệ này là ¾ thì đại diện cho bit 0.
Việc phát ra của mỗi một chu kì theo thứ tự nối tiếp C1, C2, C3, H, S1,
S2, D1, D2, D3, D4, D5, D6 có tổng chiều dài đo được sấp sỉ 21 ms. Gọi độ
dài một bit là 4a, vậy ta tính được a sấp sỉ 0,4375 ms.


17

Bảng 2.1: Mã cụ thể của từng phím

2.2. Led thu hồng ngoại Hình
TL1838
2.14: Dạng xung đầu ra
2.2.1. Giới thiệu
Trên thị trường có nhiều chủng loại led thu hồng ngoại [2] khác nhau, từ
led thu 2 chân cho đến led thu 3 chân. Led thu 3 chân gọi là phototransistor là
loại có 3 chân, nó có độ nhạy cao hơn. Đối với led thu 2 chân là photodiode
thì cấp nguồn ngược, khi có anh sáng hồng ngoại nó sẽ dẫn. Cịn đối với
transistor thì nó có 3 chân riêng biệt: V+, GND, OUT.

Hình 2.15: Hình ảnh thực tế TL1838
2.2.2. Thơng số chính của TL1838
- Làm việc ở mức điện áp: 2,7 ~ 5,5V.
- Tần số hoạt động: 38KHz.
- Dòng tiêu thụ: 1,4 mA.
- Khoảng cách nhận biết: Khoảng 15m với góc 45.

- Tương thích với TTL và CMOS.


18

- Có tích hợp tiền khuyếch đại.
2.3. Cảm biến vật cản
2.3.1. Giới thiệu
Cảm biến vật cản[3] có khả năng thích nghi với mơi trường, có một cặp
truyền và nhận tia hồng ngoại.Tia hồng ngoại phát ra một tần số nhất định, khi
phát hiện hướng truyền có vật cản( mặt phản xạ), phản xạ vào đèn thu hồng
ngoại, sau khi so sánh, đèn sẽ sáng lên, đồng thời cho tín hiệu đầu ra.

Hình 2.16: Module cảm biến thu phát hồng ngoại
2.3.2. Thơng số kỹ thuật và tính năng
- Bộ so sánh LM393, làm việc ổn định.
- Điệp áp làm việc: 3,3 V - 5 V DC.
- Khi bật nguồn, đèn báo nguồn màu đỏ sáng.
- Kích thước: 3,2 cm x 1,4 cm.
- Khoảng cách làm việc: 2 ~ 5 cm.
2.4. Giới thiệu về vi điều khiển ARM
2.4.1. Giới thiệu sơ lược về họ vi điều khiển ARM – CORTEX
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ
thơng dụng như F0, F1, F2, F3, F4… Dịng ARM CORTEX [4] là một 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ệ. Khơng
giống như các chip ARM khác, dịng cortex là một lõi xử lí hồn thiện, đưa ra
một chuẩn CPU và kiến trúc hệ thống chung. STM32 thiết kế dựa trên dịng
Cortex – M3, có khả năng đáp ứng các ứng dụng tiêu thụ năng lượng thấp và
tính điều khiển thời gian thực khắt khe. STM32F103 thuộc họ F1 với lõi là



19

ARM CORTEX-M3. STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là
72Mhz. Có chí phí cũng khá rẻ so với các loại vi điều khiển có cùng chức

Hình 2.17: Kiến trúc vi xử lí ARM Cortex – M3
năng tương tự. Mạch nạp cũng như cơng cụ lập trình khá đa dạng và dễ sử
dụng.
2.4.1.1. Giới thiệu về vi điều khiển STM32F103C8T6
Hiện nay trên thị trường có rất nhiều các họ vi điều khiển được sử dụng
như 8051, PIC, AVR, … Tuy nhiên với sự xu hướng tạo ra các sản phẩm cần
phải đáp ứng nhanh các yêu cầu cũng như khả năng làm việc chính xác nên
em đã quyết định chọn họ vi điều khiển ARM để mở rộng vốn kiến thức và
phát triển các ứng dụng trên thiết bị này và cụ thể là STM32F103C8T6 cùng
với một số nguyên nhân khác như:
- Họ vi điều khiển này có thể được tìm mua dễ dàng trên thị trường ở
Việt Nam, giá thành cũng khơng q đắt.

Hình 2.18: STM32F103C8T6


20

- Số lượng người sử dụng vi điều khiển này khá phổ biến và rộng rãi, có
nhiều cộng đồng chia sẻ và nguồn tài liệu lớn.
- Có sự hỗ trợ của nhà sản xuất về trình biên dịch, cơng cụ lập trình, nạp
chương trình từ đơn giản đến phức tạp, đặc biệt hỗ trợ debug chương
trình bằng mạch nạp rất tốt.
- Có tích hợp các ngoại vi hay chuẩn giao tiếp như (GPIO, I2C, SPI,

ADC, USB, Ethernet, …).
2.4.1.2. Sơ đồ chân

Hình 2.19: Sơ đồ chân STM32F103C8T6
2.4.1.3. Thơng số kỹ thuật
- STM32F103C8T6 hiệu suất cao và tiêu thụ năng lượng thấp.
- Đây là vi điều khiển 32 bit cung cấp những tính năng sau:
+ Lõi ARM Cortex M3.
+ 64K bytes bộ nhớ chương trình dạng Flash và 20K Byte SRAM.
+ Độ rộng bus dữ liệu là 32 bit.
+ Tần số đồng hồ tối đa là 72MHz.
+ Độ phân giải ADC 12 bit.
+ Số lượng kênh ADC là 10 kênh.
+ Số lượng chân I/O là 37 I/O.


21

+ Điện áp cấp vận hành từ 2V đến 3,6V.
+ Nhiệt độ làm việc tối thiểu - 40C
+ Nhiệt độ làm việc tối đa + 85C
+ Loại giao tiếp CAN, I2C, SPI, USART, USB.
+ Số bộ hẹn giời timer là 4 bộ.
+ Khơng có bộ nhớ EEPROM.
2.4.2. Cơng cụ lập trình
2.4.2.1. Phần mềm KeilC v5
Keilc v5 là một phần mềm hỗ trợ cho người dùng trong việc lập trình
cho vi điều khiển các dòng khác nhau(Atmel, AVR,…). Đây là một chương
trình máy tính làm cơng việc dịch một chuỗi các câu lệnh được viết bằng
ngơn ngữ lập trình( ở đây có thể là C hoặc Assembly) thành một chương trình

ở dạng một ngơn ngữ máy tính( ngơn ngữ máy tính hiểu được).
- Ưu điểm:
+ Trình biên dịch này khá nhanh, mạnh, được nhiều người sử dụng,
hỗ trợ nhiều loại debugger, tối ưu hóa cao cho các ứng dụng có
bộ xử lý lõ ARM.
+ Hỗ trợ cho nhiều loại kiến trúc MCU.
- Nhược điểm:
+ Là phần mềm có phí, phiên bản thử nghiệm bị giới hạn nhiều
tính năng, khơng hiệu quả cho những chương trình lớn, phức
tạp…
2.4.2.2. Bộ thư viện STM32F10x_StdPeriph_Lib_V3.5.0
Đây là gói thư viện chuẩn phục vụ cho việc lập trình ARM STM32.
Thư viện gồm nhiều thu viện C dành cho ngoại vi của STM32. Phù hợp với
các developer có kiến thức về C tốt.
- Ưu điểm:
+ Tối ưu mức trung bình, phù hợp với nhiều trường hợp khác nhau
+ Không cần tác động trực tiếp lên thanh ghi


22

+ Hỗ trợ 100% ngoại vi
- Nhược điểm:
+ Chỉ hỗ trợ 1 số dòng STM32 nhất định.
2.4.3. Ngoại vi GPIO
Generral – purpose Input/ Output( GPIO)[5] được hiểu là nơi giao tiếp
chung giữa tín hiệu ra và tín hiệu vào, một chức năng ngoại vi cơ bản của các
loại vi điều khiển.
Nó cũng tương tự như các dịng vi điều khiển 8 bit như 8051, PIC… Ở
các vi điều khiển 32 bit như ARM thì có đến 16 chân I/O trên 1 port được

đánh số từ 0 đến 15 tương ứng mỗi chân là 1 bit. STM32F103C8T6 gồm có 3
port chính là PORTA, PORTB và PORTC.

Hình 2.20: cấu trúc cơ bản của một cổng I/O
2.4.3.1. Các chế độ của GPIO của STM3
- Input float: Cấu hình chân I/O là ngõ vào và để nổi.
- Input pull-up: Cấu hình chân I/O là ngõ vào và có trở kéo lên nguồn.
- Input pull-down: Cấu hình chân I/O là ngõ vào và có trở nối xuống
mass.
- Analog: Cấu hình chân I/O là analog dùng cho các mode có sử dụng
ADC và DAC.


23

- Output open – drain: cấu hình chân I/O là ngõ ra, khi output control = 0
thì N- MOS sẽ dẫn, chân I/O sẽ nối VSS, còn khi output control = 1 thì
P-MOS và N- MOS đều khơng dẫn, chân I/O được để nổi.
- Output push-pull: cấu hình chân I/O là ngõ ra, khi output control = 0 thì
N-MOS sẽ dẫn, chân I/O sẽ nối VSS, còn khi output control = 1 thì PMOS dẫn, chân I/O nối với VDD.
- Alternate function push-pull: sử dụng chân I/O vừa là ngõ ra, vừa là
ngõ vào, tuy nhiên sẽ khơng có trở kéo lên và kéo xuống ở input, chức
năng output giống Output push-pull. Ngồi ra nó cịn sử dụng chức
năng remap.
- Alternate function open-drain: sử dụng chân I/O vừa là ngõ ra, vừa là
ngõ vào, tuy nhiên sẽ khơng có trở kéo lên và kéo xuống ở input, chức
năng output giống Output open-drain.
2.4.3.2. Lập trình với ngoại vi GPIO
- Xuất dữ liệu ra các chân vi điều khiển:
+ Mức logic 0: GPIO_ResetBits( GPIOx, GPIO_Pin_y);

+ Mức logic 1: GPIO_SetBits( GPIOx, GPIO_Pin_y);
- Đọc tín hiệu đầu vào trên vi điều khiển:
+ GPIO_ReadInputData( GPIOx) & ( 1 << y);
- Đọc tín hiệu đầu ra trên vi điều khiển:
+ GPIO_ReadOutputDataBit(GPIOx, GPIO_Pin_y);
Trong đó: x là tên PORT: A, B; y là tên PIN: 0, 2, 3,…., 15.
Ví dụ: Ghi mức logic 1 trên PIN 13 PORT C: GPIO_SetBits( GPIOC,
GPIO_Pin_13);
2.4.4. Ngoại vi Systick
Ngoại vi Systick[6] là một module của nhân ARM – CORTEX M3, cũng
chính là một timer đếm lùi 24 bit. Module này thường được sử dụng cho
những ứng dụng hệ điều hành, tạo thời gian trễ với độ chính xác cao.


24

Systick là một bộ đếm xuống 24 bits. Giá trị đếm được tự động nạp lại
khi bộ đếm đếm về 0. Nguồn Clock có thể chọn từ nguồn Clock của hệ thống(
AHB) hoặc nguồn Clock của hệ thống /8( AHB/8). Systick sẽ đếm từ giá trị
nạp lại( được khởi tạo sẵn) về 0 và giá trị này tự động được nạp lại trong chu
kỳ đếm tiếp theo.
2.4.4.1. Các thanh ghi trạng thái và điều khiển Systick
- Thanh ghi trạng thái và điều khiển Systick( CTRL):

Hình 2.21: Thanh ghi trạng thái và điều khiển Systick
+ Khi reset giá trị của CTRL sẽ bằng 0.
+ Bit COUNT FLAG: Được set lên 1 khi bộ đếm về 0.
+ Bit CLKSOURCE: Lựa chọn nguồn Clock cho SysTick.
CLKSOURE = 1 sử dụng nguồn Clock hệ thống( AHB).
CLKSOURE = 0 sử dụng nguồn Clock hệ thống/ 8( AHB/ 8).

+ Bit TICKINIT: Cho phép một yêu cầu ngoại lệ xảy ra khi bộ đếm
đếm về 0. TICKINIT = 1: Cho phép. TICKINIT = 0: Không cho
phép.
+ Bit ENABLE = 1: Cho phép bộ đếm STK hoạt động. ENABLE = 0:
Không cho phép bộ đếm STK hoạt động.
- Thanh ghi chứa giá trị Reload của SysTick( LOAD):

Hình 2.22: Thah ghi chứa giá trị reload của Systick


25

Khi Reset, giá trị STK_LOAD = 0. Để tạo ra một khoảng thời gian N
chu kỳ xung nhịp thì cần nạp giá trị vào LOAD giá trị: N-1.
- Thanh ghi chứa giá trị đếm hiện tại của SysTick ( VAL):

Hình 2.23: Thanh ghi chứa giá trị đếm hiện tại của Systick
Khi reset giá trị VAL = 0. Thanh ghi VAL chứa giá trị đếm hiện tại của
bộ đếm Systick. Nếu các bạn ghi bất kì một giá trị nào vào thanh ghi này thì
giá trị đếm của Systick sẽ được xóa về 0 và COUNTFLAG cũng bị xóa về 0.
2.4.4.2. Hàm Delay sử dụng Systick
- void Delay_systick_n_ms(uint32_t time): Hàm tạo thời gian delay ms.
void Delay_systick_1_ms(void){
SysTick->LOAD = 72 * 1000 - 1;
SysTick->VAL = 0;
SysTick->CTRL = 5;
while (!(SysTick->CTRL & (1 << 16))) {}}
void Delay_systick_n_ms(uint32_t time)
{
while (time) {

Delay_systick_1_ms();
--time;}}
- void Delay_systick_n_us(uint32_t time): Hàm tạo thời gian delay us.
void Delay_systick_1_us(void){
SysTick->LOAD = 72 - 1;
SysTick->VAL = 0;
SysTick->CTRL = 5;
while (!(SysTick->CTRL & (1 << 16))) {}}
void Delay_systick_n_us(uint32_t time){


×