|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机4相步进电机驱动程序和资料下载
. c" [5 \: p3 r; v" u9 k/ s8 u
: m ` [5 r7 s/ i# L2 D
4 P6 q* b+ C6 F- @# ~关于单片机驱动步进电机的资料.8 E( X% H5 w {. m; C# R7 Y t1 ?
3 s' U, j3 a" i. y1 `- @! n电机的电路原理图:
$ m" V4 d7 f: d
2 r- a& |% _" y
2 W/ |3 J" v+ [! q' l* X7 X$ w$ n5 c单片机程序:
8 t. \4 \+ ]( N3 {7 R0 n#include <reg52.h>* Y' E6 ]/ M& C: M
3 l3 N" S0 {6 ?# L" O, J. }! n
' Y1 ?* k& b( j! Q: ?. P! D8 _ W- B
. y+ U6 a; t! h& F6 A' c, ?8 z% }$ i' n$ Y# g- F4 m' k) I
//unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格$ R. m& S! m( q: B
//unsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格
$ w; V _* S+ \1 ?# p0 ?& x. A R! o1 s; o* C4 O& l
6 q. L% P& n6 K" s1 r% O
void delay(unsigned int i)//延时
9 j5 g5 w: h6 t$ p/ T' S3 s4 ?{/ x. ~: y9 [8 @ i- @
while(i--);
- o9 L. }' e; Y}
4 f9 L- n; p, o6 @5 {8 ^7 E g# {5 v1 fvoid main()
& v+ z: H( s! C+ V' W{
0 Y. Z+ Q+ |. p
8 a, @; e' ]% j! P6 j$ S% I C$ N& v" m% ?: f7 ?1 }
( i6 S# w" K* s0 J9 b% ?8 o while(1)
7 }0 ~9 Q( ]0 p! {5 u2 E {0 z0 a3 B4 o: p3 d+ i p, Y
//
5 K2 s+ I2 p# A2 a8 {9 n# j( y// P1=0x01; //输出对应的相 可以自行换成反转表格
6 q u/ D( y( {2 v! T! s// Delay(500); //改变这个参数可以调整电机转速
$ v$ _4 a. H1 h+ H5 y8 M2 J: ?// P1=0x02; //输出对应的相 可以自行换成反转表格
" t( v6 l* O1 @// Delay(500); //改变这个参数可以调整电机转速( P- Y9 d0 ^6 i" c' E& v% t) I
// P1=0x04; //输出对应的相 可以自行换成反转表格
0 f# ?) i1 o' C" }$ k2 \// Delay(500); //改变这个参数可以调整电机转速
/ F/ @6 X+ { H$ f4 O9 `9 ]0 n// P1=0x08; //输出对应的相 可以自行换成反转表格
I- V5 s; K. t) G. S4 |- M// Delay(500); //改变这个参数可以调整电机转速( F- {& ~; n8 w- C. j* N
P1=0x00;4 c e. i8 l d$ C$ x* y5 P- T* c$ V
delay(1000);; g% ?& b! s, q5 x( m
P1=0xff;& K8 O# G7 D1 n* O9 ^( r6 a' {) m
delay(1000);4 `3 @, V$ V9 l ~0 {
: z, h1 g' `2 m' R8 A3 {
# Z7 r/ O8 A( i3 X/ h9 T: ]
5 R' J+ z" Z( t d
) ~# r2 L: j% V; E7 N) O0 S% ^& m2 ^# ]8 k) c/ r- }4 O
}
% {" Q" k2 W7 X9 Q) Y9 M% c}
2 k" ?5 A: c5 z, p" b) ~9 }( ~& A/ Z" c# K
R$ n2 K1 o4 b
/*
6 ]* Q$ l z5 Y/ e6 e X 1、本程序用于测试4相步进电机常规驱动 ( S7 F7 ] X3 v9 b0 V) \+ u
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
. H5 s& \; f4 R0 y' [. r$ u 3、速度不可以调节的过快,不然就没有力矩转动了4 O2 Q4 D- g# J
可以按照给的原理图接线+ T9 d8 G1 q8 ^7 b# ^- a
接P1.1-P1.4
" ~5 b, y8 v; Q; a x/ o. X9 b*/% `3 a" Q! O8 O7 M) s
* w& |3 }! E. s w7 J
3 i' ^4 O3 `1 Z, u
6 p ~+ i) q2 x/ D! C( p. m+ C' T4 p4 h& E! G) ?
#include <reg52.h>
+ _: ?- {# A- y" M- ~0 f7 U' U& u
d4 M# A$ b) C: e
. a1 U) ?" E H0 w4 V& V- H
" s( G1 M" m% x4 n5 Z6 }" c& m) L: U! w& D; H' _% o1 v' {
unsigned char code F_Rotation[4]={0x02,0x04,0x08,0x10};//正转表格
3 p1 U& m6 F: s# Y1 h! uunsigned char code B_Rotation[4]={0x10,0x08,0x040,0x02};//反转表格0 W( P* {1 ?7 L o4 c
5 ~: }6 ~9 y( @1 b0 h/ K
. N% C9 m4 ~ a: O; [$ N0 S+ u; uvoid Delay(unsigned int i)//延时
( I) O- v7 |1 X1 H% e! G4 {* x R{
2 D- q5 J6 c, S while(--i); m
- P$ q0 y3 i/ ]* v% k- Y}1 F; C1 u6 {3 d! G
q$ { z) r$ c
g) x: w4 L, l! S
main(). E1 Y$ Q% r+ T; L% \' E
{
/ \$ L! |0 `" L( b' t& D 9 D4 k z' c. M+ _2 x7 ]3 n" Y
unsigned char i;
, y V# \1 h4 U
) d/ d3 E$ i4 T6 ]. n- G+ m0 p+ G9 k% F" D, ]- S
while(1)7 Y' R& \2 _' r
{. M6 x6 H: u# i* X/ c" w8 z+ I4 T
for(i=0;i<4;i++) //4相
/ `3 P6 ~3 O r6 ]3 c {
. f) M% w1 C" l& Q P1=F_Rotation; //输出对应的相 可以自行换成反转表格
/ r/ L7 |" I/ R7 ~ Delay(500); //改变这个参数可以调整电机转速
1 L& u( b- k$ G: a* o }" Z0 H4 |. M! Q" h" }9 A3 m
}
' |3 ]" [$ ?, K& B}
+ _6 e, ^" v$ Q
' l9 \& ]; N6 s% Z+ w6 a9 |! j
* ]3 S$ y5 l- R. b2 \
3 h0 L$ C$ n0 N" M % V% X$ K$ |+ N/ G
/ U9 W% _% `6 o0 l
+ X* z2 A5 \" O4 L* z
: ?8 c% j* v1 J6 R0 j3 \! \
9 B+ H. I, g$ [2 E b
|
|