Chức năng: điều khiển các cơ cấu của robot thực hiện các thao tác nhằm ghi điểm với các cấu kiện.
[warning title="BÀI TRƯỚC" icon="exclamation-triangle"]Bài 11:Thuật toán dò đường
[/warning]
Ví dụ: khi robot muốn đặt cấu kiện vào kim tự tháp chẳng hạn, nó phải thực hiện một số thao tác như, đẩy cấu kiện và đúng vị trí, đặt cấu kiện xuống.v.v.
Ở đây ta mô phỏng thao tác kéo xuống để đưa cấu kiện xuống.
Thuật toán:
Giải thích cho thuật toán:
- Chọn chiều thao tác: muốn robot thao tác kéo lên hay xuống thì đầu tiên là chọn chiều quay của động cơ.
- Nạp thời gian thực hiện thao tác: Thông thường để kiểm tra một thao tác thực hiện được kết thúc khi nào thf người ta sử dụng các công tắc hành trình như đã nói ở trên, nhưng để an toàn hơn trong trường hợp công tắc hành trình có thể hỏng do va đập nhiều, ta có thể tính toán khoảng thời gian thực hiện thao tác để kết thúc thao tác trong trường hợp công tắc bị hỏng. Khoảng thời gian tính toán phải đủ để lớn hơn thời gian chạm công tắc hành trình, vì ưu tiên kiểm tra công tắc hành trình trước.
- Chạy cơ cấu: Cấp nguồn cho động cơ thực hiện thao tác hạ cơ cấu để bỏ cấu kiện vào vị trí.
- Giảm thời gian thực hiện: đồng thời với việc thao tác, giảm thời gian thực hiện xuống.
- Kiểm tra : Nếu đã chạm công tắc hành trình: tức là cơ cấu đã đưa cấu kiện đến đúng vị trí cần để, nạp thời gian thực hiện về 0 và kết thúc thao tác. Nếu chưa chạm công tắc thì kiểm tra thời gian thực hiện.
- Kiểm tra : Nếu thời gian thực hiện đã bằng 0 thì dừng thao tác và kết thúc. Nếu thời gian thực hiện còn lớn hơn 0 thì tiếp tục thực hiện bước chạy cơ cấu.
Chương trình cho một thao tác:
void keo_xuong(void)
{
KEO_ROLE=0; // chọn chiều động cơ
KEO_MOTOR=80; // nạp tốc độ động cơ
CT_KEOXUONG=1;
int thoi_gian_thuc_hien=1000; // nạp thời gian thực hiện
while(thoi_gian_thuc_hien!=0) // trong khi chua het thoi gian
{
if(CT_KEOXUONG==1) // đã chạm công tắc hành trình
{
thoi_gian_thuc_hien==0;
// nạp thời gian thực hiện bằng 0 để kết thúc thao tác
}
else
thoi_gian_thuc_hien--; // giảm thời gian thực hiện xuống
}
KEO_MOTOR=0; // dừng động cơ
}
Đăng nhận xét