Đề tài:
Phân loại sản phẩm theo mã vạch
I. Tổng quan các dây truyền phân loại sản phẩm
II. Mã vạch và ứng dụng
III. Giải pháp và mô hình dây truyền
1. Các Modul cho 1 hệ thống phân loại.
2. Mô hình dây truyền phân loại sản phẩm.
IV. Thiết kế các Modul
1. Băng tải:
Có nhiệm vụ vận chuyển sản phẩm hay hàng hoá đến các
vị trí kiểm tra phân loại lưu kho
2. Robot:
Trong mô hình này chúng em sử dụng 1 robot 2 bậc tự do
để loại sản phẩm. Vật A sau khi đi qua băng truyền và được kiểm tra phân
loại, vật được dừng lại tại vị trí đặt cảm biến. Tay robot có nhiệm vụ là gắp
vật A ra khỏi băng truyền, đặt vào kho chứa.
Tay robot làm việc theo tọa độ trục Decats : A(θ,z).
2 bậc tự do : → θ : quay quanh truc z
→ z : lên xuống theo truc z
Nguyên lý làm việc :
Khi vật A đi đến vị trí đặt cảm biến và dừng lại tại đó, tay robot
từ vị trí Height (đặt công tắc hành trình) di chuyển xuống vị trí Low (đặt
công tắc hành trình) cũng theo trục z tay gắp (đặt công tắc hành trình) gắp
vật, nâng vật A lên vị trí height chạm vào công tắc và đồng thời quay thân
theo trục z cho đến khi chạm vào công tắc hành trình thì dừng lại → hạ tay
robot xuống cho đến khi chạm vào công tắc hành trình tại vị trí Low → nhả
vật A rồi quay về vị trí ban đầu tiếp tục cho quá trình gắp vật tiếp theo.
1. Thiết kế :
Quay thõn : Dựng ng c gn thng trc bờn di tm Bớch
trũn
S lng 2 tm Bớch:
- Tm di c bt c nh
- Tm trờn c gn vi ng c v phn thõn
robot.
Nõng thõn :
Di chuyn lờn xung theo trc z.
Trc vớt c gn vi 1 ng c v ren trờn trc vớt c
gn vi 1 ai c c nh trờn tay robot, khi ng c quay s lm trc vớt
quay theo ng thi tay robot c nõng lờn or h xung tựy theo chiu
quay ca ng c.
Tay robot c gn c nh vi 2 thanh trt 2 bờn thõn
robot.
Tay gp :
C cu gp nh cng dựng trc vớt c gn vi 1 ng
c nm trờn tay robot khi ng c quay thun thỡ tay kp v ngc li.
Chọn sơ đồ nguyên lý và kết cấu Robot
Sơ đồ nguyên lý của Robot phải phù hợp với các yêu cầu sau:
* Thể hiện đầy đủ các chức năng, bộ phận của Robot và các đặc điểm của
từng loại.
* Thân Robot có kết cấu phù hợp với chức năng làm việc của Robot. Kết cấu
đủ vững chắc để đảm bảo công suất làm việc của Robot bao gồm, sức nâng
thân Robot và lực nâng chi tiết khi thao tác. Lực và momen quán tính ở tay
máy.
* Có hệ thống điều khiển.
* Hệ truyền động khí nến đối với truyền động kẹp nhả tay máy.
* Hệ truyền động thuỷ lực để truyền động theo phơng z và đẩy tay máy theo
phơng r trong hệ toạ độ M (r,
, z)
* Sơ đồ hệ thống cơ khí đối với truyền động quay thân Robot.
Phân tích với yêu cầu của đề bài:
* Robot làm việc trọng hệ toạ độ trụ M (r,
, z) nên làm việc rất khoẻ nhng
nhợc điểm là khó làm việc với những vị trí sát chân và tính cơ học không
cao.
* Với cơ cấu truyền động nh sơ đồ đã cho, ta thấy rằng Robot có thể tham
gia cùng lúc 2 chuyển động chính là chuyển động tịnh tiến đồng thời quay
quanh trục z của thân Robot và chuyển động tịnh tiến đồng thời quay theo
phơng r của tay máy để thực hiện việc gắp nhả vật từ vị trí A sang vị trí B.
* Thiết kế Robot nhấc vật nặng đòi hỏi độ cứng vững nhất định, hệ truyền
động phải tạo ra áp lực đủ lớn để nâng và di rời vật. Do đó khi thiết kế cần
hợp lý hoá 1 số thông số kỹ thuật để đảm bảo yêu cầu của bài toán
Tính toán thiết kế
- Robot nâng vật có khối lng m
VÂT
= 0,5kg. Lực kẹp vật phải thắng
đợc trọng lực của vật cần nâng
=> 2T
VÂT
> m
V
. g Chọn hệ số an toàn = 1,5
=> T
VÂT
= k.m
V
.g/2 = 1,5.0,5.10/2 = 3,75 (N)
Chọn : T
VÂT
= 4(N)
Mặt khác ta lại có T
VÂT
= P
VÂT
.k.S
với P
VÂT
: Lực kẹp của cơ cấu gắp
k: Hệ số ma sát của tay máy và vật (chọn bằng 0,25)
S: Diện tích mặt tiếp xúc (Chọn bằng 5cm
2
)
P
VÂT
= T
VÂT
/k.S = 3,75/0,25.5 = 3 (N)
- Điều kiện để khi gắp vật mà cánh tay robot đợc giữ cân bằng :
đòi hỏi phải đi tìm L
1
khi đã biết L
2
25cm
Chọn động cơ có khối lợng m
DC
= 0,8kg đợc lắp trong khoảng L1 (cha biết)
trên tay máy.
Khi gắp vật : W
1
.L
1
= W
VAT
.L
2
L
1
= W
VAT
.L
2
/ W
1
Trong đó : W
1
= m
DC
.g = 0,8.10 = 8 (N)
W
VAT
= m
V
.g = 0,5.10 = 5(N)
Vậy : L
1
= W
VAT
.L
2
/ W
1
= 5 . 25/8 = 15,7cm
khi không gắp vật : W
1
.L
1
= L
2
L
1
= L
2
/ W
1
= 25/8 = 3,3 cm
chiều dài trung bình trong 2 trờng hợp trên :
L
1
= (15,6 + 3,3) = 10 cm
3. Mch ng lc iu khin ROBOT v bng ti
o Bng ti: S dng ng c DC 1 chiu 12V c u ni
trc tip vo chõn Q1 ca LOGO 1
L1 L2=25
L0=20
W
VAT
W1
o Mạch role: Gồm 6 role chia thành 3 cặp nhiệm vụ điều
khiển 3 động cơ DC kết nối tới các chuyển động của Robot bao gồm gắp nhả
- nâng hạ - quay thân.
• Chuyển động quay thân được LOGO 1 điều khiển
• Chuyển động Gắp nhả - nâng hạ được LOGO 2
điều khiển
4. Mạch ghép nối máy tính sử dụng chip ATMEGA16L
• Nguyên lý:
• Lắp dựng:
5. Lập trình:
a. Trên thiết bị LOGO:
Sử dụng phần mềm LOGO!Soft Comfort V5.0?
Các chuyển động của Robot và băng truyền được lập trình thông qua 2 bộ Logo
• Logo1 : Điều khiển động cơ băng truyền và chuyển động quay thân
của Rôbốt
Bảng biến:
Start : I1
Stop : I2
Tín hiệu từ máy tính : I3
CTHT gắp : I4
CTHT nhả : I5
CTHT nâng : I6
CTHT vị trí A : I7
CTHT vị trí B : I8
Băng truyền chạy : Q1
Băng truyền dừng : Q2
Thân Robot quay thuận (AB) : Q3
Thân Robot quay ngược (BA) : Q4
• Logo2: điều khiển chuyển động nâng hạ thân và gắp nhả
của tay Rôbốt
Bảng biến:
I1: được nối với cổng Q1 và Q2 của hệ bộ Logo1
CTHT gắp : I2 Q1
CTHT nhả : I3 Q2
CTHT nâng : I4 Q3
CTHT hạ : I5 Q4
CTHT vị trí A : I6
CTHT vị trí B : I7
b. Lập trình mạch ghép nối máy tinh:
Đã thử nghiệm thành công khi truyền nhân 32 byte từ máy tính xuống và gửi
dữ liệu 32 byte từ mạch điều khiển lên
Thiết lập cổng vào ra:
Khi xem xét đến các cổng I/O của AVR thì ta phải xét tới 3 thanh ghi
bit DDxn,PORTxn,PINxn.
-Các bit DDxn để truy cập cho địa chỉ xuất nhập DDRx. Bit DDxn
trong thanh ghi DDRx dùng để điều khiển hướng dữ liệu của các chân của
cổng này.Khi ghi giá trị logic ‘0’ vào bất kì bit nào của thanh ghi này thì nó
sẽ trở thành lối vào,còn ghi ‘1’ vào bit đó thì nó trở thành lối ra.
-Các bit PORTxn để truy cập tại địa chỉ xuất nhập PORTx. Khi
PORTx được ghi giá trị 1 khi các chân có cấu tạo như cổng ra thì điện trở
kéo là chủ động(được nối với cổng).Ngắt điện trở kéo ra, PORTx được ghi
giá trị 0 hoặc các chân có dạng như cổng ra.Các chân của cổng là 3 trạng
thái khi 1 điều kiện reset là tích cực thậm chí xung đồng hồ không hoạt
động.
-Các bit PINxn để truy cập tại địa chỉ xuất nhập PINx. PINx là các
cổng chỉ để đọc,các cổng này có thể đọc trạng thái logic của PORTx.PINx
không phải là thanh ghi,việc đọc PINx cho
phép ta đọc giá trị logic trên các chân của
PORTx.chú ý PINx không phải là thanh
ghi,việc đọc PINx cho phép ta đọc giá trị
logic trên các chân của PORTx.
Nếu PORTxn được ghi giá trị logic ‘1’ khi
các chân của cổng có dạng như chân ra
,các chân có giá trị ‘1’.Nếu PORTxn ghi
giá trị ‘0’ khi các chân của cổng có dạng
như chân ra thì các chân đó có giá trị ‘0’.
Các cổng của AVR đều có thể đọc,ghi. Để
thiết lập 1 cổng là cổng vào ,ra thì ta tác
động tới các bit DDxn, PORTxn,PINxn.ta
có thể thiết lập để từng bit làm cổng vào,ra
cứ không chỉ với cổng,như vậy ta có thể sử
lí tới từng bit,đây chính là điểm mạnh của
các dòng Vi điều khiển 8 bit.
Ta có thể sử dụng CodeWizardAVR để thiết lập cho các PORTx và
Pinx. Ví dụ như trên hình:các bit 0,1,2,4,7 của PORTA làm chân ra có trở
kéo,còn các bit còn lại làm chân vào. Khi đã thiết lập xong thì các bit
0,1,2,4,7 sẽ có thể xuất dữ liệu ra còn các bit còn lại có thể nhận dữ liệu vào.
Việc thiết lập cổng vào ra là một việc quan trọng vì tùy theo mục đích sử
dụng các cổng nào làm cổng vào ra,thì ta phải thiết lập đúng thì mới có thể
sử dụng được, động tác này khác với họ vi điều khiển 8051- AT8951.
CodeVision:
Để tạo Project mới chọn trên menu: File New được như sau:
Chọn Project sau đó click chuột vào OK được cửa sổ hỏi xem có sử dụng
Code Winzard không:
Chọn Yes được cửa sổ CodeWinzardAVR như sau :
Sử dụng chíp AVR nào và thạch anh tần số bao nhiêu ta nhập vào tab Chip.
Để khởi tạo cho các cổng IO ta chuyển qua tab Ports.
Các chân IO của AVR mặc định trạng thái IN, muốn chuyển thành trạng thái
OUT để có thể đưa các mức logic ra ta click chuột vào các nút IN (mầu
trắng) để nó chuyển thành OUT trong các Tab Port.
Sau đó chọn File Generate, Save and Exit
Được cửa sổ yêu cầu nhớ các file của Project. Đây là ví dụ IO nên ta save
tên là IO.
Sau khi nhớ song 3 file : IO.c – IO.prj – IO.cwp được cửa sổ như sau:
Để dịch chương trình ấn F9 hoặc vào menu : Project Compile.Được cửa
sổ Information như sau:
Chương trình không có lỗi. Nhấp OK. Để nạp chương trình các bạn cần cấu
hình cho mạch nạp.
Trong tab After Make các bạn đánh dấu vào Program the Chip và nhấp OK.
Nhấn tổ hợp phím Shift + F9 được như hình bên. Cắm Jump mạch nạp
vào .Click vào Program. Đợi nạp xong nhổ jump nạp ra ấn Reset để thấy led
chạy.
Điều khiển I/O với LCD
Biết khởi tạo cho LCD với CodeWinzardAVR với bất kỳ cổng nào. Hiển thị
ra LCD các ký tự bất kỳ.
Ví dụ LCD được nối với PORTB.
Chức năng của LCD trong hầu hết các mạch, các bộ điều khiển đảm
nhân vai trò hiển thị các thông số, các thông tin mà chúng ta muốn nhập vào
hay các thông tin xử lý mà bộ điều khiển đang hoạt động đựoc hiển thị ra
màn hình, giúp chúng ta giao tiếp gần hơn với quá trình hoạt đông của hệ
thống. Loại LCD mà chúng ta sử dụng là loại SD-DM1602A 2 dòng mổi
dòng 16 kí tự, loại này do Trung Quốc sản xuất . Nó có 16 chân như hình vẽ.
Trong đó chúng ta có thể thấy 2 chân 1,2 được cấp nguồn cho LCD hoạt
động, chân thứ 3 (chân VSS) được nối vào đầu ra của biến trở dùng để điều
chỉnh độ tương phản (phải điều chỉnh VSS hợp lý thì LCD mới hiển thị
được) 2 chân 15,16 đây là 2 chân cấp nguồn dung để bật đèn của LCD từ
chân 4-
>14 là các chân điều khiển được nối với vi điều khiển, các chân 4,5,6 được
để điều khiển hoạt động của LCD, các chân còn lại là 8 bit Data dùng để
truyền nhận dữ liệu. Chúng ta có thể giao tiếp Data 8 bit hoặc 4 bit như
trong mạch của chúng ta truyền Data dưới dạng 4 bit. Việc truyền dưới dạng
4bit hoặc 8 bit phải được thiết lập cả phần cúng và phần mềm.
Các bước khởi tạo trong CodeWinzard như sau:
Trong cửa sổ CodeWinzard, chọn tab LCD, trong list mặc định là None, các
bạn chuyển thành PORTB cho phù hợp với phần cứng của KIT( thiết kế
LCD ở PORTB). Chọn File Generate, Save and Exit được như sau:
Code cho LCD các bạn có thể tham khảo trong Help bằng cách chọn
trên menu Help Help Topic(hoặc ấn F1). Được cửa sổ Help như sau:
Trong vòng while(1) trong hàm main ta viết các câu lệnh như sau:
while (1)
{/
/ Place your code here
lcd_gotoxy(0,0);// Dua con tro ve goc, dong 0, cot 0
lcd_putsf("DKS-MTC-JACKY");// Hien thi dong chu
lcd_gotoxy(0,1);// Dua con tro ve dong 1, cot 0
lcd_putsf("Wellcome you"); // Hien thi dong chu
delay_ms(3000); // Tre 3 s
lcd_gotoxy(0,0); // Dua con tro ve dong 0 cot 0
lcd_putsf("embestdks.com"); // Hien thi dong chu
delay_ms(3000); // Tre 3 s
};
Code lập trình truyền nhận dữ liệu với máy tính
// ===============Ngat nhan USART=============
#define RX_BUFFER_SIZE 32
char rx_buffer[RX_BUFFER_SIZE]; // Bo dem nhan
rx_buffer[RX_BUFFER_SIZE]
#if RX_BUFFER_SIZE<256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR |
DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index]=data;
if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index];
if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
//
// USART Transmitter buffer
// ==================Ngat truyen USART=============
#define TX_BUFFER_SIZE 32
char tx_buffer[TX_BUFFER_SIZE];
#if TX_BUFFER_SIZE<256
unsigned char tx_wr_index,tx_rd_index,tx_counter;
#else
unsigned int tx_wr_index,tx_rd_index,tx_counter;
#endif
// USART Transmitter interrupt service routine
interrupt [USART_TXC] void usart_tx_isr(void)
{
if (tx_counter)
{
tx_counter;
UDR=tx_buffer[tx_rd_index];
if (++tx_rd_index == TX_BUFFER_SIZE) tx_rd_index=0;
};
}
#ifndef _DEBUG_TERMINAL_IO_
// Write a character to the USART Transmitter buffer
#define _ALTERNATE_PUTCHAR_
#pragma used+
void putchar(char c)
{
while (tx_counter == TX_BUFFER_SIZE);
#asm("cli")
if (tx_counter || ((UCSRA & DATA_REGISTER_EMPTY)==0))
{
tx_buffer[tx_wr_index]=c;
if (++tx_wr_index == TX_BUFFER_SIZE) tx_wr_index=0;
++tx_counter;
}
else
UDR=c;
#asm("sei")
}
#pragma used-
#endif
c. Lập trình trên máy tính:
Visual Basic còn có hai dạng khác: Visual Basic for Application (VBA) và
VBScript. VBA là ngôn ngữ nằm phía sau các chương trình Word, Excel, MSAccess,
MSProject, .v.v còn gọi là Macros. Dùng VBA trong MSOffice, ta có thể làm tăng chức
năng bằng cách tự động hóa các chương trình. VBScript được dùng cho Internet và
Operating System.
Đặc trưng cơ bản của Visual Basic
- Trực quan
- Lập trình theo sự kiện
- Hướng đối tượng
Các phiên bản Visual Basic 6
Có ba ấn bản VB6: Learning, Professional và Enterprise.
Professional cung cấp đầy đủ thong tin mà bạn cần để học và triển khai một chương trình
VB6, nhất là các control ActiveX. Ngoài đĩa compact chính cho VB6, tài liệu đính kèm
gồm có sách Visual Studio Professional Features và hai đĩa CD Microsoft Developer
Network (MSDN).
Ấn bản Enterprise là ấn bản Professional cộng thêm các công cụ Back Office chẳng hạn
như SQL Server, Microsoft Transaction Server, Internet Information Server.
Cách cài đặt VB6
Để cài đặt VB6, máy tính của bạn cần phải có một ổ đĩa CD-ROM (CD drive) . Bạn cần
ít nhất 32 MB RAM, 2 GB hard disk và CPU Pentium II. Khi cho VB6 CD vào CD drive,
nó sẽ tự khởi động để hiển thị menu cho bạn chọn những thứ gì cần Setup.
+ Bấm Install Visual Basic 6.0 để cài VB6. Ngoại trừ các file hệ điều hành (Operating
System) trong thư mục (folder) \Os, các file trong đĩa compact đều không bị nén. Vì thế,
bạn có thể sử dụng chúng trực tiếp từ đĩa. Ví dụ, có nhiều công cụ và thành phần trong
folder \Tools vốn có thể được cài đặt trực tiếp từ CD-ROM.
Ngoài ra, bạn có thể chạy Setup khi nào cần thiết. Ví dụ, bạn có thể chạy Setup để cài đặt
lại Visual Basic trong folder khác, hoặc để cài đặt thêm bớt các phần của VB6.
Nếu vì lý do gì hệ thống không install các đĩa compact MSDN (Không có Help khi chạy
VB6), bạn có thể cài đặt chúng trực tiếp từ đĩa số 1 của bộ MSDN.
+ Để bổ xung và xóa các thành phần VB làm như sau:
a. Bỏ đĩa compact vào CD drive.
b. Nếu menu không tự động hiện lên thì chạy chương trình Setup có sẵn tong folder
gốc trên đĩa compact.
c. Chọn nút Custom trong hộp thoại (dialog) Microsoft Visual Basic 6.0 Setup.
d. Chọn hay xóa các thành phần bằng cách check hay uncheck các hộp danh sách
Options của dialog Custom.
e. Thực hiện các chỉ dẫn Setup trên màn hình.
Ghi chú: Trong lúc cài VB6, nhớ chọn Graphics nếu không bạn sẽ thiếu một số hình ảnh
như icons, bitmaps v.v
Môi trường phát triển tích hợp của VB (Integrated Development Environment -
IDE)
Khi khởi động VB6 bạn sẽ thấy mở ra nhiều cửa sổ (windows), scrollbars, v.v VB6 cho
bạn chọn một trong nhiều loại ứn dụng.
Chọn Standard EXE, ta có cửa sổ làm việc của môi trường phát triển tích hợp (IDE) như
sau:
* Các thành phần của IDE:
- Menu Bar
Chứa đầy đủ các commands mà bạn sử dụng để làm việc với VB6, kể cả các menu để
truy cập các chức năng đặc biệt dành cho việc lập trình chẳng hạn như Project, Format,
hoặc Debug.
- Toolbars (Debug, Edit, form Editor, Standard)
Các toolbars có hình các icons cho phép bạn click để thực hiện công việc tương đương
với dùng một menu command, nhưng nhanh và tiện hơn.
Để ẩn hoặc hiện các toolbars dùng menu command View | Toolbars.
Ngoài ra bạn cũng có thể sửa đổi các toolbars theo ý thích bằng cách dùng Menu
command View | Toolbars | Customize
- Toolbox
Đây là hộp các công cụ điều khiển, mà bạn có thể đặt lên các form trong lúc thiết kế. Nếu
Toolbox biến mất, bạn có thể làm nó trở lại bằng cách dùng menu command View |
Toolbox.
Bạn có thể khiến toolbox hiển thị nhiều controls hơn bằng cách dùng menu command
Project | Components.
Project Explorer