|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
直流电机正反转控制电路设计(含程序)
8 s* p5 Z' N4 u7 k: _: U, }( ]
Y- R" Z" C/ v1 S' x' }' s" [5 R7 s9 E, N
74HC244是三态门八路缓冲/线路驱动器,在这里主要起两个作用:一是驱动MOS管;二是防止上下桥同时导通短路。* u0 o9 T/ H( Q: ?. c/ G
MOS管采用N和P型增加型MOS管,上桥是AP9565(P-MOS)*2,下桥是AOU454(N-MOS)*2,这两颗MOS都是公司现有的,虽然不是对管,但参数还是满足要求了。, l2 J4 [ K! v* k4 S; C4 [" @
AP9565:VDS=-40V VGS=+/-20V ID=-17A# \) B! h) O: F% ~1 Z# e0 v
AOU454:VDS=40V VGS=+/-20V ID=12A3 `- `" p( D u) N- ~
这个电路工作电压是3.3V,最大电流不超过1A(包括堵转电流),所以这两颗管足足有余了。0 ?# `: U8 [) p C
工作原理:P-MOS低电平导通,N-MOS高电平导通,控制信号只需2个信号(单片机控制)。真值表如图,当控制信号都为1或都为0时,MOS不构成回路,电机不转。当控制信号为1,0(或0,1)时,构成回路,电机得电正转(或反转)。& s/ J1 `+ ]2 k) C; z" K
这个电路已经实际测试通过了,具体程序参考后面。2 L8 ~3 q7 `/ O1 S
经验总结:
% {- f/ H/ w/ N1.电源电流要大于1A,如果采用降压型芯片供电,要注意散热问题。
$ S: O8 e; i( M2.74HC244可以采用同类型功能的芯片,不必雷同。
- X) c9 F! d/ B5 u3 h4 b3.MOS管也可以采用其它型号,ID为2A以上最好。(看电机电流而定)7 v) ?+ g! m3 Y4 z; U) `8 R
4.4颗电阻是上拉电阻,给MOS提供偏置电压。
/ t7 ~0 e: @8 c5.MOS管不提倡用晶体管代替,因为晶体管电流小,压降大,相对来说功耗也变大了,而MOS管内阻小,电流大,压降小,从而功耗低。这个电路测试时用5V供电,满载电流约1A,MOS管基本没热。
! i. D0 h* E# s8 K6.做实验的时候一定在电路中串一个30R/1W的电阻,防止短路,起到限流作用,起码不会爆管子。等调试确定没问题后,再拿掉限流电阻。如果有条件的话,也可以在电路中串一个数字电流表,实时观察电流变化。
1 n" S: x+ v' `0 @$ H: `6 T, r; U. S! _
4 ~+ w: `9 H( I6 k9 F 下面是电机调速程序,基本原理是采用PWM脉宽调制,即占空比。Vout=k*VCC,k是占空比,比如k=30%,VCC=5V,那么Vout=30%*5V=1.5V,不同的占空比,可以得到不同的电压,而电压大小与转速成正比,所以PWM起到了调速作用。( C2 t/ d2 ^: M# U
" b+ h6 r. { y# V5 y
5 ]5 O3 E5 e! C n9 y \( S7 z#include<reg52.h>9 V1 V3 A3 D, w# r
#define uchar unsigned char
+ v& x7 [- q7 r; o8 N# x- @+ ?uchar i,k;
$ F1 r6 M# V, i; p+ F7 Ksbit pwm0=P0^0;
* g, H5 v4 c5 B3 }7 G/ b% ssbit pwm1=P0^1;
5 ^" k, C! ` wsbit led=P2^7;
* y! k9 R1 t& `/ Fvoid main()+ n$ L7 Z4 _# Z0 _3 @7 q
{+ m8 R3 ]$ h; D0 C+ u9 {/ U
TMOD=0x01;//定时器方式一
- O1 M- S2 h, }TH0=(65536-100)/256;//100us
1 w3 }! D6 R) r3 O7 z7 y8 E1 MTL0=(65536-100)%256;2 B& `5 ^9 w- _5 t3 ` [5 u
ET0=1;
+ x1 _( r# \7 l/ g: I1 ]EA=1;% d8 J# k# q) Q
TR0=1;4 x9 H _1 D; o2 h
pwm1=1;
" x) `, z! o4 v* m; Qpwm0=0;
3 y& J% @+ r* I# U5 V$ Pwhile(1)1 W' n* T. v a. N0 G
{3 I/ k' {8 x: W3 @. n! m
- c8 T, [, K+ W$ _) ]( l$ b) j* B$ Q
}
# H+ T: D: F( | H. C0 [}8 Y! H8 Z, ~2 b3 x6 o5 k
void t0() interrupt 1
0 T& g! E1 I9 C# V- }{
# i. C. y. {0 Z. d' |3 r! fTH0=(65536-100)/256;& M9 r) }) P E- D4 ^0 s7 _
TL0=(65536-100)%256;: }! E4 h3 Z; X! [0 I. } D
i++;k++;1 W% Q7 ]- D! J2 W* F. P, F
if(i==1)//占空比10%,$ i: p! [( I6 s0 x- X( ]& S, C
{pwm0=1; led=1;}//100us时间到,停止/ {3 y' B2 f8 Y, B6 {) t1 f# v
if(k==10)//设定周期为1000us,停止时间为700us.
- T' Y. e" v$ W( u4 p/ }4 ^{pwm0=0;led=0;k=0;i=0;}//1000us周期结束,电机启动,计数清零。
/ k( u8 h7 | T( {) s2 V/ e5 ?}* X9 M+ M! b7 k
( C3 u, V9 e0 d% ]+ o3 z8 b8 Z
程序目的是让电机以10%的速度转动,周期是1000ms,改变i的值(1=<i<=10),即可改变转速。* t0 R* p! O, M: T
# a, W" w% i1 J6 ~. r
如果与PC串口通信,则可以通过发送命令来调速。) n) n9 D+ w! S
具体程序我就不写了,给大家发挥吧。5 W, j, }( H5 r9 {$ p9 W1 m! h, b
# m) w- v" M% I( ~% K
完整原理图和程序下载:# t1 q( q7 ?% \% E" v
1 ]% J7 E9 s, w2 f
) K; O' L( K" V( X6 x |
|