找回密码
 注册
关于网站域名变更的通知
查看: 471|回复: 2
打印 上一主题 下一主题

C51步进电机转动原理

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-11-29 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
C51步进电机转动原理
. v7 q6 j; V3 f4 M% N/ P6 _0 x) n- W

+ K; t. e; B& I: ]9 x0 q/*------------------------------------------------ G& D- V1 R1 W; o  j& d$ n, s
  名称:步进电机, H* x8 J- ~; A: @& u
  修改:无
. [9 P! X+ b; W( _  F" y$ Z8 W  内容:本程序用于测试4相步进电机常规驱动 使用1相励磁3 N+ q6 j8 @7 m% n: k

. q" o( @8 {+ T# a: p ------------------------------------------------*/
4 K8 W9 V- E7 W, v
& }/ O/ G) u( Y% y#include <reg52.h>/ @, |& J. i/ e4 q% ?/ V

. f8 ~1 A% n$ u: y2 D' i: F. Z; j& T: g% c, t% L8 p

- \" X; e6 l" N1 H* m$ o+ jsbit A1=P1^0; //定义步进电机连接端口; Z% l9 K& Y  [9 u7 V. B
sbit B1=P1^1;  v% p2 X6 @+ y" v' x
sbit C1=P1^2;' x1 z( P4 K/ H$ ~7 t0 T
sbit D1=P1^3;8 A& H5 N& W: i4 x- p' Q! `) f0 l
( y. D1 f3 i% j! l& a) T

1 a! n2 K; O& p) F& b#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电$ w6 r  G1 A0 o! b& H5 V
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
  [( m" Z3 B( J+ l, `#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
5 D3 n; L8 o2 K) a9 v# D#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电$ z( B+ i9 \* L
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
9 R  ]+ Y: w* A: \2 m6 R. z. F- H4 Y8 n6 P( K" s5 i& U+ G5 Q2 f/ o" _
unsigned char Speed;
+ ]0 S4 t; ?: n- |! k0 F: Y/*------------------------------------------------. ~# [$ f( q1 I+ v0 G
uS延时函数,含有输入参数 unsigned char t,无返回值
' _% h+ C3 \, _8 Q! Z% T unsigned char 是定义无符号字符变量,其值的范围是
; Z- i# i2 U- [: Q 0~255 这里使用晶振12M,精确延时请使用汇编,大致延时8 z2 O/ r/ B/ q$ q7 k  p4 I
长度如下 T=tx2+5 uS & ~% A5 M, e1 {6 f
------------------------------------------------*/5 e. I3 ^, ~; Z4 l3 s
void DelayUs2x(unsigned char t)7 O5 y) J* E  m( a; f  x
{   . d& |$ z  |- i5 R, a/ C
while(--t);
+ C% ]$ n, [* B$ x2 D}
3 I$ j! z' p* z/*------------------------------------------------0 l" e, _0 |4 P' s, `1 Y6 M& N
mS延时函数,含有输入参数 unsigned char t,无返回值, q. I( w: }, {; ~5 R
unsigned char 是定义无符号字符变量,其值的范围是! J: E* g* c8 X; m" {$ @" r
0~255 这里使用晶振12M,精确延时请使用汇编
8 }1 @9 A4 P9 [& U- K------------------------------------------------*/
: c9 @+ r4 s3 j6 E1 Gvoid DelayMs(unsigned char t)- M  |( k& h6 G0 ]3 Q; R
{  |: |. o% P' E" [& `& g  {

8 B( M- ~) X/ D) Q& ~ while(t--)
- V# Y" N2 |3 a, x% x0 T {; ~# p/ q& l% O2 B
     //大致延时1mS
% g: ~* `9 s* F9 i1 T     DelayUs2x(245);
. |( X# \: ], }  C# d& E8 g         DelayUs2x(245);3 z6 `# D( I& r1 ]8 B4 K5 f6 r
}' A) P  R" x. e& P
}$ q2 Y$ B$ }  ~* d
/*------------------------------------------------1 s3 z6 }- F! N7 k
                    主函数
" q5 n/ b  i1 t2 e  ]/ I/ s% R/ u------------------------------------------------*/5 _& Z6 x/ y' [8 F8 R2 I9 w
main()
0 _* q' e1 E4 e  H/ o' d; W  L( i{8 ]7 u0 v0 k4 C( ]1 I
//unsigned int i=64*16; //转2周停止- V1 p: A0 \3 b5 }0 H: o! \
Speed=5; //调整速度( j! J7 N! I/ c- Z
while(1)  
3 m. l; {# {. |1 V  {         
: f* Y" B5 V6 E/ n  U; e1 |5 j     Coil_A1                 //遇到Coil_A1  用{A1=1;B1=0;C1=0;D1=0;}代替2 m& K- m9 G' G+ {
     DelayMs(Speed);         //改变这个参数可以调整电机转速 ,% o# ]0 H9 t5 w. X* b( T2 T
                                 //数字越小,转速越大,力矩越小
* r) J$ C' T% G0 Q- f     Coil_B1
! S7 H& {& ?7 @2 Q; }; T( i, ^3 `  b0 [7 ]     DelayMs(Speed);" k3 I# Y: Q3 w3 e' W/ s
     Coil_C17 o3 Z# w1 y2 p& Y
     DelayMs(Speed);/ [8 o; V) e' M% J
     Coil_D1
1 l6 b: D& x9 T0 M     DelayMs(Speed);3 `& C4 s: L$ I& Z: J/ T4 a& W
  }
8 d! P0 B! O, ]9 s- ]" X}- x1 u( q; O; ~+ l
5 R9 M6 k" Q3 ?1 j
游客,如果您要查看本帖隐藏内容请回复
4 K' M( [( S+ r  B

7 b/ D9 G. M5 G# f# ?6 m

该用户从未签到

2#
发表于 2018-11-29 10:22 | 只看该作者
路过进来看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 20:35 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表