Như chúng ta đã biết Robot đang ngày càng phát triển trong xã hội công nghệ ngày này. Trong sinh hoạt hàng ngày con người luôn muốn đầu tư để có 1 cuộc sống hiện đại, tiện nghi nhất. Trong công nghiệp tất cả các công ty đang hướng đến tự động hóa hoàn toàn giúp giảm chi phi. Hôm nay Uniduc sẽ tìm hiểu về cánh tay Robot Arduino công nghệ cơ bản nhất của 1 nhà máy công nghiệp
Danh mục
Khái niệm cánh tay Robot Arduino
Cánh tay Robot Arduino là cánh tay Robot được điều khiển bởi bộ điều khiển Arduino. Nó là 1 cỗ máy tự động, mô phỏng hoạt động của 1 cánh tay con người. Cũng như cánh tay con người, cánh tay Robot yêu cầu sự khéo léo chính xác. Chúng gồm bắp tay, khuỷu tay cổ tay và cả bàn tay.
Ngày nay cánh tay Robot đang được sử dụng trong nhiều công việc khác nhau. Chúng có thể vận chuyển hàng hóa, hàn, sơn, kiểm tra,…. mỗi công việc đều được Robot hoàn thành tốt, giúp giảm thời gian vận hành, tăng chất lượng sản phẩm.
Yêu cầu công nghệ
Đối với 1 sản phẩm công nghệ, điều những người thợ vận hành, thợ sửa chữa cần biết đầu tiên là công nghệ sản xuất. Việc học được những công nghệ liên quan giúp hiểu rõ tổng quan sản phẩm từ đó hỗ trợ trong việc bảo trì, sửa chữa rất nhiều
Kết cầu cơ bản thiết bị cánh tay Robot Arduino
- Mô hình Conveyor (Băng tải): di chuyển phân phối hàng hóa
- Các Tray (phôi) đựng sản phẩm gồm 3 loại: màu đen, màu trắng và tray làm bằng sắt. Ngoài ra, trong quá trình sử dụng giữ lại các Tray hỏng, tray lỗi nhằm cho vào thiết bị để phân biệt với các loại Tray trên
- Van điện: giúp điều khiển tay kẹp và khớp tịnh tiến
- Cánh tay robot: ở đây chúng ta dùng cánh tay Robot 1 bậc đơn giản. Robot sẽ chỉ có nhiệm vụ gắp Tray và đưa sang vị trí làm việc tiếp theo
- Bộ nguồn 24VDC: nguồn giúp cung cấp đủ năng lượng 24VDC cho các linh kiện điện. Như van điện cảm biến và cà mạch điện tử.
- Board mạch Arduino Uno R3 ( Ngoài ra chúng ta còn có thể sử dụng bộ điều khiển S7-200 của Siemens cũng đơn giản và rẻ)
- CPU 214 AC/DC/RLY
- Cảm biến quang: sử dụng để nhận diện Tray
- Một số linh kiện cơ bản như nút bấm. đèn báo Alarm, khóa điện và mạch chuyển đổi
Cấu tạo cánh tay Robot Arduino
Cánh tay Robot Arduino đơn giản là trạm vận chuyển trung gian. Nó gồm 1 khớp tịnh tiến và 1 khớp xoay ở vị trí bàn tay là 1 Gripper (Tay kẹp) giúp gắp sản phẩm lên đưa đến vị trí làm việc mới
- Khớp Xoay: được lắp đặt 1 động cơ bước hay còn được gọi là Stepper Motor. Chúng giúp cánh tay Robot xoay vòng trong phạm vi cho phép. Giới hạn phạm vi được điều khiển bởi 2 công tắc hành trình, hoặc 2 Sensor từ
- Khớp tịnh tiến: ở đây dùng Silent (Xi lanh khí nén) điều khiển tịnh tiến tay Robot. Van điện 5/2 giúp điều khiển tự phục hồi. Silent đưa cánh tay Robot đến các vị trí cần thiết bằng cách đẩy ra và hút vào
- Vị trí tay Kẹp cũng được lắp đặt hệ thống van điện 5/2. Chúng được điều khiển để di chuyển Gripper lên xuống phù hợp khoảng cách Tray để gắp.
Nguyên lý hoạt động của cánh tay Robot Arduino
Chu kì hoạt động của Robot:
Khi Reset thiết bị tất các cơ cấu Robot sẽ trở về vị trí ban đầu (Home). Trường hợp Robot đang ở vị trí làm việc bị sập nguồn, khi thiết bị cấp lại nguồn Robot cũng sẽ tự động quay về vị trí home.
Toàn bộ chu kì hoạt động của Robot:
Bước 1: Xi lanh của Gripper được cấp hơi đi xuống đến vị trí sản phẩm
Bước 2: Gripper mở ra gắp sản phẩm
Bước 3: Xi lanh nhả khí giúp kép Gripper lên
Bước 4: Tín hiệu truyền đến động cơ bước, xoay cánh tay đến vị trí đã được thiết lập trước
Bước 5: Đến vị trí thiết lập, xi lanh cấp khí đi xuống
Bước 6: Gripper nhả kẹp sản phẩm
Bước 7: Xi lanh nhả khí
Bước 8: Quay về vị trí home và tiếp tục chu kỳ tiếp theo
Chế độ hoạt động
Gồm 2 chế độ: Auto và Manual
- Chế độ Auto: Thực hiện toàn bộ chu kỳ nói trên một cách tự động. Khi gặp vật cản Robot sẽ ngắt mạch điện trong vòng 1 giây. Với trường hợp người dùng muốn tạm dừng thiết bị, Robot sẽ thực hiện hết chu kỳ đang làm, rồi mới dừng
- Chế độ Manual: Chế độ này thường dùng để đánh giá thiết lập Robot và khi thay đổi sản phẩm mới. Người dùng có thể đưa Robot đi từ từ ở các Step (bước vận hành) để xem độ chính xác. Ngoài ra còn có thể điều khiển chọn vị trí gắp và đặt sản phẩm của động cơ bước
Mô phỏng cánh tay Robot
Sơ đồ thuật toán
Trong đó:
- a: Số độ góc quay thuận nghịch chế Manual
- b: Số độ góc quay thuận nghịch chế Auto
- c: Tốc độ động cơ
- u: Biến đếm số độ thuận
- v: Biến đếm số độ nghịch
- HVT(hạn vị trí): Giới hạn quay nghịch
Sơ đồ thuật toán chế độ Manual
Sơ đồ thuật toán chế độ Auto
Sơ đồ đấu dây
Thuật toán
</pre>
#define Step 2 //Chân cấp xung điều khiển động cơ
#define Dir 3 //Chân quy định chiều quay của động cơ
#define En 4 //Chân bật/tắt driver
#define Xl 5 //Chân điều khiển xi lanh
#define Tk 6 //Chân điều khiển tay kẹp
#define Start 13 //Chân nhận tín hiệu cho phép robot hoạt động từ PLC
#define Cb 12 //Chân kết nối với hạn vị (Home)
float S = 80; //Số độ động cơ bước quay
float chedodk = 1/16; //chế độ điều khiển (full step = 1 ; hafl step = 1/2 ;
//vi bước 1/4 ; 1/8 ; 1/16.
unsigned long td = 6; //Tốc độ quay của 1 bước ( 1 vi bước )
unsigned long t = millis()-td; //Biến thời gian tạm thời
float r = 0; //Biến đếm số độ đã quay
int u = 1; //Biến sử dụng cho chương trình xung
void setup() //Chương trình thiết lập ban đầu (chỉ chạy 1 lần)
{
Serial.begin(9600); //Giao tiếp giữa arduino và màn hình máy tính
pinMode(Dir,OUTPUT); //Quy định chân Dir là chân xuất tín hiệu
pinMode(Step,OUTPUT);//Quy định chân Step là chân xuất tín hiệu
pinMode(En,OUTPUT); //Quy định chân En là chân xuất tín hiệu
pinMode(Xl,OUTPUT); //Quy định chân Xl là chân xuất tín hiệu
pinMode(Tk,OUTPUT); //Quy định chân Tk là chân xuất tín hiệu
pinMode(Start,INPUT); //Quy định chân Nut là chân nhận tín hiệu
pinMode(Cb ,INPUT); //Quy định chân Cb là chân nhận tín hiệu
digitalWrite(En,HIGH);//Xuất tín hiệu mức cao cho chân En (bật driver)
digitalWrite(Dir,HIGH);//Xuất tín hiệu mức cao cho chân Dir
//(quay cánh tay robot về vị trí ban đầu ban đầu)
digitalWrite(Xl,HIGH);
digitalWrite(Tk,HIGH);
S=S/chedodk; //Nhân với hệ số vi bước ( chế độ vi bước 1/16)
Serial.print("Số độ động cơ cần quay = ");//Hiển thị text (không xuống dòng)
Serial.print(S/16); //Hiển thị giá trị S vừa nhập vào
Serial.println(" độ ");
Serial.print("Quay với tốc độ : ");
Serial.print(60/(200*td/chedodk));
Serial.println(" vòng/phút ");
td=td/2;
vitribandau: //Mặc định vị trí ban đầu cho cánh tay robot
if(digitalRead(Cb)==0)
{
for(;;)
{
xung();
if(digitalRead(Cb)==1)
{
goto vitribandau;
}
}
}
}
void loop() //Vòng lặp chính
{
AUTO(); //Gọi chương trình con AUTO
}
void AUTO() //Khai báo chương trình con AUTO
{
quaythuan: //Khai báo nhãn quaythuan:
if(digitalRead(Start)==1)
{
Serial.println("Tay gắp đi xuống");
digitalWrite(Xl,0);//Xuất tín hiệu mức logic cho chân Xl(Xi lanh đẩy ra)
delay(1500);
Serial.println("Tay gắp kẹp sản phẩm");
digitalWrite(Tk,0);//Xuất tín hiệu mức logic cho chân Tk(Tay kẹp gắp sản phẩm)
delay(500);
Serial.println("Tay gắp đi lên");
digitalWrite(Xl,1);//Xuất tín hiệu mức logic cho chân Xl(Xi lanh đi về)
delay(1500);
Serial.println("Động cơ Quay thuan");
digitalWrite(Dir,LOW); //Xuất tín hiệu mức LOW cho chân Dir (Động cơ quay thuận)
r=0; //Gán biến đếm số độ đã quay = 0
for(;;) //Tạo vòng lặp con lặp không giới hạn
{
xung(); //Gọi chương trình con xung
if(r>=S) //Nếu số độ đã quay (r) >= Số độ nhập vào (S) thì
{
delay(500); //Tạo trễ
goto quaynghich; //Nhảy đến nhãn quaynghich:
}
}
quaynghich: //Khai báo nhãn quaynghich:
Serial.println("Tay gắp đi xuống");
digitalWrite(Xl,0);//Xuất tín hiệu mức logic cho chân Xl(Xi lanh đẩy ra)
delay(1500);
Serial.println("Nhả sản phẩm");
digitalWrite(Tk,1);//Xuất tín hiệu mức logic cho chân Tk(Tay kẹp nhả sản phẩm)
delay(500);
Serial.println("Tay gắp đi lên");
digitalWrite(Xl,1);//Xuất tín hiệu mức logic cho chân Xl(Xi lanh đi về)
delay(1500);
digitalWrite(Dir,HIGH);//Xuất tín hiệu mức HIGH cho chân Dir (Động cơ quay nghịch)
Serial.println("Động cơ Quay nghich");//Hiển thị text Quay nghich
for(;;) //Tạo vòng lặp con lặp không giới hạn
{
xung(); //Gọi chương trình con xung
if(digitalRead(Cb)==1)
{
goto quaythuan; //Nhảy đến nhãn quaythuan:
}
}
}
}
void xung() //Khai báo chương trình con xung ( Tạo xung PWM )
{
if((u==1)&&(millis()-t>=td)) //Nếu u=1 và (millis()-t>=td) thì:
{
digitalWrite(Step,1); //Xuất tín hiệu mức logic 1 cho chân Step (Xung cao)
u=0; //Gán u=0
r+=0.9; //r=r+0.9 ; mỗi lần thực hiện r sẽ tăng lên 0.9
t=millis(); //Gán giá trị thời gian tạm thời = thời gian hiện tại
}
if((u==0)&&(millis()-t>=td)) //Nếu u=0 và (millis()-t>=td) thì:
{
digitalWrite(Step,0); //Xuất tín hiệu mức logic 0 cho chân Step (Xung thấp)
u=1; //Gán u=1
r+=0.9; //r=r+0.9 ; mỗi lần thực hiện r sẽ tăng lên 0.9
t=millis(); //Gán giá trị thời gian tạm thời = thời gian hiện tại
}
}
<pre>
UNIDUC – KIẾN TẠO NHÀ MÁY SẢN XUẤT TỰ ĐỘNG
- Hotline: 089 6688 629 (Phòng kinh doanh)
- Địa chỉ: 22 Đường 54, Thảo Điền, Quận 2, TP.HCM
- Email: [email protected]
- Website: https://maysanxuattudong.com
1 phản hồi
Pingback: Arduino Uno là gì? 5 loại Arduino Uno được sử dụng nhiều