|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
L298N+光耦驱动步进电机测试程序和原理图3 _, _! \4 @6 N) j5 o% |; c
# M5 D+ `0 }/ O ]& ?% K1 D
' c [2 k+ h3 a' O4 z# T) n; d " ]* j5 ]8 {7 f( f
: l6 v3 k1 I% w9 S
8 U, p0 V1 m/ y$ n7 q: ^下面是程序源码:
8 Z) C; j* d9 |+ m) r2 p4 x$ i \2 P1 F$ ]
/******************************步进电机的驱动*************************************
* D3 ?4 z# H* @;FOSC = 12MHz
# e2 z O1 A% ?* I( I2 m* t3 M( _. ]' k;---------------------------------------------------------------------------------
# Y' q1 s- d2 g; M! }" Q- H3 R; K; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!
4 e/ R: e( H. }+ C ?$ L; 本步进电机步进角为 5.625度 . 一圈 360 度 , 需要64个脉冲完成!!!8 l( Q* Q# ^! f F! v! y$ Q
;---------------------------------------------------------------------------------' B$ ]2 ^. \/ K2 R
; A组线圈对应 P0.0
4 j; E( ]0 R& Q/ d' B; B组线圈对应 P0.1
# ^ ^3 N" Y2 S; C组线圈对应 P0.22 P B% s9 H8 t" q A
; D组线圈对应 P0.3, s! k7 c% W- V6 `
; 正转次序: AB组--BC组--CD组--DA组 (即一个脉冲,正转5.625度)
7 G. ~! r0 {! [# E;----------------------------------------------------------------------------------
8 b- N' W6 Y& m) E**********************************************************************************/
9 o; {5 ]* K! Z5 z# a- r: m, L. d1 m, I+ B$ `5 S9 O" z
/*头文件*/' Z- Y j, ?4 f( U4 [2 y) f
#include 0 U5 J+ M! |! O# p+ |3 S) J
#include
& P+ Z6 i5 O, E I9 b( Q; V2 b#define uint unsigned int
2 \* A9 P7 `/ T6 e#define uchar unsigned char g1 L- Y! f, K
#define nop() _nop_(): b: W8 r% y( t2 d. `2 { z
; p3 w4 v- q; U" f4 k" j9 c6 j* A
uchar code table1[]={0x03,0x06,0x0c,0x09}; /*正转表*/
7 E' s5 A3 a" y" B3 Z9 Y: Kuchar code table2[]={0x03,0x09,0x0c,0x06}; /*反转表*/8 f; ]& s' V; ?8 k, G
#define motor P0- I9 p) y0 f( ?; l: f7 I
7 \1 `& F D, U
void delay(uchar ms) /*延时*/1 \% \ r: g: Y# X& u( C
{
# L1 g: ?4 x B! u( E uchar j;
. }- A4 j) g7 C/ M" z$ j while(ms--){( _: g9 h$ J2 F/ ^+ q, x
for(j=0;j<250;j++) R3 \$ d1 ]) V$ V! t: m
{;}
' Y9 h- z. e/ ^! V" ^1 v! }* _ }
/ f5 Y9 L/ g# O3 O. Y}
6 y$ b7 t, }- D7 o# R0 F
- s& k; J M3 h% E `void main()! R0 L2 G$ [5 f% ]. T
{
0 [4 Z; g2 Y, t6 p6 g# N uchar i,j;1 ]. G' V5 C! ]9 T" w
while(1){! _+ F: R8 {6 N' L1 @$ t
//正转3圈共192个脉冲9 @" X: P1 C8 R; H! E7 i
j=0;3 R! E, k0 s# G7 i( G+ v' j2 p: z
for(i=0;i<192;i++){7 o; `4 V$ ^3 v4 C- F' @
motor = 0x00;
, K6 \8 {# a$ d) w motor = table1[j];! I7 ^9 c: B6 n: z- l- [
j++;9 B" Q8 b9 u" ^) `* J$ j
if(j>=4) j=0;
0 O7 P9 D M3 I+ I( R! c' J# z delay(2);
! w( n, V( T% v }
" _! o2 \4 ?* W6 `7 i% R: C delay(200);. K/ x. O& Y8 _2 d0 `) ]4 d/ i- \
delay(200); 1 }% t) z( u; H3 M' H/ X6 y: Y9 S `$ v$ S
delay(200);
3 z0 ?6 O6 W6 c4 S0 ` delay(200); 1 Z% H. q5 ^" N; ? z" ~6 Y0 {
delay(200); $ R: T, x3 Z3 `- O; [
//反转2圈共128个脉冲* U7 i6 B0 c* J4 M2 G9 G
j=0;
: T G9 C n+ L! n; N( x for(i=0;i<128;i++){2 S7 n! A2 O* B8 D) J/ A" G" @
motor = 0x00;
7 m+ T5 o/ w, p3 }' e3 M; D motor = table2[j];+ `5 Z" j$ `" p8 C! R
j++;, g' Y% ]- S6 p* \1 f3 T
if(j>=4) j=0;& l+ k) Q3 y9 Q9 v& h
delay(2);: }3 p3 m: T) \) n
}$ A. ~4 j- i/ w9 Q
8 ^ Z( e7 L: a ?+ T$ r% D
. L% v8 g- l& n- U
…………余下代码请下载附件…………6 F0 K/ Z3 T/ p# [4 p
+ y5 }/ M4 l5 n, q, g# J
下载:% S! w9 a- C. H
/ P! D+ C9 \$ V8 H9 R. W1 I+ D
5 O, I5 U, Z; z6 U) `
|
|