|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
直流电机正反转控制电路设计(含程序)
# R$ x8 C/ T+ n3 x2 t1 m
( X; C) r3 \! `" A, r
" Y! a6 I5 _5 R3 M" U! `* I74HC244是三态门八路缓冲/线路驱动器,在这里主要起两个作用:一是驱动MOS管;二是防止上下桥同时导通短路。
! y1 Q. @8 q, D0 M0 W) vMOS管采用N和P型增加型MOS管,上桥是AP9565(P-MOS)*2,下桥是AOU454(N-MOS)*2,这两颗MOS都是公司现有的,虽然不是对管,但参数还是满足要求了。
. e3 D" v6 i. F% {/ WAP9565:VDS=-40V VGS=+/-20V ID=-17A
& u3 }, {; I- l5 T8 z1 e0 tAOU454:VDS=40V VGS=+/-20V ID=12A
4 ^$ X4 C. r* `这个电路工作电压是3.3V,最大电流不超过1A(包括堵转电流),所以这两颗管足足有余了。9 o: v0 G& N. z# h" `
工作原理:P-MOS低电平导通,N-MOS高电平导通,控制信号只需2个信号(单片机控制)。真值表如图,当控制信号都为1或都为0时,MOS不构成回路,电机不转。当控制信号为1,0(或0,1)时,构成回路,电机得电正转(或反转)。! c3 K% h, I' p3 _3 W0 V3 I% G
这个电路已经实际测试通过了,具体程序参考后面。
/ n4 P0 O5 h4 W) F0 g( x经验总结:
c0 J: c, }1 @' W8 s) p1.电源电流要大于1A,如果采用降压型芯片供电,要注意散热问题。
& b. @8 i/ e# q$ c! Y* p( [, w e d2.74HC244可以采用同类型功能的芯片,不必雷同。+ S) ^% l* R4 T5 R" d' @! f9 T
3.MOS管也可以采用其它型号,ID为2A以上最好。(看电机电流而定)! h7 ?) q7 T, X
4.4颗电阻是上拉电阻,给MOS提供偏置电压。
. c" Y" s0 ?) [8 V- ?/ \& {5.MOS管不提倡用晶体管代替,因为晶体管电流小,压降大,相对来说功耗也变大了,而MOS管内阻小,电流大,压降小,从而功耗低。这个电路测试时用5V供电,满载电流约1A,MOS管基本没热。+ T- S! C( H7 g( @( p: F% ^2 w
6.做实验的时候一定在电路中串一个30R/1W的电阻,防止短路,起到限流作用,起码不会爆管子。等调试确定没问题后,再拿掉限流电阻。如果有条件的话,也可以在电路中串一个数字电流表,实时观察电流变化。
9 x2 Z+ K- D* U3 h) L
$ h2 C! ~4 |5 n p$ N. i8 j
4 {( A3 O5 E: c 下面是电机调速程序,基本原理是采用PWM脉宽调制,即占空比。Vout=k*VCC,k是占空比,比如k=30%,VCC=5V,那么Vout=30%*5V=1.5V,不同的占空比,可以得到不同的电压,而电压大小与转速成正比,所以PWM起到了调速作用。0 X1 T. [. Y3 t# N) v9 [! ~, x2 _5 u
+ B( k9 K' C0 ~% i4 U1 y
/ Z+ i( ~: g0 T2 V' @' ]#include<reg52.h>3 h; {# j, e0 J4 I* t/ Z
#define uchar unsigned char& A/ w$ R# I1 p+ [4 D; W* H
uchar i,k;# e9 r8 a5 I0 m$ i+ C C+ K
sbit pwm0=P0^0;
0 r4 a k% a) S" l- m7 @* ?sbit pwm1=P0^1;* N& G* @( U1 I
sbit led=P2^7;' R6 w7 D" M- K% E$ o
void main()
7 z) e8 r+ i" \5 h, o" M+ W: u{: c2 r3 q. ]( E) g& v
TMOD=0x01;//定时器方式一# p7 v: T/ B* \
TH0=(65536-100)/256;//100us* {, N5 R+ i$ }, U r+ F
TL0=(65536-100)%256;
$ F9 u$ x/ b" ^7 ?1 _% `3 C- _7 M7 t' \ET0=1;; `6 {4 G6 r! h" c
EA=1;) ?1 }6 e7 z1 ~2 e
TR0=1;
" p9 w0 ^) i* R! hpwm1=1;
7 g5 C4 C1 i6 ]7 t# Qpwm0=0;
' H* n* W1 n/ a4 y5 L, l9 n) w& wwhile(1)2 E" L2 v% P( J
{
7 U2 p' s C0 F( f d3 v+ o7 [8 {& v9 d% x# W% a- ~- }
}0 o. ~+ x( u8 f7 K: c+ Q
}9 K; l l; Q9 I
void t0() interrupt 1' c( Q6 L8 k1 G/ y, S+ X6 T! y
{. S" f4 ~* r/ V, _# k4 G( r
TH0=(65536-100)/256;' B7 b5 p0 l9 b8 f) V1 F' J3 ^
TL0=(65536-100)%256;
5 y6 _7 T+ O2 |7 Q9 q ]i++;k++;
2 Z$ J4 M1 a9 D. t* g- iif(i==1)//占空比10%,
$ c. Z) A2 Q9 q. c( {{pwm0=1; led=1;}//100us时间到,停止
4 H0 a5 }# K3 w; M% w) z% j1 sif(k==10)//设定周期为1000us,停止时间为700us.
- q0 S) n0 I( K{pwm0=0;led=0;k=0;i=0;}//1000us周期结束,电机启动,计数清零。9 z/ J8 R, `. [
}
# y- g% A- P8 F# }( v
6 C+ x0 z5 T( ]# H1 @6 F0 `程序目的是让电机以10%的速度转动,周期是1000ms,改变i的值(1=<i<=10),即可改变转速。6 `9 i9 G6 M" X7 k$ `
- M- o2 X+ z5 M$ D0 t8 j- ?# H
如果与PC串口通信,则可以通过发送命令来调速。
8 j8 k( r: k$ f具体程序我就不写了,给大家发挥吧。0 \2 ~( s4 W6 p2 M ~2 G
" h Z* @/ z* W1 |, }1 l完整原理图和程序下载:( j" F, {# z! ^9 C3 M" n8 A
3 g' ^) ?9 P. `8 H" v( A$ [& a0 f* g" V
|
|