Liên Hệ: fb.com/acmasiva 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 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 ArduinoChương 2: Giới thiệu về phần mềm ProcessingChương 3: Thiết kế hệ thống ra đa đo khoảng cách bằng sóng siêu âmChương 4: Kết quả thực nghiệm và đánh giá
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA ĐIỆN TỬ - VIỄN THÔNG
Trang 2TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA ĐIỆN TỬ - VIỄN THÔNG
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
Trang 4LỜ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
Trang 5MỤC LỤC
Trang 6
DANH SÁCH CÁC HÌNH VẼ
Trang 7DANH SÁCH CÁC BẢNG
Trang 8DANH MỤC CÁC TỪ VIẾT TẮT
AVR Advanced Virtual RISC Một họ vi điều khiển do hãng Atmel sản xuất
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
Receiver Transmitter
Bộ thu phát vạn năng không
đồng bộ
USB Universal Serial Bus Một chuẩn kết nối tuần tự đa dụng trong máy tính
EEPROM Programmable Read-Only Electrically Erasable
Memory
Chip nhớ không bay hơi
IDE Intergrated Development Environment Môi trường thiết kế hợp nhất
SPI Serial Peripheral Interface Giao diện Ngoại vi nối tiếp
Trang 9MỞ ĐẦ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
Trang 10má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á
Trang 11CHƯƠ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
Trang 12Hì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:
Trang 13Hì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
Trang 14Hì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
Trang 151.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àiCổ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 USBCổng USB trên board Arduino dùng để kết nối với cáp USB
Trang 16e) Nút resetNú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 16U2ICSP 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)
j) Chân lấy tín hiệu AnalogCá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ồnCá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
Trang 17Hì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
Trang 18Khi 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
Trang 19EEPROM 1 KB (ATmega328)
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àoTheo 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 đượcDự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ànhKhi 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
Trang 20Ví 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ốiSau 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
Trang 21Hình 1 Computer Management
Trang 22b) 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:
Trang 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
Trang 24Bướ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
Trang 25Hì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
Trang 26Khi đó Arduino IDE mở một cửa sổ mới chứa mã code Mã này có chức năng là điều khiển đèn LED màu cam trên mạch Arduino Uno, đèn Led này được nối trực tiếp với pin 13 trên mạch Arduino, nhấp nháy với chu kì 1 giây.
Sau đó chọn Verify để kiểm tra lỗi và Upload để nạp code vào Arduino
Hình 1 Chương trình mẫu nhấp nháy LED
Kết quả:
Trang 27Hình 1 Thực tế của chương trình Blink nạp lên Arduino
Nhiều ngôn ngữ lập trình hiện nay, nhất là các ngôn ngữ viết cho Windows, thường có cung cấp thêm một số lượng rất lớn các thư viện bao gồm nhiều hàm để hỗ trợ giao diện người dùng, và các thư viện có sẵn trong Arduino không đủ để đáp ứng yêu cầu của người lập trình, vì thế chung ta cần phải nạp thêm thư viện cần thiết
Trên giao diện IDE Arduino vào Sketch → Include Library → Add .ZIP Library… và tìm đến file thư viện cần thêm vào
Hình 1 Thêm thư viện vào Arduino IDE
Trang 281.3 Giới thiệu về một số linh kiện ngoại vi
1.3.1 Servo GS 90
a) Giới thiệuServo là một dạng động cơ điện đặc biệt Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM) với góc quay nằm trong khoảng bất kì từ 0o – 180o Mỗi loại servo có kích thước, khối lượng và cấu tạo khác nhau Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mô hình), có loại thì sở hữu một momen lực lớn (vài chục Newton/m), hoặc
có loại thì khỏe và nhông sắt chắc chắn,
Hình 1 Servo GS 90
Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín Tín hiệu ra của động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này Nếu có bất kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC (radio-controlled) Trong thực tế, bản thân động cơ servo không phải được điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi Động cơ servo nhận tín hiệu từ máy thu này
b) Nguyên lý hoạt độngĐộng cơ nối với mạch điều khiển tạo thành mạch hồi tiếp vòng kín Cả mạch điều khiển và động cơ đều được cấp nguồn DC (thường từ 4.8 – 7.2 V)
Trang 29Hình 1 Cấu tạo của động cơ servo
Để quay động cơ, tín hiệu số được gởi tới mạch điều khiển Tín hiệu này khởi động động cơ, thông qua chuỗi bánh răng, nối với vôn kế Vị trí của trục vôn kế cho biết vị trí trục ra của servo Khi vôn kế đạt được vị trí mong muốn, mạch điều khiển sẽ tắt động cơ Như ta dự đoán, động cơ servo được thiết kế để quay có giới hạn chứ không phải quay liên tục như động cơ DC hay động cơ bước Mặc dù ta có thể chỉnh động cơ servo R/C quay liên tục nhưng công dụng chính của động cơ servo là đạt được góc quay chính xác trong khoảng từ 00 – 1800 Việc điều khiển này có thể ứng dụng để lái robot, di chuyển các tay máy lên xuống, quay một cảm biến để quét khắp phòng…
c) Lắp mạch
Hình 1 Mạch điều khiển Servo bằng Arduino cơ bản
Trang 30Ta có ví dụ làm cho servo quay từ 00 đến 1800 sau đó quay ngược về.
Thư viện Servo đã có sẵn trong hệ thống thư viện mặc định của Arduino nên chúng ta không cần phải tải một thư viện mới về
Code cho IDE:
1.3.2 Cảm biến siêu âm HC-SR04
a) Giới thiệu
Hình 1 HC-SR04
Cảm biến khoảng cách siêu âm HC-SR04 được sử dụng rất phổ biến để xác định khoảng cách vì rẻ và chính xác Cảm biến sử dụng sóng siêu âm và có thể đo khoảng cách trong khoảng từ 2 → 300 cm
Cảm biến HC-SR04 có 4 chân là: Vcc, Trig, Echo, GND
Bảng 1 Sơ đồ nối chân giữa HC-SR04 và Arduino
#include <Servo.h>
Servo myservo; // khởi tạo đối tượng Servo với tên gọi là myservo
int pos = 0; // biến pos dùng để lưu tọa độ các Servo
for(pos = 0; pos < 180; pos += 1) // cho servo quay từ 0 >179 độ
{ // mỗi bước của vòng lặp tăng 1 độ
myservo.write(pos); // xuất tọa độ ra cho servo
delay(15); // đợi 15 ms cho servo quay đến góc đó rồi tới bước tiếp theo }
for(pos = 180; pos>=1; pos-=1) // cho servo quay từ 179 >0 độ
{
myservo.write(pos); // xuất tọa độ ra cho servo
delay(15); // đợi 15 ms cho servo quay đến góc đó rồi tới bước tiếp theo }
}