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

điều khiển động cơ dùng bluetooth

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 (804.67 KB, 26 trang )

BỘ NÔNG NGHIỆP VÀ PTNT
HỌC VIỆN NÔNG NGHIỆP VIỆT NAM

ĐỒ ÁN MÔN HỌC
VI XỬ LÝ TRONG ĐIỀU KHIỂN

ĐỀ TÀI: ĐIỀU KHIỂN ĐỘNG CƠ DÙNG
BLUETOOTH





Giảng Viên Hướng Dẫn: Lại Văn Song
Sinh viên thực hiện:
Trần văn chiến . Mã sv: 576091
Nguyễn xuân lộc . Mã sv: 573118
Phạm duy toàn.Mã sv:576232


I.

ĐỊ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ểu
thê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 đơn
giả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ều


khiể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àm
nghiê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 sau
này khi sinh viên làm Khóa luận tốt nghiệp.
1.2. Yêu cầu:
Bài viết phải mô tả được các công việc thực tế, có khả năng ứng dụng tốt và
đảm bảo tính logic, khoa học.
Thực hiện đúng theo tiến độ đã thống nhất.
1.3. Nội dung:
Sinh viên có thể lựa chọn bất kỳ đề tài nào liên quan đến những nội dung đã
được đề cập đến ở học phần: Điện tử số ứng dụng, Kỹ thuật Vi xử lý, Vi xử
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


PHẦ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


PHẦ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
Thực tập lắp ráp mạch diện tử

-

-


Theo chúng em được biết thì đã có anh chị khóa trên và một số cá nhân làm đề tài dạng
này rồi
Những người thực hiện trước chỉ làm đến phần đọc và hiển thị thông tin, còn phần điều
khiển nhiệt độ, độ ẩm và điều khiển từ xa thì chưa thấy làm
Kết quả mà những người làm trước đật được là đo và hiển thị thông tin, ngoài ra còn có
thể truyền thông tin đi xa qua sóng RF và qua mạng wifi
Phân tích kết quả những người trước đạt được : đo đạc và hiển thị nhiệt độ , độ ẩm lên
màn hình LCD, truyền tải thông tin đi xa
Trong nội dung đồ án môn học, nhóm sẽ tiến hành theo phương pháp kế thừa và phát huy.
Những cải tiến so với người làm trước là : làm thêm phần điều khiển tốc độ, đóng ngắt
động cơ từ xa bằng module bluetooth
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à


PHẦ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.


CHƯƠNG 1 :
PHÂN TÍCH YÊU CẦU, LỰA CHỌN GIẢI PHÁP VÀ THIẾT
BỊ
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ế

I.1

Hình 1.1 Tổng quan mô hình khi hoạt động


I.2.2.2

Các thiết bị phần cứng
a. Arduino uno r3

Hình 1.2 Arduino uno r3


Một vài thông số của Arduino UNO R3

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 10bit)

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)

EEPROM

1 KB (ATmega328)

Hình 1.3 Vi điều khiển


Arduino 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,…
Năng lượng
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp
khuyên dùng là 7-12V DC và giới hạn là 6-20V. Thường thì cấp nguồn bằng pin vuông 9V là hợp
lí nhất nếu bạn không có sẵn nguồn từ cổng USB. Nếu cấp nguồn vượt quá ngưỡng giới hạn trên,
bạn sẽ làm hỏng Arduino UNO.
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.




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
ATmega328.



Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino UNO nếu
vượt quá 200mA sẽ làm hỏng vi điều khiển.



Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ làm hỏng
vi điều khiển.




Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của Arduino UNO vượt
quá 40mA sẽ làm hỏng vi điều khiển. Do đó nếu không dùng để truyền nhận dữ liệu, bạn
phải mắc một điện trở hạn dòng.
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.


Các cổng vào ra

Hình 1.4 Các cổng vào ra
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là

0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up
từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được
kết nối).
Mộ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.




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 → 2 10-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-1A
Chiều dài cáp :1m
Đầu jack chẩn micro


Cơ 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 : 10mm
Kích thước :25x28x15mm
Tốc độ : 12000v/phút
Dò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



Tín hiệu vào : 5V
Bật 0, tắt 1
Thay đổi J0,J1 để thay đổi mức điều khiển
Tiế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ển
VSS+, VSS- là nguồn của relay
d. Module bluetooth

Hình 1.12 module bluetooth e360
Giao tiếp PC, smart phone
Truyền nhận dữ liệu tốc độ cao
Sử dụng CC2540/CC2541 giao tiếp
Điện áp vào : DC 3-6V
Điện áp giao tiếp :3.3 V


e. Cáp nối

Hình 1.13 Cáp USB TO COM
Kết nối arduino với máy tính

Hình 1.14 Cáp nối
Dùng để nối các phần tử của đồ án với nhau


CHƯƠNG 2 :

GIA CÔNG CHẾ TẠO
Các linh kiện mua ở cửa hàng rồi rắp ráp


CHƯƠ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 '#'


#define DIV_CMD_CHAR '|'
#define CMD_DIGITALWRITE 10
#define CMD_ANALOGWRITE 11
#define CMD_TEXT 12
#define CMD_READ_ARDUDROID 13
#define MAX_COMMAND 20 // max command number code. used for error
checking.
#define MIN_COMMAND 10 // minimum command number code. used for error
checking.
#define IN_STRING_LENGHT 40
#define MAX_ANALOGWRITE 255
#define PIN_HIGH 3
#define PIN_LOW 2
String inText;
void setup() {
Serial.begin(9600);

Serial.println("ArduDroid 0.12 Alpha by TechBitar (2013)");
Serial.flush();
}
void loop()
{
Serial.flush();
int ard_command = 0;
int pin_num = 0;
int pin_value = 0;
char 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();


if (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 (ard_command == CMD_TEXT){
inText =""; //clears variable for new input
while (Serial.available()) {
char c = Serial.read(); //gets one byte from serial buffer
delay(5);
if (c == END_CMD_CHAR) { // if we the complete string has been read

// add your code here
break;
}
else {
if (c != DIV_CMD_CHAR) {
inText += c;
delay(5);
}
}
}
}
// 2) GET digitalWrite DATA FROM ARDUDROID
if (ard_command == CMD_DIGITALWRITE){
if (pin_value == PIN_LOW) pin_value = LOW;
else if (pin_value == PIN_HIGH) pin_value = HIGH;
else return; // error in pin value. return.


set_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
Serial.print(" Analog 0 = ");
Serial.println(analogRead(A0)); // Example: Read and send Analog pin value
to Arduino
return; // Done. return to loop();
}
}
// 2a) select the requested pin# for DigitalWrite action
void set_digitalwrite(int pin_num, int pin_value)
{
switch (pin_num) {
case 13:
pinMode(13, OUTPUT);
digitalWrite(13, pin_value);
// add your code here
break;
case 12:
pinMode(12, OUTPUT);


digitalWrite(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:


pinMode(5, OUTPUT);
digitalWrite(5, pin_value);
// add your code here

break;
case 4:
pinMode(4, OUTPUT);
digitalWrite(4, pin_value);
// add your code here
break;
case 3:
pinMode(3, OUTPUT);
digitalWrite(3, pin_value);
// add your code here
break;
case 2:
pinMode(2, OUTPUT);
digitalWrite(2, pin_value);
// add your code here
break;
// default:
// if nothing else matches, do the default
// default is optional
}
}

CHƯƠNG 4 :
KHẢO NGHIỆM VÀ CHỈNH ĐỊNH
Mô hình chạy tốt



PHẦ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


PHẦN 5 :
KẾT LUẬN VÀ KIẾN NGHỊ
Do điều kiện còn chưa đầy đủ nên đồ án của em còn đơn giản, việc đưa công nghệ cao vào mô
hình là chưa đầy đủ.
Em xin chân thành cảm ơn thầy giáo: Lại Văn Song đã hướng dẫn và giúp đỡ em rất nhiều trong
quá trình làm đồ án, em xin hứa sẽ cố gắng hoàn thành tốt hơn khi tiếp nhận đồ án tốt nghiệp!


×