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

THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG PHÁT HIỆN VẬT CẢN DỰA TRÊN NỀN TẢNG ARDUINO

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 (5.18 MB, 60 trang )

ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA ĐIỆN TỬ - VIỄN THÔNG
---------

HỒ ĐỨC NHẬT TRƯỜNG

THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG
PHÁT HIỆN VẬT CẢN DỰA TRÊN NỀN TẢNG
ARDUINO

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

Huế - 2016


ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA ĐIỆN TỬ - VIỄN THÔNG
---------

HỒ ĐỨC NHẬT TRƯỜNG

THIẾT KẾ HỆ THỐNG RA ĐA SIÊU ÂM TỰ ĐỘNG
PHÁT HIỆN VẬT CẢN DỰA TRÊN NỀN TẢNG
ARDUINO

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

Ngành: Công nghệ Kỹ thuật Điện tử, Truyền thông


NGƯỜI HƯỚNG DẪN: Th.S. PHAN HẢI PHONG


Huế - 2016


4

LỜI CẢM ƠN

Trước tiên em xin gửi lời cám ơn chân thành sâu sắc tới các thầy cô giáo trong
trường Đại học Khoa Học nói chung và các thầy cô giáo trong khoa Điện Tử - Viễn
Thông nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, kinh
nghiệm quý báu trong suốt thời gian qua.
Đặc biệt em xin gửi lời cảm ơn đến thầy Phan Hải Phong, thầy đã tận tình giúp
đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm đồ án tốt nghiệp. Trong
thời gian làm việc với thầy, em không ngừng tiếp thu thêm nhiều kiến thức bổ ích mà
còn học tập được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc, hiệu
quả, đây là những điều rất cần thiết cho em trong quá trình học tập và công tác sau
này.
Sau cùng xin gửi lời cảm ơn chân thành tới gia đình, bạn bè đã động viên, đóng
góp ý kiến và giúp đỡ trong quá trình học tập, nghiên cứu và hoàn thành đồ án tốt
nghiệp.

Huế, Ngày 1 Tháng 5 Năm 2016
Sinh viên thực hiện
(ký và ghi rõ họ tên)

Hồ Đức Nhật Trường



5

MỤC LỤC

.


6

DANH SÁCH CÁC HÌNH VẼ


7

DANH SÁCH CÁC BẢNG


8

DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt

Diễn giải

Dịch nghĩa

IC

Integrated Circuit


Vi mạch

VĐK

Microcontrollers

Vi Điều Khiển

AVR

Advanced Virtual RISC

Một họ vi điều khiển do hãng
Atmel sản xuất

I/O

Input/Output

Vào/ra

LED

Light Emitting Diode

Diode phát quang

PIC


Programable Intelligent
Computer

Chip vi xử lý của hãng
Microchip Technology

ARM

Advanced RISC Machine

Một loại cấu trúc vi xử lý 32
bit và 64 bit

UART

Universal Asynchronous
Receiver Transmitter

Bộ thu phát vạn năng không
đồng bộ

COM

Computer Output on Micro

Cổng dữ liệu

USB

Universal Serial Bus


Một chuẩn kết nối tuần tự đa
dụng trong máy tính

RAM

Random Access Memory

Bộ nhớ truy cập ngẫu nhiên.

EEPROM

Electrically Erasable
Programmable Read-Only
Memory

Chip nhớ không bay hơi

IDE

Intergrated Development
Environment

Môi trường thiết kế hợp nhất

PWM

Pulse Width Modulation

Điều chế theo độ rộng xung


SPI

Serial Peripheral Interface

Giao diện Ngoại vi nối tiếp


9

MỞ ĐẦU
Với sự phát triển mạnh mẽ của khoa học công nghệ ngày nay, các loại vi điều
khiển (VĐK) như AVR (Advanced Virtual RISC) hay PIC (Programable Intelligent
Computer) ngày càng được sử dụng rộng rãi trong công nghiệp cũng như trong nghiên
cứu cơ bản. Vi điều khiển họ Arduino xuất hiện vào năm 2005 đã mở ra một hướng đi
mới cho vi điều khiển trong rất nhiều lĩnh vực. Trong lĩnh vực điều khiển tự động, đối
tượng được điều khiển hoàn toàn tự động thông qua các thiết kế phần cứng gồm mạch
điện điều khiển được lập trình theo một ý đồ xác định từ trước. Trong quá trình xây
dựng hệ thống, bài toán thiết kế mạch điều khiển là một bài toán nan giải cần có lời
giải phù hợp. Trong thời gian gần đây, họ vi điều khiển Arduino nổi lên như một giải
pháp cho vấn đề này. Họ vi điều khiển này có mạch điện nhỏ gọn, rất dễ sử dụng và rất
đa năng có phần cứng đã được tính hợp nhiều chức năng cơ bản và là mã nguồn mở.
Ngoài ra, họ vi điều khiển này sử dụng ngôn ngữ lập trình đơn giản, dễ sử dụng dựa
trên nền Java và tương thích với ngôn ngữ C với thư viện rất phong phú. Với những lý
do trên, Arduino đã và đang được sử dụng rất rộng rãi, phổ biến hiện nay và hứa hẹn
còn phát triển mạnh mẽ trong tương lai.
Trong các hệ thống điều khiển tự động, cảm biến là thành phần không thể thiếu
đóng vai trò hết sức quan trọng vì nó là thiết bị cung cấp thông tin phản hồi từ bên
ngoài cho bộ phận điều khiển trung tâm để đưa ra quyết định phù hợp nhằm nâng cao
chất lượng của quá trình điều khiển. Phạm vi ứng dụng của cảm biến ngày càng được

mở rộng: từ các hệ thống tự động phức tạp, người máy, kiểm tra chất lượng sản phẩm,
tiết kiệm năng lượng, chống ô nhiễm môi trường đến lĩnh vực giao thông vận tải, bảo
quản thực phẩm, ô tô, trò chơi điện tử…Một trong các ứng dụng rất rộng rãi và phổ
biến đó là cảm biến xác định vị trí và phát hiện dịch chuyển đóng vai trò rất quan trọng
đối với hoạt động của nhiều máy móc và công cụ.
Cảm biến siêu âm được sử dụng trong quá trình phát hiện và đo khoảng cách đến
vật cản bằng sóng siêu âm. Nguyên lý hoạt động dựa trên nguyên lý thu và phát sóng
siêu âm: khoảng cách từ cảm biến đến vật cản được xác định căn cứ vào khoảng thời
gian giữa hai thời điểm phát và thu sóng siêu âm phản xạ. Đây là nền tảng cho các ứng
dụng như phát hiện vị trí, đo vận tốc chuyển động, đo chiều dài vật hay cảnh báo va
chạm….
Trên cơ sở kiến thức đã được học cùng với sự hiểu biết về cảm biến siêu âm, em
đã thực hiện đồ án: “thiết kế hệ thống ra đa siêu âm tự động phát hiện vật cản dựa trên
nền tảng arduino” sử dụng họ vi điều khiển Arduino Uno R3 và cảm biến siêu âm
SRF04 kết hợp với phần mềm processing để hiển thị vị trí của vật cản lên màn hình


10
máy tính, báo động và lưu thông tin thu thập được lại để xử lý về sau. Nội dung đồ án
tập trung vào việc tìm hiểu Arduino Uno R3, Processing, servo, cảm biến siêu âm, xác
định khoảng cách và góc định hướng từ cảm biến đến vật cản rồi hiển thị trên màn
hình ra đa. Đồ án gồm có bốn chương như sau:
Chương 1: Giới thiệu về nền tảng Arduino
Chương 2: Giới thiệu về phần mềm Processing
Chương 3: Thiết kế hệ thống ra đa đo khoảng cách bằng sóng siêu âm
Chương 4: Kết quả thực nghiệm và đánh giá


11


CHƯƠNG 1

GIỚI THIỆU VỀ NỀN TẢNG
ARDUINO
1.1.

Giới thiệu về nền tảng Arduino

Hiện tại ở Việt Nam và trên thế giới cũng có nhiều board mạch vi điều khiển
khác nhau. Tuy nhiên Arduino có một số ưu điểm mà khiến nó trở nên nổi tiếng và
hiện đang được sử dụng rộng rãi trên thế giới. Những ưu điểm đó là: giá rẻ, tương
thích được với nhiều hệ điều hành, chương trình lập trình đơn giản, rõ ràng, dễ sử
dụng, sử dụng mã nguồn mở và có thể kết hợp với nhiều bo mạch mở rộng (shield)
khác nhau.
Arduino là một board mạch vi điều khiển do một nhóm giáo sư và sinh viên Ý
thiết kế và đưa ra đầu tiên vào năm 2005. Mạch Arduino được sử dụng để cảm nhận và
điều khiển nhiều đối tượng khác nhau. Nó có thể thực hiện nhiều nhiệm vụ từ lấy tín
hiệu từ cảm biến đến điều khiển đèn, động cơ, và nhiều đối tượng khác. Ngoài ra mạch
còn có khả năng liên kết với nhiều module khác nhau như module đọc thẻ từ, ethernet
shield, sim900A, …. để tăng khả ứng dụng của mạch.


12

Hình 1.. Một số loại Arduino

Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử
lý AVR Atmel 8bit, hoặc ARM, Atmel 32-bit…. Hiện phần cứng của Arduino có tất cả
6 phiên bản, tuy nhiên phiên bản thường được sử dụng nhiều nhất là Arduino Uno và
Arduino Mega.


1.2.

Arduino UNO R3

Arduino board có rất nhiều phiên bản với hiệu năng và mục đích sử dụng khác
nhau như: Arduino Mega, Arduino LilyPad... Trong số đó, Arduino Uno R3 là một
trong những phiên bản được sử dụng rộng rãi nhất bởi chi phí và tính linh động của
nó.
Do Arduino có tính mở về phần cứng, chính vì vậy bản thân Arduino Uno R3
cũng có những biến thể để phù hợp cho nhiều đối tượng khác nhau. Đầu tiên ta có
phiên bản Arduino Uno R3 tiêu chuẩn:


13

Hình 1.. Arduino UNO R3 (bản chân cắm PDIP)

Dựa vào thiết kế này, để giảm giá thành sản xuất nên một số thành phần của
board này được thay đổi lại với chức năng tương đương. Ví dụ như thay vi điều
khiển mặc định của Arduino là ATmega328P với kiểu chân là DIP thành ATmega328
có kiểu chân SMD. Phiên bản này có tên gọi Arduino Uno SMD R3.


14

Hình 1.. Arduino UNO SMD R3

Arduino Uno SMD R3 hoàn toàn giống với Arduino Uno R3 bản chân cắm
(PDIP). Điểm khác biệt nằm ở Chip nạp chương trình: Arduino Uno R3 (PDIP) dùng

chip nạp Atmega16U2, còn Arduino Uno SMD R3 dùng chip nạp CH340 nên tiết kiệm
chi phí hơn nhiều.


15
1.2.1. Mô tả phần cứng của Arduino UNO

Hình 1.. Mạch Arduino UNO

a) Cáp USB
Đây là dây cáp thường được bán kèm theo board, dây cáp dùng để cắm vào máy
tính để nạp chương trình cho board và dây đồng thời cũng lấy nguồn từ nguồn usb của
máy tính để cho board hoạt động. Ngoài ra cáp USB còn được dùng để truyền dữ liệu
từ board Arduino lên máy tính. Dây cáp có 2 đầu, một đầu được dùng để cắm vào cổng
USB trên board Arduino, đầu còn lại dùng để cắm vào cổng USB trên máy tính.
b) IC Atmega 16U2
IC này được lập trình như một bộ chuyển đổi USB - to - Serial dùng để giao tiếp
với máy tính thông qua giao thức Serial (dùng cổng COM).
c) Cổng nguồn ngoài
Cổng nguồn ngoài nhằm sử dụng nguồn điện bên ngoài như pin, bình acquy hay
các adapter cho board Arduino hoạt động. Nguồn điện cấp vào cổng này là nguồn DC
có hiệu điện thế từ 6V đến 20V, tuy nhiên hiệu điện thế tốt nhất mà nhà sản xuất
khuyên dùng là từ 7 đến 12V.
d) Cổng USB
Cổng USB trên board Arduino dùng để kết nối với cáp USB.


16
e) Nút reset
Nút reset được sử dụng để reset lại chương trình đang chạy. Đôi khi chương trình

chạy gặp lỗi, người dùng có thể reset lại chương trình.
f) ICSP của ATmega 16U2
ICSP là chữ viết tắt của In-Circuit Serial Programming. Đây là các chân giao tiếp
SPI của chip Atmega 16U2. Các chân này thường ít được sử dụng trong các dự án về
Arduino.
g) Chân xuất tín hiệu ra
Có tất cả 14 chân xuất tín hiệu ra trong Arduino Uno, những chân có dấu ~ là
những chân có thể điều chế xung (PWM).
h) IC ATmega 328
IC Atmega 328 là linh hồn của board mạch Arduino Uno, IC này được sử dụng
trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra,…
i) Chân ICSP của ATmega 328
Các chân ICSP của ATmega 328 được sử dụng cho các giao tiếp SPI, một số ứng
dụng của Arduino có sử dụng chân này, ví dụ như sử dụng module RFID RC522 với
Arduino hay Ethernet Shield với Arduino.
j) Chân lấy tín hiệu Analog
Các chân này lấy tín hiệu Analog (tín hiệu tương tự) từ cảm biến để IC Atmega
328 xử lý. Có tất cả 6 chân lấy tín hiệu Analog, từ A0 đến A5.
k) Chân cấp nguồn
Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như role, cảm biến,
RC servo… trên khu vực này có sẵn các chân GND (chân nối đất, chân âm), chân 5V,
chân 3.3V như được thể hiện ở hình 1.5. Nhờ những chân này mà người sử dụng
không cần thiết bị biến đổi điện khi cấp nguồn cho cảm biến, role, rc servo… Ngoài ra
trên khu vực này còn có chân Vin và chân Reset, chân IOREF. Tuy nhiên các chân này
thường ít được sử dụng.
Ngoài những phần cơ bản trên arduino còn một số thành phần cũng như chân
cắm khác được thể hiện trên hình 1.5 và hình 1.6.


17


Hình 1.. Một số chức năng của các chân trên Arduino UNO

Hình 1.. Arduino UNO Pinout


18
Khi làm việc với Arduino board, một số thuật ngữ sau cần được lưu ý:
 Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi tắt
điện. Về vai trò, ta có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu
trên board. Chương trình được viết cho Arduino sẽ được lưu ở đây. Kích thước
của vùng nhớ này thông thường dựa vào vi điều khiển được sử dụng, ví dụ
như ATmega8 có 8KB flash memory. Loại bộ nhớ này có thể chịu được
khoảng 10,000 lần ghi/xoá.
 RAM: giống như RAM của máy tính, sẽ bị mất dữ liệu khi ngắt điện nhưng bù
lại tốc độ đọc ghi xoá rất nhanh. Kích thước nhỏ hơn Flash Memory nhiều lần.
 EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì
ghi/xoá cao hơn - khoảng 100,000 lần và có kích thước rất nhỏ. Để đọc/ghi dữ
liệu ta có thể dùng thư viện EEPROM của Arduino.
Thông số kỹ thuật của board Arduino được tóm tắt trong bảng sau:
Bảng 1.. Thông số kỹ thuật của board Arduino

Vi điều khiển

ATmega328 (họ 8bit)

Điện áp hoạt động

5V DC (chỉ được cấp qua cổng USB)


Tần số hoạt động

16 MHz

Dòng tiêu thụ

khoảng 30mA

Điện áp vào khuyên dùng

7-12V DC

Điện áp vào giới hạn

6-20V DC

Số chân Digital I/O

14 (6 chân hardware PWM)

Số chân Analog

6 (độ phân giải 10 bit)

Dòng tối đa trên mỗi chân I/O

30 mA

Dòng ra tối đa (5V)


500 mA

Dòng ra tối đa (3.3V)

50 mA

Bộ nhớ flash

32 KB (ATmega328) với 0.5KB dùng
bởi bootloader

SRAM

2 KB (ATmega328)


19

EEPROM

1 KB (ATmega328)

Chiều dài

68.6 mm

Chiều rộng

53.4 mm


Trọng lượng

25 g

1.2.2. Một số lưu ý khi làm việc với Arduino Uno R3
Mặc dù Arduino có cầu chì tự phục hồi bảo vệ mạch khi xảy ra quá tải, tuy nhiên
cầu chì này chỉ được mắc cho cổng USB nhằm tự động ngắt điện khi nguồn vào USB
lớn hơn 5V.
Vì vậy, khi thao tác với Arduino, ta cần tính toán cẩn thận để tránh gây hư tổn
đến board. Các thao tác sau đây có thể gây hỏng một phần hoặc toàn bộ board
Arduino.
a) Nối trực tiếp dòng 5V vào GND
 Nối trực tiếp dòng 5V vào 1 trong 2 chân GND
 Nối 1 pin OUT bất kì vào GND
 Nối một pin HIGH vào một pin LOW bất kì
b) Cấp nguồn lớn hơn 5V cho bất kì pin I/O nào
Theo tài liệu của nhà sản xuất, với vi điều khiển ATmega328P thì 5V là ngưỡng
lớn nhất mà vi điều khiển này có thể chịu được. Nếu bất kì pin nào bị cấp điện áp vượt
quá 5V sẽ gây ra hỏng vi điều khiển này.
c) Tổng cường độ dòng điện trên các I/O pin vượt quá ngưỡng chịu được
Dựa theo datasheet của vi điều khiển ATmega328P, tổng cường độ dòng điện cấp
cho các I/O pin tối đa là 200mA. Vì vậy, ví dụ như trong trường hợp ta ép Arduino cấp
nguồn cho hơn 10 đèn LED (mỗi đèn thông thường sẽ cần 20mA) hay dùng trực tiếp
các chân I/O cấp nguồn cho động cơ sẽ có thể gây tổn hại đến vi điều khiển.
d) Thay đổi các kết nối trong lúc đang vận hành
Khi Arduino đang vận hành, việc thay đổi các kết nối có thể gây ra sự không ổn
định của điện áp dẫn đến hư hỏng Arduino. Vì vậy, trong thực tế làm việc ta nên ngắt
nguồn Arduino trước khi thực hiện bất kì các thay đổi nào.



20
1.2.3. Phần mềm nạp chương trình
Arduino là mạch xử lý được dùng để tương tác các thiết bị phần cứng như: đèn
Led, động cơ, cảm biến,... Và điểm hấp dẫn với người lập trình là chỉ cần biết chút ít
về kiến thức điện tử cơ bản, thì cũng có thể lập trình ra những ứng dụng thú vị theo
hướng physical computing, tức là lập trình để con người tương tác với các thiết bị
thực. Kết hợp với các thư viện (library) là các mã nguồn viết cho arduino, được xây
dựng sẵn và người lập trình chỉ cần khai báo nó ra để sử dụng. Một thư viện có thể
chứa mã nguồn của một hoặc nhiều ứng dụng khác nhau. Thường thì các ứng dụng có
liên quan, có một số đặc điểm chung được tập hợp chung với nhau thành một thư viện.
Ví dụ: Thư viện GSMSHIELD chứa các ứng dụng để chạy các GSM Shield
(SIM900 Shield, SIM908 Shield) như: ứng dụng GSM_GPRSLibrary_Call để gọi điện
thoại, GSM_GPRSLibrary_SMS để nhắn tin,...
Để lập trình được cho các board Arduino thì cần phải có một công cụ gọi là Môi
trường phát triển tích hợp - Intergrated Development Environment (IDE). Công cụ này
được đội ngũ kĩ sư của Arduino phát triển và có thể chạy trên nhiều hệ điều hành như:
Windows, MAC OS X và Linux.
Các chương trình Arduino được viết bằng C hoặc C++. Arduino IDE đi kèm với
một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các
thao tác input/output được dễ dàng hơn. Người dùng chỉ cần định nghĩa 2 hàm để tạo
ra một chương trình vòng thực thi là có thể chạy được.
setup() : hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập
các cài đặt.
loop() : hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch.

a) Cổng kết nối
Sau khi Arduino Uno R3 kết nối với máy tính, Arduino sử dụng cổng giao tiếp
COM để máy tính và mạch có thể tương tác qua lại với nhau.



21

Hình 1.. Computer Management


22
b) Các thành phần của Arduino IDE

Hình 1.. Giao diện Arduino IDE 1.6.8

 Toolbar:
• Arduino Toolbar: có một số button và chức năng của chúng như sau :
- Verify : kiểm tra code có lỗi hay không button

.

- Upload: nạp code đang soạn thảo vào Arduino button

.

- New, Open, Save : tạo mới, mở và Save sketch
.
- Serial Monitor : đây là màn hình hiển thị dữ liệu từ Arduino gửi lên máy
tính hoặc tổ hợp phím CTRL + SHIFT + M
• Arduino Menu:

.


23

- File menu: trong file menu chúng ta quan tâm tới mục Examples đây là
nơi chứa code mẫu ví dụ như: cách sử dụng các chân digital, analog,
sensor.
- Sketch menu:
o Verify/Compile: chức năng kiểm tra lỗi code.
o Show Sketch Folder: hiển thị nơi code được lưu.
o Add File: thêm vào một Tap code mới.
o Import Library: thêm thư viện cho IDE.
 Nạp code: chúng ta sẽ sử dụng ngôn ngữ lập trình để nạp tại đây. Tên chương
trình được hiển thị ngay dưới dãy các Icon. Nếu chương trình có dấu “§”. Điều
đó có nghĩa là đoạn chương trình chưa được lưu lại.
 Vùng debug: thông báo quá trình xử lý code tại đây.
1.2.4. Cấu hình Arduino IDE và chạy thử chương trình
Bước 1: Vào menu Tools → Board → chọn Arduino đang sử dụng.

Hình 1.. Chọn board Arduino đang sử dụng


24
Bước 2: Vào menu Tools → Serial Port → chọn cổng Arduino đang kết nối với
máy tính (COM4).

Hình 1.. Chọn cổng COM đang được kết nối với Arduino

Bước 3: Vào menu Tools → Programmer → chọn AVR ISP.


25

Hình 1.. Chọn chương trình nạp


Bước 4: Vào menu File → Examples → 01.Basics → chọn Blink

Hình 1.. Chọn chương trình mẫu


×