3.1 XÂY DỰNG PHẦN CỨNG
Phân cứng được xây dựng gôm :
*Chip vi điều khiển PIC18f452 gồm 40 chân cho phép thực hiện giao tiếp với các phần cứng còn lai thông qua 37 chân của pic .Hai chân còn lai ,chan 1 được nối với nguồn nuôi của PIC , chân số 13,14 được nối với thạch anh.
Modul phản hồi gồm: hai cảm biến LM35 , hai cảm biến phao , (biến trở ) cảm biến mở van.
-Một cảm biến LM35 đo nhiệt độ nước bình nóng được kết nối với chân AN0 -Một cảm biến LM35 đo nhiệt độ pha nước được kết nối với chân AN1
-Hai cảm biến phao một mức trên một mức dưới được kêt nối với tương ứng RB0,RB1
-Mộtcảm biến mở van được kết nối với chân AN3
*Modul cài đặt gồm:
-Một biến trở thực hiện đặt nhiệt độ kết nối với chân AN2
-Môt nút thực hiện đặt nước kết nối với chân RB3
-Một nút cho phép xem nhiệt độ bình nóng kết nối với chân RB4 -Một công tắc cho phép bật tắt chuông báo
*Modul hiển thị gồm :
-Hai LED 7 thanh đi kèm với bộ giải mã 7447 kết nối với bort C của PIC -Một LED-GREEN cho phep hiển thị khả năng làm việc, kết nối với chân RB6 -Một chuông báo kết nối với chân RB4
*Modul chấp hành gồm:
-Một cuộn hut thực hiện đóng mở van nước 36ình nóng kết nối với chân RD0 -Một may so nhiệt thực hiện đun nước được gián tiếp kết nối với chân RD1
-Một đông cơ DC 12V được giảm tốc theo yêu cầu cho phép đảo chiều kết nối với chân RD2,RD3
*Các phụ kiện cơ khí gồm : bình chứa nước ,Van chia nước ,ống pha nước…..
3.2 XÂY DỰNG PHẦN MỀM
*Xây dựng phần mềm được thực hiện trên ngôn ngữ lâp trình C++ *Về mặt nguyên tắc được mô tả bằng ngôn ngữ tự nhiên như sau:
Chương trình thực hiện hai chế độ bằn tay và tự động
-Ở chế độ tự động :cho phép tự động cấp nước vào bình nóng , gia nhiệt và ổn định nhiệt độ cho nước một cách tự động, tự động pha chế nước và ổn định nhiệt độ đầu ra khi có lượng đặt của người sử dụng .
-Ở chế độ bằng tay: cho phép người dùng đặt nhiêt độ gia nhiệt cho nước bình nóng , cấp nước bình nóng, xem nhiệt độ hiện tại của bình nóng ,thiết lập chuộng báo , tự pha chế nước
*Xau khi đã xác định về phần cứng và mô tả phần mềm bằng biến ngôn ngữ tự nhiên ta tiếp tục thực hiện xác định các giới hạn như sau :
-Bình nóng có dung tích 30 Lít
-Van chia nước được hợp thành từ hai cửa van có quan hệ phụ thuộc (V_nóng+V_lạnh =hằng số)thết kế cơ khí cho phép thực hiện chia tỉ lệ bằng động cơ và bằng tay trên cùng một van thời gian để van đi hết một chu trình là 6s(từ mở hoàn toàn tới đóng hoàn toàn tại một cửa van)
-Ống pha chế có dung tích 0.5 Lít cho phép pha chộn nước sau khi nước đã được chia tỉ lệ .
-Một van phụ ở đầu ra cho phép thiết lập lượng nước ra theo yêu cầu .
-Về mặt lập trình ở chế độ tự động ý tưởng xây dựng tỉ lệ pha chế theo khung logic toàn , bám theo khung này thực hiên nhờ phản hồi từ ống pha nhằm mục đích đáp ứng lượng ra theo lượng đặt.Nhiệt độ cho phép ở bình nóng trong chế độ tự động là 70 tới 75 độ , nhiệt độ cho phếp gia nhiệt cho nước ở chế độ bằng tay là 70 độ.
*Thực hiên xây dựng phần mềm hoàn chỉnh :
//****************************************************************** #include<18f452.h>
#device ADC=10
#use delay(clock=20000000) int16 m, n,e, f,I,i1,i2,j;
float h1,h2,h3,h4,mt=0,dp,d0,auto1,manual,v1; int8 v;
void main() {
while(1){
//lua chon che do
if(input(pin_b2)==0){auto1=1;manual=0;}; if(input(pin_b2)==1){auto1=0;manual=1;};
// thuc hian che do auto while(auto1==1){ setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports( ALL_ANALOG ); set_adc_channel(0); m=Read_ADC () ; delay_ms(10); set_adc_channel(1); n=Read_ADC () ; delay_ms(10); set_adc_channel(2); e=Read_ADC () ; delay_ms(10); set_adc_channel(3);
f=Read_ADC () ; delay_ms(10);
//--- //cuyen ve bien nhiet do
h1=m/2.048;h2=n/2.048;h3=e/(10.024);h4=f/10.024;
//h1 nhiet do bing 38ình, h2 nhiet do 38ình tron ,h3 nhiet do dat ,h4 phan hoi tu cua van (%)
i=input(pin_b0); j=input(pin_b1);//cam bien phao //xac dinh nhiet do moi truong
if(mt==0)mt=h2-1; if(mt>=h2)mt=h2-1; //---
//tinh toan va xuat du lieu
//bat tat tin hieu bom nuoc
if(i==1){output_low(pin_d0);d0=0;}; if(i==0){output_high(pin_d0);d0=1;};
//xuat tin hieu dun nuoc [70,75] if(h1<=70)output_high(pin_d1); if(h1>=75)output_low(pin_d1);
//tinh toan chia ti le van dp=2*h3-h2;
if(h3<=h1) {
v1=100*(h1+273)*(mt+273)/((dp+273)*(mt-h1))- 100*(h1+273)/((mt-h1));//cong thuc tinh cua van binh nong
if(v1<=4)v=0; if(v>=98)v1=98; if(v1>4&&v1<98)v=v1; output_high(pin_b6); if(h4<v){output_low(pin_d3);delay_ms(10);output_high(pin_d2);delay_ms(10);}; if(h4>v+2){output_low(pin_d2);delay_ms(10);output_high(pin_d3);delay_ms(10);}; if(h4>=v && h4<=v+2) {output_low(pin_d2);delay_ms(10);output_low(pin_d3);delay_ms(10);}; 38
}else{output_low(pin_b6);};
//hien thi dau vao if(h3>=mt&&h3<=50){ i2=0;i1=0;//chuyen sang ma BCD for(i=1;i<=h3;i=i+1){i1=i1+1;if(i1==10){i2=i2+1;i1=0;};}; output_c(i2*16+i1); }else output_c(0b00000000); if(input(pin_b2)==1){auto1=0;manual=1;}; }; //************************************* // thuc hien che do manual
while(manual==1){ output_low(pin_d2);delay_ms(10);output_low(pin_d3);delay_ms(10); setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports( ALL_ANALOG ); set_adc_channel(0); m=Read_ADC () ; delay_ms(10); set_adc_channel(1); n=Read_ADC () ; delay_ms(10); set_adc_channel(2); e=Read_ADC () ; delay_ms(10); set_adc_channel(3); f=Read_ADC () ; delay_ms(10); //--- //cuyen ve bien nhiet do
h1=m/2.048;h2=n/2.048;h3=e/(10.024);h4=f/10.024;
//h1 nhiet do bing 39ình, h2 nhiet do 39ình tron ,h3 nhiet do dat ,h4 phan hoi tu cua van (%)
//---
//tinh toan va xuat du lieu
//bat tat tin hieu bom nuoc
if(i==1&&j==1){output_low(pin_d0);d0=0;}; if(i==0&&j==0){output_high(pin_d0);d0=1;}; if(input(pin_b3)==1)output_high(pin_d0);
//tang nhiet do nuoc theo nhiet do dat if(h3<=70){ i2=0;i1=0;//chuyen sang ma BCD for(i=1;i<=h3;i=i+1){i1=i1+1;if(i1==10){i2=i2+1;i1=0;};}; output_c(i2*16+i1); }else output_c(0b00000000); if(h3>=h1+3){output_high(pin_d1);;output_low(pin_b6);output_low(pin_d4);}; if(h3<h1){output_low(pin_d1);output_high(pin_b6);output_high(pin_d4);};
// xem nhiet do hien tai if(input(pin_b4)==1){ i2=0;i1=0;//chuyen sang ma BCD for(i=1;i<=h1;i=i+1){i1=i1+1;if(i1==10){i2=i2+1;i1=0;};}; output_c(i2*16+i1); }; if(input(pin_b2)==0){auto1=1;manual=0;}; }; } } //*********************************************************** 3.3 KẾT QUẢ MÔ PHỎNG
Thưc hiện mô phỏng đạt yêu cầu (có chương trình kèm theo )
Giả thiết trước khi cấp điện cho thiết bị nhiệt độ tại bình nóng và ống pha chế là 23 độ trong bình nóng đã có nước nhưng chưa đạt max,biến chở đặt đang ở mức không , cửa van bình nóng ở mức đóng hoàn toàn
Hệ thống đang thực hiện chế độ tự động .
Cấp điện cho thiết bị cuôn hut và may xo hoạt động thực hiện cấp nước vào bình và gia nhiệt cho nước . Led 7 thanh hiển thị 00 led (OK) bật sáng.Đặt nhiệt độ ra ở 35 độ Led(ok) tắt .thực hiên tăng nhiệt độ bình nóng lên 76 độ van cho nước ở mức max.Khi đó cuộn hút và may xo ngừng hoạt động .Led(ok ) bật ,động cơ DC thực hiện mở van Tăng biến trở phản hồi cửa van cho tới khi động cơ dừng quay khi đó ta có biến trở chỉ 52% (như vậy cửa van nóng đã mở dược 52%)
Tương tự ở chế độ bằng tay
Với điều kiện đầu xác định như trên
Đặt nhiệt độ cho binh nóng là 35độ , bật khóa chuông báo
Cấp điện cho thiết bị cuộn hut và may xo hoạt động thực hiên cấp nước vào bình và gia nhiết cho nước .
Khi đạt tới nhiệt độ 35 độ thì chuông báo sẽ phat tín hiệu thông báo cho người sử dụng
3.4.ĐÁNH GIÁ KẾT LUẬN
Về mặt mô phỏng hệ thống điều khiển này trên phần mềm proteus đã đạt các yêu cầu đã đề ra . Tuy nhiên khi khi đặt trong một phần cứng cụ thể ta cần thực hiện hiệu chỉnh cho phù hợp .
Đồ án này đi sâu thực hiện thiết kế hệ thống điều khiển với nền cơ khí được tự xác định theo hệ thống điều khiển .
Tài liệu tham khảo:
Giáo trình hệ thống nhúng….