|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
直流电机正反转控制电路设计(含程序)
! J+ L8 h5 L- [% l, K+ R" Z% C* |7 S; {
. s! q8 U! S" U1 F! q
74HC244是三态门八路缓冲/线路驱动器,在这里主要起两个作用:一是驱动MOS管;二是防止上下桥同时导通短路。9 U6 O& x4 }3 N2 @. I- l+ u( }
MOS管采用N和P型增加型MOS管,上桥是AP9565(P-MOS)*2,下桥是AOU454(N-MOS)*2,这两颗MOS都是公司现有的,虽然不是对管,但参数还是满足要求了。
! l, A& r2 p5 T6 e; sAP9565:VDS=-40V VGS=+/-20V ID=-17A
# r1 P! W# N% l. E2 @AOU454:VDS=40V VGS=+/-20V ID=12A. ?4 |3 T: h1 d$ K+ z7 `
这个电路工作电压是3.3V,最大电流不超过1A(包括堵转电流),所以这两颗管足足有余了。
7 ?7 V# w* [1 u6 g) @工作原理:P-MOS低电平导通,N-MOS高电平导通,控制信号只需2个信号(单片机控制)。真值表如图,当控制信号都为1或都为0时,MOS不构成回路,电机不转。当控制信号为1,0(或0,1)时,构成回路,电机得电正转(或反转)。
, {* @; w$ T/ G; e这个电路已经实际测试通过了,具体程序参考后面。$ a; H& ] m" a7 P% v
经验总结:
- `2 O O4 R$ m& d1 f: u1.电源电流要大于1A,如果采用降压型芯片供电,要注意散热问题。
# e! a4 ^' x* W, A* t J2.74HC244可以采用同类型功能的芯片,不必雷同。. l* q1 }: k, b2 f0 I
3.MOS管也可以采用其它型号,ID为2A以上最好。(看电机电流而定)
( t$ a" d ?9 j- d4.4颗电阻是上拉电阻,给MOS提供偏置电压。: T/ M1 |' [1 F4 a8 L/ ]) J
5.MOS管不提倡用晶体管代替,因为晶体管电流小,压降大,相对来说功耗也变大了,而MOS管内阻小,电流大,压降小,从而功耗低。这个电路测试时用5V供电,满载电流约1A,MOS管基本没热。
9 i1 _, W a; ?- i1 ^/ r6.做实验的时候一定在电路中串一个30R/1W的电阻,防止短路,起到限流作用,起码不会爆管子。等调试确定没问题后,再拿掉限流电阻。如果有条件的话,也可以在电路中串一个数字电流表,实时观察电流变化。
% o6 d. ^! H N4 Q. B& q& v T
* w8 z! d; n8 s' ~) }4 ~
# \" {5 M4 A% q' x( {5 [" C- A7 C 下面是电机调速程序,基本原理是采用PWM脉宽调制,即占空比。Vout=k*VCC,k是占空比,比如k=30%,VCC=5V,那么Vout=30%*5V=1.5V,不同的占空比,可以得到不同的电压,而电压大小与转速成正比,所以PWM起到了调速作用。7 C; s# v' L. u B8 H" S9 J
7 K% F$ p' D+ x$ U
+ }2 _+ j) I$ G% I, U% `
#include<reg52.h>
0 ]: n5 f5 y3 m0 A#define uchar unsigned char
. R- D1 V+ `( k: q# P0 Wuchar i,k;
! i) H) }7 o& y- {3 |6 ^ C+ j) {sbit pwm0=P0^0;
. T$ h: n0 e1 asbit pwm1=P0^1;
: B' R# z" P* f% |* e, csbit led=P2^7;
; f' i8 q) C4 b+ Y1 ]- Z( m* jvoid main()
9 W9 f2 d/ ]1 M# L" b3 Z{: b6 ~7 D3 s4 ~$ ]# e; n
TMOD=0x01;//定时器方式一) Z2 Y0 b& g2 [/ J6 @
TH0=(65536-100)/256;//100us; x. M3 v$ e f7 Q
TL0=(65536-100)%256;
3 F! d/ @ x/ q' k GET0=1;
3 j7 ^3 \! `* f& U `EA=1;
3 f( v3 h4 _' D# U4 `6 dTR0=1;
5 Q6 C" s7 M1 `( _pwm1=1;
1 g8 @( H8 P) a$ b- B2 |( spwm0=0;
8 H! } A" b) u0 g! q; l! Swhile(1)
2 I2 x% q: D3 [1 v{" }' C) z+ i0 b4 K
2 }% \$ h0 t( O7 @ Y, r}' G3 y( z6 ^; l& \6 l4 j, m# n) e' ~. F
}
9 K& q' e8 d/ t/ ^( C. n! cvoid t0() interrupt 14 k$ s) O, p" F7 N4 ^/ s
{- W! Z2 S: O( l
TH0=(65536-100)/256;
0 Q8 h+ ]& F$ HTL0=(65536-100)%256;3 B" {+ w0 z2 ] ^
i++;k++;
4 t. e4 Y, Y+ t( v9 S1 F4 M( tif(i==1)//占空比10%,
3 w2 v; j, u9 I5 ]+ G/ e" K9 z{pwm0=1; led=1;}//100us时间到,停止
1 i: t. C* H0 L( }/ |+ Z3 }if(k==10)//设定周期为1000us,停止时间为700us.
, D. _8 H+ G3 p; l{pwm0=0;led=0;k=0;i=0;}//1000us周期结束,电机启动,计数清零。
6 P3 E6 b5 M9 \. E. c}, I3 h' g$ R3 t0 V V7 \* h
/ z) t4 w7 ?2 x0 H/ K9 h6 [4 b6 q
程序目的是让电机以10%的速度转动,周期是1000ms,改变i的值(1=<i<=10),即可改变转速。+ O& u; C5 L( J$ t0 `4 K2 n! @
5 G& n0 A) Q8 t* [4 L
如果与PC串口通信,则可以通过发送命令来调速。6 X4 W% Z8 C$ h
具体程序我就不写了,给大家发挥吧。; D( I$ h7 ^( |& j. `
. t% P/ w( C! |0 J4 `' g8 q: ^' T. t5 [完整原理图和程序下载:
, P# ^. E6 y2 V$ T: } ]1 T# H4 U) p- O3 z. U4 F7 n
* e& y% o& @$ o& }- F+ c |
|