Một trong những ứng dụng tiện ích của kỹ thuật số đó là chức năng đếm với các mạch đếm như đếm sản phẩm, đếm số người vào phòng, thang máy hay đếm số người ra vào cổng, … Đó đều là những
Trang 1Trường Đại Học Bách Khoa Hà Nội
Viện Điện
BÁO CÁO
ĐỒ ÁN Ⅰ
Đề bài: Thiết kế bộ đếm sản phẩm theo chiều cao (3 loại chiều cao).
4
Hà Nội, 12-2018
Trang 2Nội dung
MỞ ĐẦU 3
I Đặt vấn đề 4
1 Lý do chọn đề tài 4
2 Mục đích nghiên cứu 4
3 Ứng dụng của đề tài 4
II Thiết kế 5
1 Thiết kế phần cứng 5
a Sơ đồ khối 5
b Chi tiết các khối, lựa chọn linh kiện 5
2 Thiết kế phần mềm 9
a Lưu đồ thuật toán 9
b Mô phỏng trên proteus 10
III Kết quả 11
1 Mạch in 11
2 Hình ảnh sản phẩm 12
IV Thử nghiệm 13
1 Môi trường lý tưởng 13
2 Môi trường trong phòng nhiều đèn chiếu 13
3 Môi trường ngoài trời buổi sáng 13
V Đánh giá 14
1 Kết luận 14
2 Ưu nhược điểm 14
3 Hướng phát triển đề tài 14
VI Phụ lục 15
Chương trình điều khiển (code C) 15
Trang 3MỞ ĐẦU
Trong thời đại công nghệ phát triển mạnh mẽ, các thiết bị số đang có vai trò quan trọng đối với công nghiệp cũng như đời sống con người và đang dần chiếm ưu thế về số lượng và chủng loại
Công nghệ số có được ứng dụng trong nhiều lĩnh vực của cuộc sống, chủ yếu làm các nhiệm vụ chính như: đo lường, điều khiển cơ cấu máy, truyền thông giữa các thiết bị,
… tạo sự tiện dụng cho con người khi sử dụng các thiết bị điện tử Một trong những ứng dụng tiện ích của kỹ thuật số đó là chức năng đếm với các mạch đếm như đếm sản phẩm, đếm số người vào phòng, thang máy hay đếm số người ra vào cổng, … Đó đều là những ứng dụng rất thực tế Và trong đồ án này chúng em đã được nghiên cứu về mạch đếm sản phẩm
Đồ án đã được thực hiện nhằm làm rõ hơn bản chất của vi điều khiển đối với việc điều khiển một quá trình và bản chất cấu thành của một hệ thống vi điều khiển Từ kiến thức đã học đồng thời tham khảo thêm thông tin từ nhiều nguồn, cùng với sự trợ giúp của thầy cô và bạn bè Với kiến thức có hạn không thể tránh khỏi những thiếu sót khi thực hiện, mong cô và mọi người góp ý cho đề tài này thêm hoàn chỉnh
Qua đây, xin cảm ơn ThS Vũ Thị Huế đã giúp đỡ chúng em trong quá trình thực hiện đề tài
Xin chân thành cảm ơn!
Trang 4I Đặt vấn đề
1 Lý do chọn đề tài
Ngày nay, cùng với sự phát triển của khoa học kỹ thuật nói chung và kỹ thuật điện nói riêng, kỹ thuật số đóng vai trò quan trọng trong mọi lĩnh vực khoa học kỹ thuật, quản
lý, công nghiệp hóa tự động hóa Do đó chúng ta phải nắm bắt vận dụng nó một cách có hiệu quả nhằm góp phần cho sự phát triển của khoa học kỹ thuật điện tử nói chung
Việc áp dụng lĩnh vực điện tử vào ngành sản xuất sản phẩm gia dụng trong nhà và các hệ thống quản lý đang được đưa vào ứng dụng rộng rãi hơn và phù hợp hơn với chức năng cụ thể của nó làm tăng năng suất cho dây truyền làm việc Phù hợp với tiến trình công nghiệp hóa hiện đại hóa nền công nghiệp nước ta
Trong thực tế các nhà máy sản xuất lớn đã ứng dụng việc đếm sản phẩm trong trong khâu đóng gói sản phẩm bằng các mạch điện tử làm tăng năng suất lao động và giảm chi phí nhân công, tự động hóa dây truyền công nghiệp, chính xác hóa trong sản xuất
Do đó chúng em chọc đề tài “ Thiết kế bộ đếm và phân loại sản phẩm theo chiều cao” là mô phỏng của hệ thống đếm sản phẩm trong dây truyền công nghiệp Với đề tài
này chúng em chọn mạch đếm sản phầm dùng vi điều khiển 8051 (cụ thể là at89s52) mà
chúng em đã được học trong môn Vi điều khiển và ứng dụng.
2 Mục đích nghiên cứu
Tìm hiểu về các hệ thống đếm sản phẩm
Phân tích được sơ đồ nguyên lý
Nâng cao kỹ năng lập trình vi điều khiển
Phát triển khả năng tư duy trong quá trình nghiên cứu
3 Ứng dụng của đề tài
Mạch đếm sản phẩm được ứng dụng khá rộng rãi trong các dây truyền sản xuất công nghiệp Nó đáp ứng yêu cầu đếm và thống kê chính xác các loại sản phẩm khác nhau trong sản xuất hàng loạt và liên tục
Trang 5II Thiết kế
1 Thiết kế phần cứng
a Sơ đồ khối
Hình 2 1: Sơ đồ khối
b Chi tiết các khối, lựa chọn linh kiện
Khối nguồn: gồm các linh kiện tác động đến công suất, dòng điện cung cấp năng
lượng thích hợp cho mô hình hệ thống
Hình 2 2: Adapter AC DC
KHỐI NGUỒN
KHỐI XỬ LÝ
KHỐI HIỂN THỊ KHỐI TÍN HIỆU
Trang 6 Khối tín hiệu: Là cảm biến vật cản hồng ngoại phát hiện vật thể và truyền tín hiệu
về khối xử lý để mã hóa dữ liệu
Hình 2 3: Cảm biến vật cản hồng ngoại
Cảm biến có khả năng nhận biết vật cản ở môi trường với một cặp LED thu phát hồng ngoại để truyền và nhận dữ liệu hồng ngoại Tia hồng ngoại phát ra với tần số nhất định, khi có vật cản trên đường truyền của LED phát nó sẽ phản xạ vào LED thu hồng ngoại, khi đó LED báo vật cản trên module sẽ sáng, khi không có vật cản, LED sẽ tắt
Với khả năng phát hiện vật cản trong khoảng 2 ~ 30cm và khoảng cách này có thể điều chỉnh thông qua chiết áp trên cảm biến cho thích hợp với từng ứng dụng cụ thể như:
xe dò line, xe tránh vật cản, …
Thông số kỹ thuật
+ IC so sánh: LM393
+ Điện áp: 3.3V - 6VDC
+ Dòng tiêu thụ:
+ Vcc = 3.3V: 23 mA
+ Vcc = 5.0V: 43 mA
+ Góc hoạt động: 35°
+ Khoảng cách phát hiện: 2 ~ 30 cm
+ LED báo nguồn và LED báo tín hiệu ngõ ra
+ Mức logic ngõ ra:
o Mức thấp - 0V: khi có vật cản
o Mức cao - 5V: khi không có vật cản
+ Kích thước: 3.2cm x 1.4cm
Khối xử lý: Vi điều khiển at89c52 xử lý tín hiệu từ cảm biến và xuất dữ liệu được
mã hóa đến các khối hiển thị
Trang 7Hình 2 4: Vi điều khiển At89c52
AT89C52 có 8 Kbyte bộ nhớ FLASH ROM bên trong để lưu chương trình, vì vậy Vi điều khiển có khả năng nạp xóa chương trình bằng điện lên đến 1000 lần.
Dung lượng RAM 128 byte, AT89C52 có 4 Port xuất/nhập 8 bit, có 2 bộ định thời 16
bit Ngoài ra AT89C52 còn có khả năng giao tiếp dữ liệu nối tiếp, có thể mở rộng
không gian nhớ chương trình và nhớ dữ liệu ngoài lên đến 64 Kbyte
Thông số kỹ thuật:
+ Họ vi điều khiển 8 bit
+ Điện áp cung cấp: 4-6V
+ Tần số hoạt động : 24 Mhz
+ Bộ nhớ : 8 Kb Flash, 256 Bytes SRAM
+ Timer/Counter : 3 bộ 16 bit
+ 32 chân I/O lập trình được
+ 8 nguồn ngắt khác nhau
+ Kiểu chân : PDIP40
Khối hiển thị: LCD 16x2 hiển thị số lượng đếm được từ cảm biến
Trang 8Hình 2 5: Màn hình LCD 16x2
LCD 16x2 một sản phẩm quen thuộc với những người mới học và muốn thực hiện các dự án về điện tử, lập trình Với khả hiển thị 2 dòng với mỗi dòng 16 ký tự, đồng thời
có rất nhiều ví dụ mẫu được cộng đồng Arduino xây dựng sẵn sẽ giúp người mới sử dụng làm quen nhanh hơn cũng như tiết kiệm được thời gian trong việc phát triển ứng dụng của mình
Thông số kỹ thuật
+ Điện áp MAX : 7V
+ Điện áp MIN : -0,3V
+ Hoạt động ổn định : 2.7-5.5V
+ Điện áp ra mức cao : > 2.4V
+ Điện áp ra mức thấp : <0.4V
+ Dòng điện cấp nguồn : 350uA - 600uA
+ Nhiệt độ hoạt động : -30 - 75 độ C
Trang 92 Thiết kế phần mềm
a Lưu đồ thuật toán
S
S
S
Đ
Đ
Đ
Ấn start
Kết thúc
Ấn stop Hiển thị Cảm biến thấp
S S
Vừa trừ 1 Cao cộng 1
Đ
Cảm biến cao
Thấp trừ 1 Vừa cộng 1
Đ
Cảm biến vừa Thấp cộng 1
Trang 10Bước 1: Bắt đầu chương trình, kiểm tra bấm nút start, nếu sai thì quay lại kiểm tra đã bấm nút start hay chưa, nếu đúng chuyển sang bước 2
Bước 2: Kiểm tra cảm biến vị trí thấp, nếu sai lặp lại quá trình kiểm tra cảm biến thấp, nếu đúng thì chuyển sang bước 3
Bước 3: Biến đếm vật thấp cộng 1 rồi chuyển sang bước 4
Bước 4: Kiểm tra cảm biến vật ở vị trí vừa, nếu sai thì chuyển đến bước 8, nếu đúng thì chuyển sang bước 5
Bước 5: Biến đếm vật thấp trừ 1, biến đếm vật cao cộng 1 rồi chuyển sang bước 6 Bước 6: Kiểm tra cảm biến vật ở vị trí cao, nếu sai thì chuyển đến bước 8, nếu đúng thì chuyển sang bước 7
Bước 7: Biến đếm vật vừa trừ đi 1, biến đếm vật cao cộng 1 rồi chuyển sang bước 8 Bước 8: Hiển thị giá trị vật cao, vừa và thấp rồi chuyển sang bước 9
Bước 9: Kiểm tra nút bấm stop, nếu sai thì quay lại bước 2, nếu đúng thì kết thúc chương trình
b Mô phỏng trên proteus
Hình 2 6: Mô phỏng bằng phần mềm Proteus
Trang 11III Kết quả
1 Mạch in
Hình 3 1: Mạch in 2D
Hình 3 2: Mạch in 3D
Hình 3 3: Mạch in thu được
Trang 122 Hình ảnh sản phẩm
Hình 3 4: Hình ảnh sản phẩm thu được
Hình 3 5: Hình ảnh sản phẩm thu được
Trang 13IV Thử nghiệm
1 Môi trường lý tưởng
Trường hợp này cho hệ thống làm việc trong môi trường ánh sang yếu
Thí nghiệm với số lượng và thứ tự sản phẩm là bất kì
Kết quả của quá trình thí nghiệm được ghi lại trong bảng 4.1
Lần
thứ
Số sản phẩm được chọn Kết quả thu được
Bảng 4 1: Kết quả thử nghiệm trong môi trường lý tưởng
2 Môi trường trong phòng nhiều đèn chiếu
Trường hợp này cho hệ thống làm việc trong phòng với nhiều đèn chiếu sang từ trên cao xuống
Thí nghiệm với số lượng và thứ tự sản phẩm bất kỳ
Kết quả của quá trình thử nghiệm được ghi lại trong bảng 4.2
Lần
thứ CaoSố sản phẩm được chọnVừa Thấp Cao Kết quả thu đượcVừa Thấp
Bảng 4 2: Kết quả thử nghiệm trong môi trường trong phòng nhiều đèn chiếu sáng
3 Môi trường ngoài trời buổi sáng
Trường hợp này cho hệ thống làm việc vào buổi sáng lúc trời có ánh nắng
Thí nghiệm với số lượng và thứ thự sản phẩm bất kỳ
Kết quả của quá trình thí nghiệm được ghi lại trong bảng 4.3
Trang 14thứ Cao Vừa Thấp Cao Vừa Thấp
Bảng 4 3: Kết quả thử nghiệm trong môi trường ngoài trời buổi sáng
V Đánh giá
1 Kết luận
Hệ thống chỉ có thể làm việc tốt trong môi trường có ánh sáng yếu, trong các môi trường khác kết quả thu được hầu như là không chính xác Nguyên nhân là do cảm biến vật cản hồng ngoại dễ bị tác động bởi ánh sáng từ môi trường xung quanh
2 Ưu nhược điểm
Ưu điểm:
Giá thành rẻ
Số đếm chính xác, hiển thị rõ ràng (trong môi trường lý tưởng)
Mạch điện không quá phức tạp
Đảm bảo được sự an toàn về điện
Dễ dàng sử dụng
Nhược điểm:
Bo mạch chưa hoàn toàn tối ưu
Chưa mang tính công nghiệp
Cảm biến dễ bị nhiễu
Khó đếm sản phẩm có độ phản xạ hồng ngoại kém
3 Hướng phát triển đề tài
Đây là một đề tài khá hay và được ứng dụng rất rộng rãi
Trong thực tế có rất nhiều dây chuyền phân loại sản phẩm sử dụng đặc tính khác nhau của sản phẩm như: phân loại sản phẩm theo kích thước, theo màu sắc, theo trọng lượng,…
Hiện nay, trên thị trường có rất nhiều loại cảm biến như cảm biến vật liệu, cảm biến quang, cảm biến điện dung, cảm biến từ tiệm cận,… được dùng rất nhiều trong các nhà máy xí nghiệp Từ đề tài mà chúng em vừa thực hiện có thể phát triển lên rất nhiều cấp độ và hướng khác nhau để đề tài có tính tối ưu và thực tế hơn
Trong thực tế khi đếm sản phẩm ta có thể áp dụng đồng thời nhiều cảm biến để quá trình phân loại tối ưu và phù hợp hơn với yêu cẩu của công nghệ
Trang 15VI Phụ lục
Chương trình điều khiển (code C)
#include <REGX51.H>
#define LCD_RS P2_0
#define LCD_RW P2_1
#define LCD_EN P2_2
#define LCD_D4 P2_4
#define LCD_D5 P2_5
#define LCD_D6 P2_6
#define LCD_D7 P2_7
#define cb1 P3_0
#define cb2 P3_1
#define cb3 P3_2
void delay_us(unsigned int t){
unsigned int i;
for(i=0;i<t;i++);
}
void delay_ms(unsigned int t){
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);}
void LCD_Enable(void){
LCD_EN =1;
Trang 16delay_us(3);
LCD_EN =0;
delay_us(50);
}
//Ham Gui 4 Bit Du Lieu Ra LCD
void LCD_Send4Bit(unsigned char Data){
LCD_D4=Data & 0x01;
LCD_D5=(Data>>1)&1;
LCD_D6=(Data>>2)&1;
LCD_D7=(Data>>3)&1;
}
// Ham Gui 1 Lenh Cho LCD
void LCD_SendCommand(unsigned char command){
LCD_Send4Bit(command >>4); /* Gui 4 bit cao */
LCD_Enable();
LCD_Send4Bit(command); /* Gui 4 bit thap*/
LCD_Enable();
}
void LCD_Clear(){ // Ham Xoa Man Hinh LCD
LCD_SendCommand(0x01);
delay_us(10);
}
// Ham Khoi Tao LCD
void LCD_Init(){
LCD_Send4Bit(0x00);
delay_ms(20);
LCD_RS=0;
LCD_RW=0;
Trang 17LCD_Send4Bit(0x03);
LCD_Enable();
delay_ms(5);
LCD_Enable();
delay_us(100);
LCD_Enable();
LCD_Send4Bit(0x02);
LCD_Enable();
LCD_SendCommand( 0x28 );
LCD_SendCommand( 0x0c);
LCD_SendCommand( 0x06 );
LCD_SendCommand(0x01);
}
void LCD_Gotoxy(unsigned char x, unsigned char y){
unsigned char address;
if(y==0)address=(0x80+x);
if(y==1)address=(0xC0+x);
if(y==2)address=(0xC5+x);
if(y==3)address=(0xC9+x);
if(y==4)address=(0xCD+x);
delay_us(1000);
LCD_SendCommand(address);
delay_us(50);
}
void LCD_PutChar(unsigned char Data){
LCD_RS=1;
LCD_SendCommand(Data);
LCD_RS=0 ;
Trang 18void LCD_Puts(char *s){
while (*s){
LCD_PutChar(*s);
s++;
}
}
void intro(){
LCD_Gotoxy(0,0);
LCD_Puts(" DO AN 1");
delay_ms(1000);
LCD_Gotoxy(0,1);
LCD_Puts(" DEM SAN PHAM");
delay_ms(1000);
LCD_Clear();
}
void main(){
int cao=0,vua=0,thap=0;
cb1=cb2=cb3=1;
LCD_Init();
delay_ms(20);
intro();
LCD_Gotoxy(0,0);
LCD_Puts(" SP CAO-VUA-THAP");
delay_ms(10);
while(1){
Trang 19while(!cb3);
thap++;
}
if(cb2==0){
while(!cb2);
vua++;
thap ;
}
if(cb1==0){
while(!cb1);
cao++;
vua ;
}
LCD_Gotoxy(0,2);
if(cao<10) LCD_PutChar(cao+48);
else{
LCD_PutChar(cao/10+48);
LCD_PutChar(cao%10+48);
}
delay_us(10);
LCD_Gotoxy(0,3);
if(vua<10) LCD_PutChar(vua+48);
if(vua>=10){
LCD_PutChar(vua/10+48);
LCD_PutChar(vua%10+48);
}
delay_us(10);
Trang 20if(thap<10) LCD_PutChar(thap+48);
if(thap>=10){
LCD_PutChar(thap/10+48);
LCD_PutChar(thap%10+48);
} delay_us(10);
}
}