Tài liệu chương 3: Thiết kế hệ Pan-Tilt - Pdf 98

chương 3: Thiết kế hệ Pan-Tilt
3.1. Yêu cầu:
- Đề tài yêu cầu thiết kế 1 hệ Pan-Tilt có thể quay quanh 2
trục Ox – Tilting, và Oy – Panning.

- Trên hệ Pan-Tilt ta gá cảm biến siêu âm SRF04, hệ Pan-Tilt
quay mang theo c
ảm biến và yêu cầu vẽ được biên dạng 2D của
vật đặt trước cảm biến.
3.2. Thiết kế:
- Dựa theo yêu cầu đề tài, xem cấu trúc của 1 hệ Pan-Tilt và
tham kh
ảo 1 số mẫu Pan-Tilt trên mạng, chúng em đã thiết kế được
1 hệ Pan-Tilt cơ bản, đáp ứng được yêu cầu mang SRF04 quay
quanh 2 trục Ox, Oz dễ dàng.
O
Z
Y
X
- Hai động cơ được sử dụng để thiết kế là 2 động cơ RC
Servo của hãng Futaba (các thông số như trình bày ở phần động cơ
servo), momen của chúng là 3.2 kg.cm đáp ứng đủ yêu cầu mang
sensor SRF04 quay mà không s
ợ bị quá tải.
- Cảm biến siêu âm SRF04 được gá trên top của hệ Pan-Tilt.
- Góc quay t
ối đa của mỗi servo là 120
0
(cả 2 phía), góc mở
của bộ phát của SRF04 là 30
0


Bắt đầu
reset
Xác đònh Xmax,
Xmin,Ymax,Ymin
Truyền lên máy tính
Đưa cảm biến về
Xmin, Ymax
Quét và gởi tọa độ lên
máy tính
b. Source Code: viết bằng phần mềm CodeVision.
reset_servoX(); // vi tri "0"
reset_servoY();

//*******xác định Ymin,Ymax;
Xmin,Xmas***************
axes = top(); // lấy giá trị Ymax - điểm cao nhất trên
cùng c
ủa vật
itoa(axes,Ymax);
axes = bottom(); // l
ấy giá trị Ymin -điểm thấp nhất dưới
cùng của vật
itoa(axes,Ymin);
axes = left(); // l
ấy giá trị Xmin - điểm ngoài cùng
bên trái c
ủa vật
itoa(axes,Xmin);
axes = right();


//***********thực hiện quét vật thể***********
for (y=j2;y>=j1;y )
{
for (x=i1;x<=i2;x++)
{
servoX += 4;
if (has_obj())
{
itoa(x,axis_OX);
itoa(y,axis_OY);
strcatf(axis_OX," ");
strcat(axis_OX,axis_OY);
puts(axis_OX);
delay_ms(100);
}

}
delay_ms(300);
servoX = iXmin;
servoY += 4;
delay_ms(300);
}
1.2. Chương trình con xác định X(min,max); Y(min,max):
a. Giải thuật chương trình con xác định Ymax:
c. Source Code:
//***********hàm xác định “top” - mép trên cùng của vật
int top(void)
{
unsigned char tang=1;

Đ
S
Return Y
Kết thúc
j2++;
if (servoY <= 461-20) //kiem tra Y max
goto
thoat;
else
kiemtra:
if (has_obj()) //kiem tra co vat
goto
Ytang;
else
{
if (tang == 1) //kiem tra X tang
{
servoX -=4;
if (servoX <= 461-10) //kiem tra X max
{
reset_servoX();
tang = 0;
}
else
goto
kiemtra;
}

if (tang ==0) //kiem tra X giam
{

ạy, INT2 chuyển qua dò
c
ạnh xuống
Khi ngắt cạnh xuống cho timer
dừng, đo khoảng time t từ lúc
có cạnh lên đến lúc có cạnh
xuống
t # timeout
Có vật
Không có
v
ật
Kết thúc
b. Source Code:
interrupt [EXT_INT2] void ext_int2_isr(void)
{
#asm("sei")
if (MCUCSR==0x40)
{

MCUCSR=0x00; //ngat canh xuong
TCNT0 = 0;
count=0; // tang 1 khi timer0 tran
lcd_clear();
}
else
{
echo = 1;
MCUCSR=0x40; //ngat canh len
value = (unsigned long)TCNT0 + ((unsigned


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status