| trợ giúp chương trình điều khiển động cơ bước???? | |
|
|
Tác giả | Thông điệp |
---|
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: trợ giúp chương trình điều khiển động cơ bước???? 12/05/11, 10:59 pm | |
| #include void Delay(unsigned int t) { unsigned int i,j; for(i=0;i<100;i++) for(j=0;j }
/* dieu khien dong co buoc*/ unsigned char m[]={0x01;0x02;0x04;0x08}; unsigned int a,b; void main() { while (1) { for (a=0;a<6;a++) for (b=0;b<4;b++) { P0=m[b]; delay(1000); } } }
mình muốn động cơ bước quay sao cho chỉ nhìn thấy động cơ quay 45 độ, như vậy là mỗi lần quay được 25 bước mỗi bước quay 1.8 độ, mà mình làm không chạy, mong các bạn trợ giúp mình cảm ơn mọi người | |
|
 | |
nhuphuzz Admin


Tổng số bài gửi : 432 Points : 14619 Reputation : 17 Join date : 18/10/2010
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 13/05/11, 12:08 am | |
| post cái sơ đồ kết nối phần cứng lên xem nào. Xem có giúp được gì không
Làm 25 bước thì thử cách này xem sao
void main() { while (1) { for (a=0;a<6;a++) for (b=0;b<4;b++) { P0=m[b]; delay(1000); c++; if c>24 then c=0; break; } } }
Ý tưởng của mình là mỗi khi động cơ quay một bước thì tăng biến c lên. nếu tăng lên 25 lần thì đủ yêu cầu và dùng lệng break để thoát khỏi vòng lặp. Có thể phải dùng thêm một vài lệnh break nữa để thoát hết những vòng lặp đó.
| |
|
 | |
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 13/05/11, 03:10 pm | |
| cảm ơn bạn Như Phú nhiều nhé thiếu sót quá hj2 đây là sơ đồ mạch, hiện giờ mình chỉ test thôi. mong các bạn chỉ dùm nhé [You must be registered and logged in to see this link.]nhưng nó cứ trơ đi chứ không hoạt động gì cả???? | |
|
 | |
nhuphuzz Admin


Tổng số bài gửi : 432 Points : 14619 Reputation : 17 Join date : 18/10/2010
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 13/05/11, 05:36 pm | |
| Sơ đồ kết nối như vậy thì bạn phải điều khiển bằng mức 0 chứ. Sửa đoạn unsigned char m[]={0x01;0x02;0x04;0x08};
thành unsigned char m[]={0x0E;0x0D;0x0B;0x07} Xem sao nhé.
Mà hình như khi mô phỏng không cần dùng 2803 đâu. Chỉ cần dùng điện trở kéo lên là được rồi. Mà có cũng không sao. hi hi | |
|
 | |
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 14/05/11, 01:32 pm | |
| mình dùng con đó là để nâng dòng thui mà nó là con đệm đảo nên có dữ liệu như vậy, nhưng mà mình thử rồi sao nó không chạy luôn ko biết thế nào đây? phú đã làm cái này lần nào chưa? chỉ mình với nhé! thank you! | |
|
 | |
nhuphuzz Admin


Tổng số bài gửi : 432 Points : 14619 Reputation : 17 Join date : 18/10/2010
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 17/05/11, 07:03 pm | |
| #include "reg52x2.h"
/*-----------------------------------------------------------------------------*/ //Ham delay /*----------------------------------------------------------------------------*/ void delay (unsigned long time) { while (time--) { unsigned char j = 125; while (j--); }; }
/* dieu khien dong co buoc*/ unsigned char m[]={0x01,0x02,0x04,0x08}; unsigned int a,b=0,c=0;
void main() { for (a=0;a<25;a++) { P0=m[b]; delay(100); b++; if (b>3) b=0; else continue; }; loop: goto loop; }
Cái này là chạy đúng 25 bước rồi dừng nha. | |
|
 | |
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 17/05/11, 08:38 pm | |
| cảm ơn phú nhiều nha!
nhưng mà phú đã test thử chưa? chứ mình thử mà nó không hoạt động gì cả??? không biết là nguyên nhân gì đây? nhờ phú test thử xem được không? làm phiền phú nhiều quá hj2 | |
|
 | |
nhuphuzz Admin


Tổng số bài gửi : 432 Points : 14619 Reputation : 17 Join date : 18/10/2010
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 17/05/11, 09:26 pm | |
| File mô phỏng nè. Động cơ sẽ dừng ở 42.3 độ. Do bị lùi nửa bước lúc khởi động. Nhưng cái chính là đoạn chương trình mình viết nó chạy đúng 25 bước he he. - Code:
-
http://www.mediafire.com/?v9khrl964ii5vdx | |
|
 | |
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 20/05/11, 12:57 am | |
| thank you phú nha cuối cùng củng test xong nó chạy rùi do sơ đồ khác nhau nên nó không chạy h chỉnh lại được rồi
| |
|
 | |
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 20/05/11, 01:04 am | |
| | |
|
 | |
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 20/05/11, 01:09 am | |
| /* Dieu khien day chuyen dong nap chai dung dong co buoc nhom: TRAN THANH BINH MSSV: 10301005 NGUYEN THI LE HANG MSSV: 103010
*/ // 2 Chan dieu khien dong co la : P2_7 // 4 chan de dieu khien : start,stop, Tang toc, giam toc // 2 chan bao hieu dong co dang o che do nao.
#include
/* Dinh nghia cac nut nhan*/ #define stop P1_0 #define start P1_1 #define tang P1_2 #define giam P1_3 #define daynap P1_6 #define dongnap P1_7
bit PWM; unsigned char dem=0; unsigned int phantram_PWM=10; //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Ham tao thoi gian tre*/
void delay(unsigned int t) { unsigned int i,j; for(i=0;i<100;i++) for(j=0;j } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Hien thi gia tri tang giam toc*/ unsigned char LED[10]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0xf8,0x80,0x10}; void hienthi(unsigned char digit1, unsigned char digit2) { /*Hien thi so thu nhat*/ P2=LED[digit1]; P3_4=1; delay(2); P3_4=0; /*Hien thi so 2*/ P2=LED[digit2]; P3_5=1; delay(2); P3_5=0; } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
/* Khoi tao Timer 100us*/
void khoitaohethong() { //ES=1; EA=0; TMOD=0x02; // che do 8 bit tu nap TH0=0x9b; // nap gia tri 155 ma hex TL0=0x9b; EA=1; TR0=1; ET0=1; P1_4=0; P0_0=0; P0_1=0; P0_2=0; P0_3=0; daynap=1; dongnap=1; } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Ngat tao ra PWM*/
void ngat_timer0(void) interrupt 1 { TR0=0; TF0=0; dem++; if(dem>=phantram_PWM) { PWM=1; } else { PWM=0; } if(dem==20) dem=0; TR0=1; } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Ham stop dong co*/ void stopdc(void) { P1_4=0; P3_2=0; P3_3=1; /*dong co buoc*/ P0_0=0; P0_1=0; P0_2=0; P0_3=0; /*day nap dong nap*/ daynap =1; dongnap =1;
} //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Ham start dong co*/ void startdc(void) { P1_4=PWM; P3_3=0; P3_2=1; } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Ham dieu khien tang toc*/ unsigned char tangtoc(void) { if(tang==0) { while(tang==0) {;} phantram_PWM--; delay(100); if(phantram_PWM<1) { phantram_PWM=1; } } return (phantram_PWM); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Ham dieu khien giam toc*/ unsigned char giamtoc(void) { if(giam==0) { while(giam==0) {;} phantram_PWM++; delay(100); if(phantram_PWM>20) phantram_PWM=20; } return (phantram_PWM); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* Lua chon che do cua dong co*/ unsigned char n; unsigned char chonchedo(void) { if(stop==0) n=1; if(start==0) n=2; switch(n) { case 0: {break;} case 1: {stopdc();break;} case 2: {startdc();break;} } return (n); } //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /* ham dieu khien dong co buoc*/ unsigned char m[]={0x01,0x02,0x04,0x08}; unsigned int a,c,b=0;
void dongcobuoc() { c=0; while(c<10) { for (a=0;a<25;a++) { P0=m[b]; delay(10); b++; if (b>3) b=0; else continue; }; delay(100); daynap =0; dongnap =0; delay(1000); daynap =1; dongnap =1; c++; } } //chuong trinh dieu khien dong co bang tai void dieukhientocdodc() { tangtoc(); giamtoc(); hienthi((20-phantram_PWM)/10,(20-phantram_PWM)%10); } /* Chuong trinh chinh*/ void main() { khoitaohethong(); chonchedo(); dongcobuoc(); dieukhientocdodc(); }
làm sao để toàn bộ chương trình này hoạt động đúng yêu cầu: -khi bật nút start động cơ bước chạy, động cơ thường củng chạy và củng hiển thị tốc độ ??thức trắng bao đêm mà không hoàn thiện được thời hạn thì củng sắp tới huhu mong các cao thủ về lập trình c chỉ giáo nhé! | |
|
 | |
tran_binh 4 sao


Tổng số bài gửi : 148 Points : 14003 Reputation : 9 Join date : 05/11/2010 Age : 34 Đến từ : nghệ an city
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước???? 20/05/11, 01:20 am | |
| //////////http://www.mediafire.com/?8d3e5osc3k99mz0/////// | |
|
 | |
Sponsored content
 | Tiêu đề: Re: trợ giúp chương trình điều khiển động cơ bước????  | |
| |
|
 | |
| trợ giúp chương trình điều khiển động cơ bước???? | |
|