|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
L298N+光耦驱动步进电机测试程序和原理图. S# X* P* ]* m: i; S6 h1 k
' r J$ z' \3 u; U# |" `1 y# l# ?; a0 R5 M" h9 c
; I$ Y& o* d' o) K/ J
4 e K+ q2 H) C' G* _& {9 q _# R& U0 y! i
下面是程序源码:* Q& G$ a$ a( O) Z K7 o
* H, ?+ [" C" p) D1 e+ G$ j, Q0 n/******************************步进电机的驱动*************************************
* Z0 _* q, ~8 p5 n5 n;FOSC = 12MHz
# m0 L) a4 f2 a;---------------------------------------------------------------------------------
$ x9 f2 X: u2 g, P9 l) |8 m; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!
2 U6 \7 H) V# K; 本步进电机步进角为 5.625度 . 一圈 360 度 , 需要64个脉冲完成!!!
& g& X9 S' C7 ~3 n' E9 ^5 l;---------------------------------------------------------------------------------- z" T) r$ p# L# F
; A组线圈对应 P0.0
( I+ J/ B" ~( v' ~' o; B组线圈对应 P0.1* C! O- h1 [; t
; C组线圈对应 P0.2
& O: H: }" l; f! F1 f3 i; o; D组线圈对应 P0.3( v2 X% c R1 S, O/ C( o7 ]
; 正转次序: AB组--BC组--CD组--DA组 (即一个脉冲,正转5.625度)+ o6 T) A0 @' `) k! H, l: |* L
;----------------------------------------------------------------------------------
/ z1 m1 |1 o* `2 A% V7 q) p**********************************************************************************/
+ ~# Y/ n6 l+ h. I
0 v* Y3 ? R% ~* c* G/*头文件*/+ @7 J& B" [" z' M7 z" d3 E
#include " p6 _9 p& X7 M( G7 |9 k
#include ! [0 p+ ?" T5 d0 q- r# P
#define uint unsigned int5 F. A& e3 m& i) N3 j2 L; J9 h
#define uchar unsigned char4 J6 X ]! B b0 O* _
#define nop() _nop_()1 `5 q/ [5 L6 b; S
4 T: M6 k: I# L7 R+ o4 [# E; ]
uchar code table1[]={0x03,0x06,0x0c,0x09}; /*正转表*/9 s; o2 H7 b6 Q; h& w0 f! w
uchar code table2[]={0x03,0x09,0x0c,0x06}; /*反转表*/
) m/ B! K t5 h7 [. Z#define motor P0
: C2 g3 `, Q; S, |( z1 b, v- D) p# z3 |3 a. p
void delay(uchar ms) /*延时*/; K1 [9 ^- z9 M
{
X' F2 A& E8 ^) o1 \$ v* J uchar j;/ a ?- D5 Z* A3 l
while(ms--){2 {' Q$ L. G) }8 g$ ?2 t. r
for(j=0;j<250;j++)) z$ m; g" p8 R2 p! u
{;}
' b) a* w; c+ r' j( l2 m } + k/ f' l1 n, O, C
}: t( e3 ]- s) V& R. H: m F
( Q4 i. W- u( p; [ M4 Q
void main()5 D8 _" O, S7 w; Z6 E
{5 E$ z# W S' N
uchar i,j;% I& P; Y# K% V
while(1){2 ?& J& p/ a8 } I8 h; \! w
//正转3圈共192个脉冲2 s- s }6 K: j7 X; s# D
j=0;
/ C2 V9 }$ ~( i& t# X for(i=0;i<192;i++){9 ~" V- |+ M, i
motor = 0x00;
+ u1 o0 p: Q) P9 K2 Z5 N3 I motor = table1[j];
' W& O6 w, h5 P* |; Q0 ^ j++;- w% C9 q8 Z [% P/ W' a+ u
if(j>=4) j=0;
, J) A( e I4 E( a# f w& m( s3 U delay(2);9 }" X! s2 N s% x$ O
}! t" q; j+ J9 h% R- h% g
delay(200);
- d) H) A! x! x5 u. q% j2 {* Y, M delay(200); $ l+ y2 M7 j2 r4 s- m9 D" c) q
delay(200);5 u; H8 ] E( \: k n" R& b+ g
delay(200); & i3 h7 P9 {: n. v$ B
delay(200);
% [$ {2 u4 t' I8 C# d //反转2圈共128个脉冲
# l3 r h: f8 u- c5 \- _ j=0;
9 j/ l4 j: v9 `" x+ N( v" }! f8 P for(i=0;i<128;i++){
6 y& H& Q1 ] ]0 [$ p motor = 0x00;
) Q t+ J$ N, p7 o( Q3 P motor = table2[j];+ L6 m# G% [: L
j++;0 y* t% k% b# J$ I$ R
if(j>=4) j=0;
4 ~! Q! p7 V$ Q' B' Q delay(2);7 _( p @, u% H% r& p( O% X. `
}) T3 {( k1 i( X# W) L+ j" B
& J/ ]* G! E* r; n) r3 N2 r! e! C* J$ Z* ^$ m1 n, E7 p% q
…………余下代码请下载附件…………) |$ E2 g& s7 [. \( k- l
4 n9 g% ?' K) T9 n3 X4 F7 x( ~下载:
* v( q2 \- c9 ?; W( N |
; o0 g _+ _$ W! ^$ D7 z
$ i( z/ b, ?3 m6 @' `7 v+ R |
|