PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 28-04-2008, 10:22 PM   #15
minhham
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 1
:
HT-PIC cho động cơ bước

chào các bác, em đang làm bài tập điều khiển động cơ bước loại 4 pha,2cuộn dây, 1 nguồn 5V chung cho 2 cuộn dây. Góc bước 7.5 độ. Làm và mô phỏng trên mạch thật mà mãi ko được. phát nản cả người. với đoạn code dưới thì động cơ quay bốn bước thì dừng, ko quay nữa, bấm nút thì động cơ lại quay tiếp.
Hình trên proteous mang tính chất minh họa, vì ko mô phỏng trên proteous
thuật toán là cứ sau mỗi lần cấp xung tới các cuộn dây của động cơ thì lại check nút bấm và cấp xung tiếp theo đúng chiều để động cơ quay cho phù hợp với yêu cầu nút bấm.
nếu bác nào có code về bài tập này thì up lên cho anh em xem với!
code:
// DIEU KHIEN DONG CO BUOC: loai 4 pha, goc buoc 7.5do, dien ap 5V
// Nut bam RB0 : Quay trai; nut RB1 : dung; RB2 : Quay phai
// yeu cau: dong co dang quay trai neu bam nut quay phai (mot lan, ko can bam nhieu lan) thi doi chieu va quay phai.
// dong co dang quay phai neu bam nut quay trai (mot lan) thi doi chieu va quay trai
// dong co dang quay bam nut dung thi dung lai, nhung PORTD van duoc xuat ra 1 gia tri bang gia tri cuoi cung ngay truoc khi dung

#include<pic.h>
__CONFIG(HS & PWRTEN & BOREN & LVPDIS & WDTDIS);
// ============= KHAI BAO CAC CHUONG TRINH CON ===========
// ============= CHU Y: phai xap xep theo dung thu tu chuong trinh con o duoi. Mot loi ngo ngan HAHAHA =========
char phimbam(void);
void DL(unsigned int i);

// ============= CHUONG TRINH CHINH ===========
void main ()
{ // ============= KHOI TAO ============
static char a; // bien a dieu khien trang thai hoat dong cua cua dong co
OPTION = 0b00000000; // dung prescaler cho timer0 voi ti le 1:2 Va dung tro keo len PORTB
TRISB = 0b00000111; // chan RB0, RB1, RB2 la input
TRISD = 0b00000000; // PORTD la cong ra
PORTD = 0b01010000; // PORTD gia su dang o vi tri dau ung voi gia tri 0b01010000, cac vi tri vai tro nhu nhau.
while (1)
{ a = phimbam();
if (PORTD == 0b01010000)
{ switch(a)
{ case 1 : { DL (5000); //trai
PORTD = 0b10010000; };
break;
case 2 : { DL (5000);
PORTD = 0b01010000; };
break;
case 3 : { DL (5000);
PORTD = 0b01100000; }; //phai
break;
};
};

if (PORTD == 0b10010000)
{ switch(a)
{ case 1 : { DL (5000); //trai
PORTD = 0b10100000; };
break;
case 2 : { DL (5000);
PORTD = 0b10010000; };
break;
case 3 : { DL (5000);
PORTD = 0b01010000; }; //phai
break;
};
};

if (PORTD == 0b10100000)
{ switch(a)
{ case 1 : { DL (5000); //trai
PORTD = 0b01100000; };
break;
case 2 : { DL (5000);
PORTD = 0b10100000; };
break;
case 3 : { DL (5000);
PORTD = 0b10010000; }; //phai
break;
};
};

if (PORTD == 0b01100000)
{ switch(a)
{ case 1 : { DL (5000); //trai
PORTD = 0b01010000; };
break;
case 2 : { DL (5000);
PORTD = 0b01100000; };
break;
case 3 : { DL (5000);
PORTD = 0b10100000; }; //phai
break;
};
};
}
}


// =========== CAC CHUONG TRINH CON ============
//==============================================
// chuong trinh "phimbam" phai lam sao de an 1 lan la duoc? chu ko can an nhieu lan hoac la phai giu nut an 1 luc ???????

static char phimbam(void)
{ if ((RB0==0)&&(RB1==1)&&(RB2==1)) return (1); // dong co quay trai

if ((RB1==0)&&(RB0==1)&&(RB2==1)) return (2); // dong co dung

if ((RB2==0)&&(RB1==1)&&(RB0==1)) return (3); // dong co quay phai
}
//================ HAM DELAY DUNG TIMER0 =============
void DL(unsigned int i)
{ while (i--)
{
TMR0 = 6;
T0IF = 0;
while (!T0IF);
};
}

-> động cơ quay bốn bước dừng chắc do biến ''a'' ko giữ được giá trị ở vòng while tiếp theo.
minhham vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Cách giao tiếp DS1877 và PIC6F877A nbqvdp Cơ bản về vi điều khiển và PIC 7 05-08-2010 06:46 PM
Hỏi về chương trình HTPIC của ngohaibac riquelme Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 26 20-01-2007 09:42 PM
Giúp đỡ về HTPIC riquelme Cơ bản về vi điều khiển và PIC 0 11-01-2007 11:56 PM
Giao tiếp Pic6f877A qua cổng máy in???? spirit Cơ bản về vi điều khiển và PIC 8 11-09-2006 01:04 PM


Múi giờ GMT. Hiện tại là 09:32 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam