Đề tài:
Phân loại sản phẩm theo mã vạch
I.
II.
III.
Tổng quan các dây truyền phân loại sản phẩm
Mã vạch và ứng dụng
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ơ gắn thẳng trục bên dưới tấm Bích
tròn
Số lượng 2 tấm Bích:
- Tấm dưới được bắt cố định
- Tấm trên được gắn với động cơ và phần thân
robot.
Nâng thân :
Di chuyển lên xuống theo trục z.
Trục vít được gắn với 1 động cơ và ren trên trục vít được
gắn với 1 đai ốc cố định trên tay robot, khi động cơ quay sẽ làm trục vít
quay theo đồng thời tay robot được nâng lên or hạ xuống tùy theo chiều
quay của động cơ.
Tay robot đươc gắn cố định với 2 thanh trượt 2 bên thân
robot.
Tay gắp :
Cơ cấu gắp nhả cũng dùng trục vít đươc gắn với 1 động
cơ nằm trên tay robot..khi động cơ quay thuận thì tay kẹp và ngược lại.
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 lượng mV¢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
=> 2TV¢T> m V . g
Chän hÖ sè an toµn = 1,5
=> TV¢T= k.mV.g/2 = 1,5.0,5.10/2 = 3,75 (N)
Chän : TV¢T= 4(N)
MÆt kh¸c ta l¹i cã TV¢T= PV¢T.k.S
víi PV¢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 5cm2)
Þ PV¢T = TV¢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 :
W1
L1
L2=25
WVAT
L0=20
®ßi hái ph¶i ®i t×m L1 khi ®· biÕt L2 25cm
Chän ®éng c¬ cã khèi lîng mDC = 0,8kg ®îc l¾p trong kho¶ng L1 (cha biÕt)
trªn tay m¸y.
Khi g¾p vËt : W1.L1 = WVAT.L2 Þ L1 = WVAT.L2/ W1
Trong ®ã : W1 = mDC.g = 0,8.10 = 8 (N)
WVAT = mV .g = 0,5.10 = 5(N)
VËy : L1 = WVAT.L2/ W1 = 5 . 25/8 = 15,7cm
khi kh«ng g¾p vËt : W1.L1 = L2 Þ L1 = L2/ W1 = 25/8 = 3,3 cm
Þ chiÒu dµi trung b×nh trong 2 trêng hîp trªn :
L1 = (15,6 + 3,3) = 10 cm
3. Mạch động lực điều khiển ROBOT và băng tải
o Băng tải: Sử dụng động cơ DC 1 chiều 12V được đấu nối
trực tiếp vào chân Q1 của LOGO 1
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)
- Xem thêm -