PDA

View Full Version : Cho mình hỏi về điều khiển các nút bấm


smallGigi
30-11-2005, 10:15 PM
Mình nhận đề tài đồ án là Điều khiển các nút bấm trên máy giặt bằng VXL. Thời gian cũng hơi bị gấp rút nhưng mình chưa làm được gì nhiều. Mong mọi người giúp đỡ mình nhé!. Đa tạ. :) Trình độ của mình hơi tệ, plz đừng chê cười nhé, mình quê lắm đấy hix hix

Các nút bấm trên máy giặt là (có thể chỉnh sửa lại đôi chút):
- Power, Start/Pause
- Chỉnh mức nước: High, medium, economical
- Chế độ giặt: Heavy, Normal, Spin, Rinse

Trước hết thầy bảo mình vẽ sơ đồ khối, mình chia làm 3 khối, ko biết có đúng ko nhỉ? :rolleyes:

Khối cấp nguồn: Power (relay)
Khối mức nước: ngõ vào High, Medi, E
Khối xử lý chính: ngõ vào Heavy, Normal, Spin, Rinse kết hợp với Start.

falleaf
01-12-2005, 02:50 PM
Em cứ vẽ phác thảo lên các bước rồi mọi người sẽ góp ý sau:

Thí dụ


Pause
while {Start = 1}

-> muc high
-----> che do heavy: chay kieu nào đó
-----> che do normal: chạy kiểu nào đó
-----> chế độ
-----> chế độ

-> muc medium
-----> chế độ
-----> chế độ
-----> chế độ
-----> chế độ

-> muc economie
-----> chế độ
-----> chế độ
-----> chế độ
-----> chế độ

endwhile.
goto Pause

Ví dụ như vậy.

Đó là phần chương trình chính.

Nhưng em sẽ thấy, những ngõ vào điều khiển gồm những gì? Nếu mức nước cao, thì em sẽ mở nước trong thời gian dài hơn. Thực ra, nó có cái vạch đo mực nước, hoặc có cân điện tử trong máy giặt.

Còn nếu chế độ giặt, thì nó sẽ xác định kiểu giặt, có nghĩa là kiểu quay của máy giặt.

Như vậy, em phải có chân tín hiệu đọc nguồn, tín hiệu đọc mức nước, tín hiệu chọn chế độ.

Mức nước được xác định bởi khối lượng quần áo (quần áo càng nhiều thì mức nước càng phải cao). Như vậy, khi chọn mức nước là cao, thì sẽ phải cân lại quần áo.

vd: quần áo = 3kg, chọn mức high, thì mức nước thực tế cần đổ vào là 30 lít chẳng hạn. Nhưng nếu quần áo 3kg, mà chọn mức medium, thì lượng nước cần đổ vào sẽ chỉ là 25 lít chẳng hạn. Còn nếu chọn mức medium, mà quần áo chỉ có 2kg, thì mức nước phải đổ vào là 17 lít chẳng hạn. Nhưng nếu quần áo = 3kg, mà chọn mức economie, thì mức nước thực tế đổ vào sẽ là 22 lít chẳng hạn.

Bài toán này là một bài toán fuzzy.

Thực tế, các máy giặt hiện đại đều dùng fuzzy để giải quyết.

Cho nên em cần phải xác định thật rõ các khối của hệ thống, giao tiếp với vi điều khiển như thế nào. Những tín hiệu nào là ngõ vào, những tín hiệu nào là ngõ ra.

Khối chức năng ngõ vào, và khối chức năng ngõ ra đó, điều khểin những cái gì? Vd: mở van nước, quay máy.. thuật toán chi tiết bên trong em không cần quan tâm, vì anh nghĩ sau này thầy sẽ cho em phát triển tiếp đề tài bằng cách tìm hiểu làm sao để điều khiển từng cái đó.

Nhưng vô hình chung, em phải xác định được rõ ràng, khối ngõ vào là gì, khối ngõ ra là gì.

Chúc vui.

chuabietgi
09-12-2005, 09:24 AM
Thank you!Toi cung dang can cai nay!

luonghuy99
11-01-2014, 12:33 AM
#include <18f4620.h>
#use delay(clock = 20000000)
#byte porte=0xf84
#byte portd=0xf83
#byte portc=0xf82
#byte portb=0xf81
#byte porta=0xf80

#byte trise=0xf96
#byte trisd=0xf95
#byte trisc=0xf94
#byte trisb=0xf93
#byte trisa=0xf92
#bit sw1=portb.0
#bit sw2=portb.1
#bit sw3=portb.2
//#bit asd=portd.0
//#bit asd=portc.0
int x,y,i,giatri=10,dem=10,tam,MOD; // int=int8 giatri toi da 255

int so[8]={1,2,4,8,16,32,64,128};
int so1[8]={1,2,4,8,16,32,64,128};
int co1;
void nut_tang()
{
if(sw1==0)
{ delay_ms(1);
dem++;
if(dem++)
{
y=i+10;
}
if(dem==1000)
{
dem=10;
}
while(sw1==0);
}
}
// ham giam :
// moi lan an thi giam bien dem mot don vi, vong tron (neu =0 thi tro ve so mat dinh 10)

void nut_giam()
{
if(sw2==0)
{ delay_ms(1);
dem--;
if(dem--)
{
y=i-10;
}
if(dem==0)
{
dem=1000;
}
// co1 =!co1;


while(sw2==0);
}
}
void dieu_khien()
{
for(i=0;i<y;i++)
{
output_d(0b00000001);
delay_ms(1);
output_d(0b00000010);
delay_ms(1);
output_d(0b00000100);
delay_ms(1);
output_d(0b00001000);
delay_ms(1);
}
output_d(0);
}
void BMOD()
{if(sw3==0)
{
delay_ms(10);
MOD++;
while(sw3==0);
}

switch (MOD)
{
case 1:nut_tang();dieu_khien();break;
case 2:nut_giam();dieu_khien();break;
}
}

void main()
{trisd=0;
trisc=0;
trisb=255;

//co1 = 0;
while(1)
{
// thuc thi
// goi y: an va giu
// hoac an mot nut start

BMOD();
//co1 = !co1;

// while(1); // dung luon chuong trinh

}
}
sao mình mô phỏng trên protues mà k chạy dc,xin cac anh giúp dùm em.thanks