Tải bản đầy đủ (.pptx) (18 trang)

BÁO CÁO Vproject Bật tắt quạt theo nhiệt độ môi trường (Full)

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 (269.87 KB, 18 trang )

Bài Thuyết Trình Final Project
Vi Xử Lý
Đề tài:

BẬT TẮT QUẠT THEO NHIỆT ĐỘ
MÔI TRƯỜNG

Sinh viên thực hiện:
Trần Thị Xuân Miền.

1


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

1. Mục đích của đề tài:

 Đề tài ứng dụng được chức năng GPIO, Interrupt,
ADC10…. Của msp430g2553 và tăng kỹ năng ứng
dụng thực hiện được phần cứng cũng như các phần
mềm khác để hoàn thành project.
 Đề tài được ứng dụng trong các bộ tản nhiệt tự động
cho thiết bị, động cơ, linh kiện trong công nghiệp.


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

2. Sơ đồ khối :

Khối nút nhấn


Khối quạt
Msp430
G2553

Khối cảm biến

Khối hiển thị


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

3. Lưu đồ thuật toán tổng quát.

Bắt đầu

Khai báo thư viện và kiểu dữ liệu của các biến

Khai báo

Chuyển đổi ADC dữ liệu từ tương tự thành số

ADC

Hiển thị nhiệt độ thông qua led 7 đoạn

Hiển thị nhiệt độ

Cài đặt nhiệt độ mặc định và cho phép người
dùng thay đổi nhiệt độ


Cài đặt nút nhấn

Quạt hoạt động trong khoảng nhiệt độ đã cài
đặt

Điều khiển quạt
kết thúc


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

4. Các chương trình con.
4.1. Chuyển đổi ADC.
a. Sơ đồ khối:


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

4. Các chương trình con.
4.1. Chuyển đổi ADC.
a. Sơ đồ khối:
b. Chương trình:
void ADC_Init()
{
ADC10CTL0 = ADC10SHT_3 + ADC10ON;
ADC10CTL0|= SREF_0 ;
//
ADC10CTL1 = INCH_3;
ADC10AE0= BIT3;
DCOCTL = 0;

BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
}

//Sample-and-hold time: 64xADC10CLKs

//Select reference: Vr+ = Vcc = 3.2V
Vr- = Vss = 0V
//Input channel select: A3
//Analog enable: P1.3
// Select lowest DCOx and MODx settings
// Set DCO


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

4. Các chương trình con.
4.1. Chuyển đổi ADC.
a. Sơ đồ khối:
b. Chương trình:
unsigned int ADC_Sample()
{
unsigned int temp_sample =0;
int i;
for(i=0; i<200; i++)
{
ADC10CTL0 |= ENC + ADC10SC;
//Sampling and conversion start
while(ADC10CTL1 & 1);
//Waiting ADC complete

__delay_cycles(5000);
temp_sample = temp_sample + ADC10MEM*320/1023;
ADC10CTL0 &= ~(ENC + ADC10SC);
}
temp_sample = temp_sample/200;
return temp_sample;
}


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

4. Các chương trình con.
4.2 Hiển thị nhiệt độ:
-Sử dụng led 7 đoạn
-Mở rộng chân bằng IC 74hc595
+Ưu điểm: tiết kiệm chân hơn,
tùy chỉnh được khi nào cần xuất
+Nhược điểm: phức tạp hơn


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

4. Các chương trình con.
4.2 Hiển thị nhiệt độ:
unsigned char so[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void Write_74HC595_8bit(unsigned char x)
{
unsigned char tem=0;
unsigned char i;


}

for(i=0;i<8;i++)
{
DISABLE_SR_CLOCK();
//Set PIN Clock to low
tem=(((1<<(7-i))&x)!=0);
//Shift one bit of x to 595
if (tem==0) DISABLE_DATA_CLOCK();
else ENABLE_DATA_CLOCK();
ENABLE_SR_CLOCK();
//Set PIN Clock to high. A pulse
}


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

4. Các chương trình con.
4.2 Hiển thị nhiệt độ:
void hienThiLed(unsigned int num)
{
unsigned char chuc = num/10;
unsigned char donvi = num%10;

}

DISABLE_LATCH_CLOCK();
//Set PIN LATCH to low
Write_74HC595_8bit(so[donvi]);
//Shift 8bit donvi

Write_74HC595_8bit(so[chuc]); //Shift 8bit chuc
ENABLE_LATCH_CLOCK();
//Set PIN LATCH to high


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

4.3 chương trình cài đặt nút nhấn
a. Lưu đồ.
b. Chương trình.
Khai báo
#define BUTTON1 BIT3
#define BUTTON2 BIT4
#define BUTTON3 BIT5
#define CHECK_BUTTON1 (P2IN & BIT3)
#define CHECK_BUTTON2 (P2IN & BIT4)
#define CHECK_BUTTON3 (P2IN & BIT5)
#define DISABLE_INTERRUPT_FLAG
P2IFG &=~ BIT3
int press= 0;
int nhietdo_ss = 35;


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

Hàm digital I/O
void button_Init()
{
P2DIR &=~ BUTTON1 + BUTTON2 +
BUTTON3;

P2REN |= BUTTON1 + BUTTON2 +
BUTTON3;
P2OUT |= BUTTON1 + BUTTON2 +
BUTTON3;
P2IE |= BUTTON1;
P2IES |= BUTTON1;
}


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

Hàm ngắt
#pragma vector = PORT2_VECTOR
__interrupt void port2(void)
{
__delay_cycles(20000);
while(CHECK_BUTTON1==0 );
__delay_cycles(20000);
if(press == 0 ) press =1;
else press = 0;
DISABLE_INTERRUPT_FLAG;
}


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

Hàm cài đặt
void caiDat()
{ while(press)
{ if(!CHECK_BUTTON2)

{ __delay_cycles(20000);
while(CHECK_BUTTON2==0);
__delay_cycles(20000);
nhietdo_ss++;
if(nhietdo_ss>50) nhietdo_ss =0; }
if(!CHECK_BUTTON3)
{ __delay_cycles(20000);
while(CHECK_BUTTON3==0);
__delay_cycles(20000);
nhietdo_ss--;
if(nhietdo_ss<1) nhietdo_ss =50;}
hienThiLed(nhietdo_ss);}
}


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI
TRƯỜNG

4. Các chương trình con.
4.2 Điều khiển quạt:


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI
TRƯỜNG

4. Các chương trình con.
4.2 Điều khiển quạt:
#define QUAT BIT5
void fan_Init()
{

P1DIR |= QUAT;
P1OUT &=~ QUAT;
}
void dieuKhienQuat (unsigned int tempC,unsigned int tempss)
{
if (tempC >= tempss )
P1OUT |= QUAT;
else if(tempC <= (tempss - 2))
P1OUT &= ~QUAT;
}


Đề tài: BẬT TẮT QUẠT THEO NHIỆT ĐỘ MÔI TRƯỜNG

5. Demo
6. Đánh giá sản phẩm:
Hạn chế:
-Mạch chưa được ổn định lắm, nhiệt độ đo được chưa có độ chính xác
cao, bật tắt quạt phải trong 1 khoảng nhiệt độ, ít chức năng ứng dụng
Khắc phục:
-Cần cải tiến mạch, thêm các linh kiện chống nhiễu và linh kiện có độ
chính xác cao hơn, thêm một số chức năng khác như: hẹn giờ, thay đổi
tốc độ quạt theo nhiệt độ,


Thank you !




×