Kiểm tra mạch điều khiển, mạch công suất xem hệ thống có bị đứt hay chập mạch hay không nhờ vào đồng hồ vạn năng.
Hình 4.4: Kiểm tra mạch có bị đứt hay chập mạch không
Hình 4.5: Kiểm tra mạch nguồn
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 71 4.3.2 Kiểm tra mạch công suất
Trước khi chạy thử, viết phần mềm bằng codevision cho chân kích từ vi điều khiển đóng mở theo chu kì nhất định để kiểm tra mạch công suất.
4.4 Thử nghiệm và kiểm tra độ ổn định
Cho mạch chạy thử với nhiều mức tốc độ khác nhau trong một khoảng thời gian nhất định. Sau đó, kiểm tra mức độ hoạt động của cảm biến chuyển động và hiển thị của LCD lấy dữ liệu từ cảm biến nhiệt độ gửi về.
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 72
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 73
Bảng 4.1: Kiểm tra nhiệt độ và mức tốc độ
Thứ tự Nhiệt độ (o C) Độ trễ i (ms) (0≤ i ≤10) 1 Nhỏ hơn 26 8 2 ≥ 26 và <28 7 3 ≥ 28 và <30 6 4 ≥ 30và <31 5 5 ≥ 31 và <32 4 6 ≥ 32 và <33 2 7 ≥ 33 và <35 1 8 ≥ 35 0
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 74
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 75
5.1. Kết luận
5.1.1 Kết quả đạt được
Sau một thời gian nghiên cứu, thiết kế và thi công, mô hình điều khiển quạt theo nhiệt độ đã chế tạo thành công. Sản phẩm đáp ứng các yêu cầu sau:
+ Hiển thị nhiệt độ và độ ẩm.
+ Điều khiển tốc độ phù hợp với nhiệt độ môi trường.
+ Sự kết hợp ứng dụng vi điều khiển trong điều khiển và cảm các cảm biến giúp quá trình thiết kế và chế tạo sản phẩm đơn giản hơn, tiết kiệm thời gian và chi phí thiết bị. Nhưng hiệu quả đạt được vẫn cao.
+ Sản phẩm gọn gàng, có tính thẩm mỹ. 5.1.2 Kết quả chưa đạt được
Bên cạnh những kết quả đạt được thì mô hình còn có những hạn chế sau: phần mềm viết chưa hoàn chỉnh nên vẫn chưa cải thiện được vấn đề của cảm biến PIR ( cảm biến chuyển động), việc lắp đặt mạch và các thiết bị vào mô hình tính thẩm mĩ chưa cao.
5.2 Đề xuất
Với những kết quả đạt được và những hạn chế còn mắc phải trong quá trình thực hiện đề tài. Qua tìm hiểu và nghiên cứu tài liệu, các mẫu thiết kế khác trong và ngoài nước, đề tài có thể phát triển thêm như sau:
5.2.1 Đề xuất phần cứng
- Trang bị thêm cho mô hình để có độ bền và tính thẩm mĩ cao hơn. - Điều khiển và giám sát hệ thống qua điện thoại.
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 76 5.2.2 Đề xuất phần mềm
- Nâng cấp phần mềm để hệ thống thông minh hơn. - Tìm hiểu thêm về điều khiển các thiết bị xoay chiều.
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 77
TÀI LIỆU THAM KHẢO
1. GS.Phạm Văn Ất “Kỹ thuật lập trình C cơ sở và nâng cao”, NXB Giao thông vận tải Hà Nội – 2006.
2. Lập trình và ghép nối máy tính.Nhà xuất bản khoa học kĩ thuật - 2003.
3. KS. Trần Văn Hùng “Kỹ thuật ứng dụng vi điều khiển”, Tài liệu lưu hành nội bộ Đại học Nha Trang.
4. Nguyễn Tấn Phước “Giáo trình Linh kiện điều khiển”,NXB Thành phố Hồ Chí Mính – 1988.
5. Các website tham khảo: + www.microchip.com. + www.PICvietnam.com.vn.
+ www.dientuvietnam.net + www.alldatasheet.com.
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 78
PHỤ LỤC Chương trình điều khiển
/**********************************************************/ This program was produced by the
CodeWizardAVR V1.24.6 Professional Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail:office@hpinfotech.com Project : Version : Date : 4/1/2013 Author : F4CG Company : F4CG Comments:
Chip type : ATmega32 Program type : Application
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 79
Clock frequency : 12.000000 MHz Memory model : Small
External SRAM size : 0 Data Stack size : 512
*****************************************************/ #include <mega32.h>
#include <delay.h> #include <stdlib.h> #include <math.h>
#define dk_quat PORTD.5 #define cb PINB.0
unsigned char k=45; #define CLK PORTA.1 #define DATA_W PORTA.0 #define DATA_R PINA.0 #define DATA_X DDRA.0 #define TEMP 0x03 #define HUMI 0x05 #define RESET 0x1E
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 80 float d1C = -40.1; // 14bit float d2C = 0.01; // 14bit float C1 = -4.0; // 12bit float C2 = 0.0405; // 12bit float C3 = -0.0000028; // 12bit float t1 = 0.01; // 12bit float t2 = 0.00008; // 12bit float tempt, humi;
float RH_linear, RH_true; char a;
int th,da,pw,t;
int i;
// Alphanumeric LCD Module functions #asm
.equ __lcd_port=0x15 ;PORTC #endasm
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 81
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void) {
// Place your code here delay_ms(i); dk_quat=0; delay_us(10); dk_quat=1; }
// Declare your global variables here
void khoitao(void) {
// Declare your local variables here
// Input/Output Ports initialization // Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 82
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 83
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;
DDRD=0x20;
// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00;
TCNT0=0x00; OCR0=0x00;
// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon.
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 84
// Noise Canceler: Off
// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 85
// Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;
TCCR2=0x00; TCNT2=0x00; OCR2=0x00;
// External Interrupt(s) initialization // INT0: On
// INT0 Mode: Rising Edge // INT1: Off // INT2: Off GICR|=0x40; MCUCR=0x03; MCUCSR=0x00; GIFR=0x40;
// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 86
// Analog Comparator initialization // Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;
SFIOR=0x00;
// LCD module initialization lcd_init(16);
// Global enable interrupts #asm("sei")
}
/////////////////////////////////////////////////////////////////////////
void Hienthi_LCD(unsigned int so,unsigned char x,unsigned char y) {
unsigned int a,b,c,d,nguyen,du; nguyen = so/100;
du = so%100;
a=nguyen/10; // lay fan tram
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 87
c=du/10; // lay hang don vi d= du%10 ;
lcd_gotoxy(x,y); // ve vi tri x,y
lcd_putchar(a+48); // day ra hang tram, ma ascii lcd_putchar(b+48); // day ra hang chuc, ma ascii lcd_putsf(".");
lcd_putchar(c+48); // day ra hang don vi, ma ascii lcd_putchar(d+48); // day ra hang don vi, ma ascii }
///////////////////////////////////////////////////////////////////////// unsigned int SHT_Measure(char CMD)
{
// int i,j,k,l; char i,j,f,l; char m = 128;
unsigned int temp = 0; DATA_X = 1; //DDRA DATA_W = 1; //PORTA DDRA.1=1;
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 88
CLK = 0;
// Connection reset sequence for(i=0; i<10; i++) { CLK = 1;
delay_us(15); CLK = 0; delay_us(15); }
// initial transmistion pluses DATA_W = 1; delay_us(15); CLK = 1; delay_us(15); DATA_W = 0; delay_us(15); CLK = 0; delay_us(15); CLK = 1; delay_us(15);
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 89 DATA_W = 1; delay_us(15); CLK = 0; delay_us(15); //Transmit command. for(j=0; j<8; j++) { if(!(m & CMD)) DATA_W = 0; else DATA_W = 1; CLK = 1; delay_us(15); CLK = 0; delay_us(15); m >>= 1; }
//Check acknowledge pulse. return 0 if no pulse. DATA_X = 0;
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 90 CLK = 1; delay_us(15); if(DATA_R) return 0; CLK = 0; delay_us(15); while(!DATA_R); // wait until data is ready while(DATA_R); // get first byte MSB for(f=0;f<8;f++) { temp <<= 1; CLK = 1; delay_us(15); if(DATA_R) temp |= 1; CLK = 0; delay_us(15);
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 91 } // acknowledge pluse DATA_X = 1; DATA_W = 0; delay_us(15); CLK = 1; delay_us(15); CLK = 0; delay_us(15); DATA_X = 0; delay_us(15); // get second byte LS B for(l=0; l<8; l++) { temp <<= 1; CLK = 1; delay_us(15); if(DATA_R) temp |= 1;
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 92
CLK = 0; delay_us(15); }
// return value without CRC return temp;
}
/*****************************************************/ void Tinh_SHT10(void)
{
//read adc temperature value from SHT
tempt = SHT_Measure(TEMP); //calculate temperature in Celsius from value, //formula t = d1 + d2*SOt
tempt = d1C + (tempt * d2C)-2; th=tempt*100 ;
lcd_gotoxy(0,0);
lcd_putsf("Nhiet Do:"); Hienthi_LCD(th,10,0);
humi = SHT_Measure(HUMI); //read adc humidity value from SHT //formula RHlinear = C1 + C2*SOrh + C3*SOrh*SOrh %RH
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 93
//formula RHtrue = (Tc-25)*(t1+t2*SOrh)+RHlinear RH_true = (tempt-25)*(t1+(t2*humi))+ RH_linear; da= RH_true*100; lcd_gotoxy(0,1); lcd_putsf("DO Am :"); Hienthi_LCD(da,10,1); } ///////////////////////////////////////////////////////////////////////// void main(void) { khoitao(); while (1) { Tinh_SHT10(); if(cb==1) { if(tempt<26) { i=8;
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 94
}
if(( tempt>=26 )&&(tempt<28)) {
i=7; }
if(( tempt>=28 )&&(tempt<30)) {
i=6; }
if(( tempt>=30 )&&(tempt<31)) {
i=5; }
if(( tempt>=31 )&&(tempt<32)) {
i=4; }
if(( tempt>=32 )&&(tempt<33)) {
Đồ án chuyên ngành Công nghệ Cơ Điện Tử Trang 95
i=2; }
if(( tempt>=33 )&&(tempt<35)) { i=1; } if(tempt>=35) { i=0; } } if(cb==0) { i=9; } }; } /**********************************************************/