Trong giới hạn thời gian nghiên cứu cho phép, đề tài chỉ phát triển một hệ thống điều khiển đơn giản Các thiết bị được giám sát và điều khiển tiêu tốn rất ít năng lượng sẽ mang lại lợi
Trang 1Giảng Viên Hướng Dẫn: Lại Văn Song
Sinh viên thực hiện:
Trang 2I. ĐỊNH HƯỚNG NGHIÊN CỨU KHOA HỌC
1.1 Mục đích:
Giúp sinh viên củng cố lý thuyết môn học Vi xử lý trong điều khiển Hiểuthêm về cấu trúc của các dòng vi điều khiển nói chung và họ 8051 nói riêng.Biết về cách lập trình cho vi điều khiển và thực hiện được một số bài toánđiều khiển cơ bản
Giúp sinh viên có thêm kỹ năng giải quyết một số bài toán điều khiển đơngiản ứng dụng các dòng vi điều khiển Có khả năng phân tích bài toán điềukhiển để tìm biện pháp giải quyết vấn đề, biết lựa chọn giải pháp hợp lý vàbiết cách chọn lựa thiết bị vật tư sử dụng cho công việc
Thông qua việc thực hiện đồ án môn học, sinh viên sẽ làm quen với cách làmnghiên cứu khoa học và cách triển khai công việc theo nhóm Việc thảo luận
và phân công hợp lý, cụ thể sẽ mang lại hiệu quả tốt nhất cho công việc
Rèn thêm tư duy thực hiện và cách thức trình bày để sinh viên tiếp cận dễdàng hơn đối với các đồ án môn học khác và đặc biệt là đồ án tốt nghiệp saunày khi sinh viên làm Khóa luận tốt nghiệp
lý trong điều khiển, Kỹ thuật lập trình, Vi điều khiển và ứng dụng
Nếu sinh viên không tự chọn được tên và nội dung đồ án, giảng viên sẽ thảo luận và yêu cầu sinh viên/nhóm sinh viên thực hiện theo yêu cầu của giảng
1.4 Hình thức và kết cấu đồ án
Nội dung chính của đồ án được giới hạn trong khoảng từ 30 đến 50 trang (không
kể phần phụ lục), yêu cầu đánh máy vi tính 1 mặt, khổ giấy A4, phông chữ Times New Roman Chi tiết về cách thức trình bày sinh viên xem thêm về Quy định mẫu khóa luận tốt nghiệp của Học viện
Kết cấu quyển đồ án được trình bày theo 5 phần chính:
- Mục lục
- Phần 1: Mở đầu (đặt vấn đề, mục đích)
- Phần 2: Tổng quan nghiên cứu
- Phần 3: Đối tượng, nội dung và phương pháp nghiên cứu
- Phần 4: Kết quả và thảo luận
- Phần 5: Kết luận và kiến nghị
- Phụ lục
Trang 3PHẦN 1 :
MỞ ĐẦU
Với sự phát triển rộng rãi của thiết bị điện, ngày nay, người người, nhà nhà hầu hết đã sử dụng các công nghệ hiện đại Và khi mức sống của người dân được nâng cao thì việc quản lý các thiết bị điện trong nhà là hết sức cần thiết Chính vì vậy việc điều khiển thiết bị và giám sát hoạt động của nó thông qua một quá trình tự động là việc làm mang nhiều lợi ích Đề tài thực hiện việc điều khiển thông qua vi điều khiển, chính vì vậy đề tài nghiên cứu sâu về việc ổn định tốc độ động cơ điện Trong giới hạn thời gian nghiên cứu cho phép, đề tài chỉ phát triển một hệ thống điều khiển đơn giản
Các thiết bị được giám sát và điều khiển tiêu tốn rất ít năng lượng sẽ mang lại lợi ích kinh tế và hiệu quả sử dụng cao
Trang 4PHẦN 2 : TỔNG QUAN NGHIÊN CỨU
- Đề tài vận dụng kiến thức các môn học :
Vi xử lý trong điều khiển
Kỹ thuật lập trình trong điều khiển
- Kết quả đạt được là có thể đóng ngắt, điều khiển hệ thống quạt và động cơ bơm qua hệ thống điều khiển từ xa bằng module bluetooth Thời gian thực hiện : 2 tháng
- Địa điểm : tại nhà
Trang 5PHẦN 3 : ĐỐI TƯỢNG, NỘI DUNG VÀ PHƯƠNG PHÁP NGHIÊN
CỨU
3.1 Đối tượng nghiên cứu
Độ án tập trung nghiên cứu về hệ thống đo đạc và điều các động cơ nhằm giúp động cơ hoạt động theo đúng nhu cầu của người sử dụng
3.2 Nội dung nghiên cứu
Hệ thống điều khiển, bật tắt các thiết bị hoạt động dựa trên modul bluetooth HC05 và Arduino-uno-r3 Arduino-uno-r3 được lập trình khi được tác động bởi người chủ thông qua thiết bị đã được kết nối bluetooth sẽ điều khiển quá trình đóng ngắt của các thiết bị, điều chỉnh độ, tốc độ quay của động cơ
3.3 Phương pháp nghiên cứu
Toàn bộ hệ thống dựa trên ứng dụng của vi điều khiển Vi điều khiển là một máy tính tích hợp trên 1 chip, thướng sử dụng để điều khiển các thiết bị điện tử Vi điều khiển thực chất gồm một vi xử lý có hiệu suất đủ cao và giá thành thấp (so với các vi xử lý đa năng dùng trong máy tính) kết hợp với các thiết bị ngoại vi như các bộ nhớ, các mô đun vào/ra, các
mô đun biến đổi từ số sang tương tự và từ tương tự sang số, mô đun điều chế độ rộng xung (PWM)
Vi điều khiển thường được dùng để xây dựng hệ thống nhúng Nó xuất hiện nhiều trong các dụng cụ điện tử, thiết bị điện, máy giặt, lò vi sóng, điện thoại, dây truyền tự động.Hầu hết các loại vi điều khiển hiện nay có cấu trúc Harvard là loại cấu trúc mà bộ nhớ chương trình và bộ nhớ dữ liệu được phân biệt riêng
Cấu trúc của một vi điều khiển gồm CPU, bộ nhớ chương trình (thường là bộ nhớ ROM hoặc bộ nhớ Flash), bộ nhớ dữ liệu (RAM), các bộ định thời, các cổng vào/ra để giao tiếp với các thiết bị bên ngoài, tất cả các khối này được tích hợp trên một vi mạch
Trang 6CHƯƠNG 1 : PHÂN TÍCH YÊU CẦU, LỰA CHỌN GIẢI PHÁP VÀ THIẾT
BỊ
I.1 Phân tích yêu cầu
Yêu cầu của đề tài là đóng ngắt được thiết bị, điều khiển tốc độ của động cơ tùy
ý thông qua modul bluetooth HC-06
I.2 Lựa chọn giải pháp và thiết bị
I.2.1 Lựa chọn giải pháp
Sử dụng module arduino làm trung tâm điều khiển
Module relay để thao tác đóng cắt điều khiển
Module bluetooth để điều khiển từ xa
I.2.2 Lựa chọn thiết bị
I.2.2.1 Mô hình thiết kế
Hình 1.1 Tổng quan mô hình khi hoạt động
Trang 7I.2.2.2 Các thiết bị phần cứng
a. Arduino uno r3
Hình 1.2 Arduino uno r3
Trang 8Một vài thông số của Arduino UNO R3
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Điện áp vào khuyên dùng 7-12V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Trang 9Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168,
ATmega328 Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,…
Các chân năng lượng
• ND (Ground): cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các thiết bị
sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
• 5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA.
• 3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA.
• Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của
nguồn với chân này và cực âm của nguồn với chân GND
• IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở chân
này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để
sử dụng bởi chức năng của nó không phải là cấp nguồn
• RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân
RESET được nối với GND qua 1 điện trở 10KΩ
Lưu ý
• Arduino UNO không có bảo vệ cắm ngược nguồn vào Do đó bạn phải hết sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO Việc làm chập mạch nguồn vào của Arduino UNO sẽ biến nó thành một miếng nhựa chặn giấy mình khuyên bạn nên dùng nguồn từ cổng USB nếu có thể
• Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết bị khác, không phải là các chân cấp nguồn vào Việc cấp nguồn sai vị trí có thể làm hỏng board Điều này không được nhà sản xuất khuyến khích
• Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể làm hỏng board
Trang 10• Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển
Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
• 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ Flash
của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu
• 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi lập
trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm Khi mất điện, dữ liệu trên SRAM sẽ bị mất
• 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây
giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây
mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM
Trang 11Một số chân digital có các chức năng đặc biệt như sau:
• 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ
liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
• Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải
8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ
cố định ở mức 0V và 5V như những chân khác
• Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng
thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
Trang 12• LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset,
bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để
đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên board, bạn có thể để đưa vào
điện áp tham chiếu khi sử dụng các chân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết
bị khác
b. Nguồn cấp
Hình 1.9 adapter 5vĐiện áp vào : 100-240 VĐiện áp ra : 5V-1AChiều dài cáp :1mĐầu jack chẩn micro
Trang 13Cơ cấu chấp hành
Hình 1.10 động cơ chấp hànhĐiện áp vào : 5V
Đường kính trục : 2mm
Độ dài trục : 10mmKích thước :25x28x15mmTốc độ : 12000v/phútDòng tiêu thụ : 0.3 -0.4 A
Có thể thay thế động cơ bằng quạt thông gió, máy phun sương, bơm…
c. Module relay 4 kênh 5V-220V-10A
Hình 1.11 module relay
Trang 14Tín hiệu vào : 5V
Bật 0, tắt 1Thay đổi J0,J1 để thay đổi mức điều khiểnTiếp điểm relay 220 V-10A
NC thường đóng
NO thường mởVCC,GND là nguồn chung với điều khiểnVSS+, VSS- là nguồn của relay
Điện áp giao tiếp :3.3 V
Trang 16CHƯƠNG 2 : GIA CÔNG CHẾ TẠO
Các linh kiện mua ở cửa hàng rồi rắp ráp
Trang 17CHƯƠNG 3 : LẬP TRÌNH ĐIỀU KHIỂN
Lưu đồ thuật toán
CODE LẬP TRÌNH
#define START_CMD_CHAR '*'
#define END_CMD_CHAR '#'
Trang 18char get_char = ' '; //read serial
// wait for incoming data
if (Serial.available() < 1) return; // if serial empty, return to loop().
// parse incoming command start flag
get_char = Serial.read();
Trang 19if (get_char != START_CMD_CHAR) return; // if no command start flag, return
to loop().
// parse incoming command type
ard_command = Serial.parseInt(); // read the command
// parse incoming pin# and value
pin_num = Serial.parseInt(); // read the pin
pin_value = Serial.parseInt(); // read the value
// 1) GET TEXT COMMAND FROM ARDUDROID
if (c == END_CMD_CHAR) { // if we the complete string has been read
// add your code here
if (pin_value == PIN_LOW) pin_value = LOW;
else if (pin_value == PIN_HIGH) pin_value = HIGH;
else return; // error in pin value return
Trang 20set_digitalwrite( pin_num, pin_value); // Uncomment this function if you wish to use
return; // return from start of loop()
}
// 3) GET analogWrite DATA FROM ARDUDROID
if (ard_command == CMD_ANALOGWRITE) {
analogWrite( pin_num, pin_value );
// add your code here
return; // Done return to loop();
}
// 4) SEND DATA TO ARDUDROID
if (ard_command == CMD_READ_ARDUDROID) {
// char send_to_android[] = "Place your text here." ;
// Serial.println(send_to_android); // Example: Sending text
// 2a) select the requested pin# for DigitalWrite action
void set_digitalwrite(int pin_num, int pin_value)
Trang 21digitalWrite(12, pin_value); // add your code here
break;
case 11:
pinMode(11, OUTPUT);
digitalWrite(11, pin_value); // add your code here
break;
case 10:
pinMode(10, OUTPUT);
digitalWrite(10, pin_value); // add your code here
break;
case 9:
pinMode(9, OUTPUT);
digitalWrite(9, pin_value); // add your code here
break;
case 8:
pinMode(8, OUTPUT);
digitalWrite(8, pin_value); // add your code here
break;
case 7:
pinMode(7, OUTPUT);
digitalWrite(7, pin_value); // add your code here
break;
case 6:
pinMode(6, OUTPUT);
digitalWrite(6, pin_value); // add your code here
break;
case 5:
Trang 22Mô hình chạy tốt
Trang 24PHẦN 4 : KẾT QUẢ VÀ THẢO LUẬN
- Các kết quả đạt được : đo và hiển thị thông số nhiệt độ, độ ẩm nen LCD Bật tắt quạt , bơm, động cơ theo chương trình đã lập trình Điều khiển mô hình qua bluetooth
- Đầu tiên định điều khiển từ xa qua wifi nhưng sau đó quyết định dùng module bluetooth
- Kết quả đạt được đã thể hiện được công sức mọi người đã bỏ ra
- Mong thầy chỉ dẫn cho chúng em làm phần điều khiển từ xa qua wifi, xa hơn là qua mạng enternet