-
Thông tin
-
Hỏi đáp
Báo cáo đồ án cuối kỳ môn Kỹ thuật vi xử lý
Báo cáo đồ án cuối kỳ môn Kỹ thuật vi xử lý
Kỹ thuật vi xử lý (CT141) 1 tài liệu
Đại học Cần Thơ 236 tài liệu
Báo cáo đồ án cuối kỳ môn Kỹ thuật vi xử lý
Báo cáo đồ án cuối kỳ môn Kỹ thuật vi xử lý
Môn: Kỹ thuật vi xử lý (CT141) 1 tài liệu
Trường: Đại học Cần Thơ 236 tài liệu
Thông tin:
Tác giả:
Tài liệu khác của Đại học Cần Thơ
Preview text:
LƯƠNG PHƯỚC THỊNH B1807018
BÁO CÁO ĐỒ ÁN CUỐI KỲ
KỸ THUẬT VI XỬ LÝ (CT141)
1. Mục tiêu và giới hạn của đề tài
Mục tiêu: thiết kế được mô hình mô phỏng quạt tự động đo nhiệt độ môi trường và hiển thị kết
quả đo được trên LED 7 đoạn
2. Sơ đồ khối Hiển thị LED 7 đoạn Nhiệt độ đo được Nhiệt độ cài đặt Hiển thị mức Output Input Cảm biếến nhiệt độ MSP430 Điếều khiển motor LM35 quạt DC Output Input Nút nhấến cài đặt nhiệt độ ngưỡng
3. Lựa chọn linh kiện Đối với đề tài này:
- Chọn MSP430G2553 có tích hợp chức năng biến đổi ADC
- Sử dụng cảm biến nhiệt độ LM35 có ngõ ra là điện thế để có thể dùng chức năng biến đổi ADC
được tích hợp trong chip vi điều khiển
- Chọn LED 7 đoạn anode chung
- IC giải mã 7447 cho LED 7 đoạn chuyển đổi từ mã BCD để tiết kiệm chân cho chip vi điều khiển
- Opto PC817 làm đầu ra của vi điều khiển để điều khiển quạt - Quạt DC 12V
4. Mô hình mô phỏng
-Do chip MSP430G2553 mô phỏng không chính xác ADC trong Protues nên ta chọn chip tương
đương là MSP430F2122. Về GPIO chip này có đến 3 port nhiều hơn MSP430G2553 loại 20
chân chỉ có 2 Port vào ra (port 1 và port2). Nên trong mô phỏng chỉ dùng port 1 và port 2 của chip MSP430F2122
-LED 7 đoạn được giải mã qua IC 7447 để tiết kiệm tài nguyên
5. Lưu đồ giải thuật BEGIN
Khởi tạo ngắt ngoài cho nút nhấnKhởi tạo ADC10
Khởi tạo mã LED 7 đoạn Khởi tạo xung PWM cho
motorHiển thị các thông tin
Đọc nhiệt độ từ cảm biến
Hiển thị nhiệt độ đo được
Hiển thị nhiệt độ cài đặt Nhiệt độ đo Đ
Quạt quay(tốếc độ phụ được> nhiệt độ thuộc vào mức nhiệt ngưỡng độ)và hiển thị mức S
Hiển thị nhiệt độ đo được
Hiển thị nhiệt độ cài đặt
Mô tả hoạt động
-LED 7 đoạn sẽ hiển thị nhiệt độ đo được từ cảm biến LM35 , nhiệt độ cài đặt và các mức nhiệt
-Nhiệt độ cài đặt có thể điều chỉnh tăng giảm bằng nút nhấn. Khi ấn TANG thì nhiệt độ ngưỡng
sẽ tăng lên 1 đơn vị, khi ấn GIAM thì nhiệt độ ngưỡng sẽ giảm lên 1 đơn vị.
- Khi nhiệt độ đo được lớn hơn nhiệt độ ngưỡng quạt sẽ quay tùy theo từng mức nhiệt độ mà tốc độ
quạt nhanh hay chậm và LED 7 đoạn sẽ hiển thị mức nhiệt độ
-Nếu nhiệt độ đo được nhỏ hơn nhiệt độ ngưỡng thì quạt không quay hoặc đang quay thì sẽ quay chậm
dần rồi dừng hẳn. LED 7 hiển thị mức sẽ hiện mức 00
6. Chương trình chính #include "msp430f2122.h" void hienthi(int); void hienthicanhbao(int); void hienthimuc(int);
int nhietdo, giatri_nhietdo=28; void in_out(void); void timer(void); void setPWM(void); int value;
int maled[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};// ma BCD void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT
// KHAI BAO NGAT NGOAI CHO TANG/GIAM P2IE |= BIT5+BIT6; P2IES |= BIT5+BIT6; P2IFG &= ~ (BIT5+BIT6); // CHON TAN SO DCO
BCSCTL1 = CALBC1_1MHZ; // Set DCO range DCOCTL = CALDCO_1MHZ; // 1.5V ->1023 = ADC10MEM
// ADC10ON, interrupt enabled => CHON DIEN THE THAM CHIEU NOI LA 1.5
ADC10CTL0 = SREF_1+ ADC10SHT_2 + REFON + ADC10ON + ADC10IE; ADC10CTL1 |= INCH_4; ADC10AE0 |= BIT4; // A4 ADC option select
P1DIR |= BIT6+BIT7+BIT4+BIT5+BIT0+BIT1; // P1.6 = hang chuc, P1.7 = hang don vi
P2DIR |= BIT0+BIT1+BIT2+BIT3;// xuat data ra led 7 doan // DIEU KHIEN QUAT in_out(); timer(); setPWM(); value=333; _BIS_SR(GIE); while(1) { TACCR1=value; ADC10CTL0 |= ENC + ADC10SC;
// Sampling and conversion start
// XUAT NHIET DO NGUONG CANH BAO
// HIEN THI DUOC NHIET DO RA LED 7SEG nhietdo=ADC10MEM*150/1023; hienthi(nhietdo);
hienthicanhbao(giatri_nhietdo);
if( nhietdo < giatri_nhietdo ) { value=0; // MUC 0 hienthimuc(0); }
if(giatri_nhietdo <= nhietdo&&nhietdo<=33) { value=333 +150; // MUC 1 hienthimuc(1); }
if(33 < nhietdo&&nhietdo<=38) { value=333 +300; // MUC 2 hienthimuc(2); } if(38 < nhietdo) { value=933; // MUC 3 hienthimuc(3); } } }
#pragma vector=TIMER0_A0_VECTOR
interrupt void Timer0_A0 (void) { TACCR1 = value; }
// ADC10 interrupt service routine #pragma vector=ADC10_VECTOR
interrupt void ADC10_ISR(void) {
bic_SR_register_on_exit(CPUOFF);
// Clear CPUOFF bit from 0(SR) } // INTERRUPT ISR #pragma vector=PORT2_VECTOR
interrupt void TANG_GIAM(void) { // AN TANG NHIET DO if(P2IFG&BIT5) {giatri_nhietdo +=1; if (giatri_nhietdo==100) giatri_nhietdo=28; } P2IFG &= ~BIT5; // AN GIAM NHIET DO if(P2IFG&BIT6) {giatri_nhietdo -=1; if (giatri_nhietdo==35) giatri_nhietdo=28; } P2IFG &= ~BIT6; }
// HIEN THI NHIET DO RA LED 7SEG void hienthi(int so_hien_thi) { int so_chuc,so_donvi; so_chuc=so_hien_thi/10; so_donvi=so_hien_thi%10; P1OUT = BIT7; P2OUT = maled[so_donvi]; delay_cycles(1000); P1OUT = BIT6; P2OUT = maled[so_chuc]; delay_cycles(1000); } // hien thi nhiet do canh bao
void hienthicanhbao(int nhietdo_canhbao) { int so_chuc,so_donvi; so_chuc=nhietdo_canhbao/10; so_donvi=nhietdo_canhbao%10; P1OUT = BIT5; P2OUT = maled[so_donvi]; delay_cycles(1000); P1OUT = BIT4; P2OUT = maled[so_chuc]; delay_cycles(1000);; } // HIEN THI SO MUC void hienthimuc(int so_muc) { P1OUT = BIT1; P2OUT = maled[so_muc]; delay_cycles(1000); P1OUT = BIT0; P2OUT = maled[0]; delay_cycles(1000); } // DIEU KHIEN QUAT void in_out(void) { P1DIR |= BIT2; P1SEL |= BIT2; } void timer(void) { CCTL0=CCIE; TACTL = TASSEL_2 + MC_1; } // SMCLK, up mode void setPWM(void) { CCR0=999; // PWM tan so 1kHZ
CCTL1 = OUTMOD_7; // CCR1 reset/set }
7. Sơ đồ nguyên lý mạch thực tế Khối nguồn
Khối điều khiển
Khối hiển thị
8. Mạch in PCB layout Khối nguồn
Khối điều khiển
Khối hiển thị
9. Kết luận đề tài
- Mô hình mô phỏng quạt tự động dùng cảm biến nhiệt độ LM35 điều khiển quạt DC, hiển thị
thông số nhiệt độ ra LED 7 đoạn hoạt động ổn
-Nhược điểm: chưa thực hiện được chức năng cài đặt theo thời tiết từng mùa