|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
直流电机正反转控制电路设计(含程序)$ g( F: i! D+ m6 [2 O. f
! d/ c, O* E% P2 j" o& H+ H* d$ o$ x l& N: I/ w# ?3 m
74HC244是三态门八路缓冲/线路驱动器,在这里主要起两个作用:一是驱动MOS管;二是防止上下桥同时导通短路。 [! z7 }1 C/ |1 `" a" j
MOS管采用N和P型增加型MOS管,上桥是AP9565(P-MOS)*2,下桥是AOU454(N-MOS)*2,这两颗MOS都是公司现有的,虽然不是对管,但参数还是满足要求了。8 h7 z2 E* Z, Z$ n. W
AP9565:VDS=-40V VGS=+/-20V ID=-17A
2 G1 V. f5 r5 ^8 g, \3 o5 gAOU454:VDS=40V VGS=+/-20V ID=12A7 G6 O3 X8 r9 s# k
这个电路工作电压是3.3V,最大电流不超过1A(包括堵转电流),所以这两颗管足足有余了。
# n9 @+ g' r- w! t/ b* p工作原理:P-MOS低电平导通,N-MOS高电平导通,控制信号只需2个信号(单片机控制)。真值表如图,当控制信号都为1或都为0时,MOS不构成回路,电机不转。当控制信号为1,0(或0,1)时,构成回路,电机得电正转(或反转)。
. B) J( I* f* ~6 ^* J/ g, r2 M这个电路已经实际测试通过了,具体程序参考后面。7 Q1 J! o; Y2 q& e* D
经验总结:
& ` d1 T8 D' x* B2 M: Q1.电源电流要大于1A,如果采用降压型芯片供电,要注意散热问题。/ K3 e# D! v' y2 @ r
2.74HC244可以采用同类型功能的芯片,不必雷同。
{. H* g7 u- ~& K3.MOS管也可以采用其它型号,ID为2A以上最好。(看电机电流而定)
4 K5 `' h* U7 w4.4颗电阻是上拉电阻,给MOS提供偏置电压。( Y+ h6 O6 u. X1 v3 c& c# k
5.MOS管不提倡用晶体管代替,因为晶体管电流小,压降大,相对来说功耗也变大了,而MOS管内阻小,电流大,压降小,从而功耗低。这个电路测试时用5V供电,满载电流约1A,MOS管基本没热。
5 D% h, n8 }8 R/ R; p1 H6.做实验的时候一定在电路中串一个30R/1W的电阻,防止短路,起到限流作用,起码不会爆管子。等调试确定没问题后,再拿掉限流电阻。如果有条件的话,也可以在电路中串一个数字电流表,实时观察电流变化。
. z( F) N8 `2 r3 H3 M0 \$ B: ` y, x, h
2 Q6 @3 ^, G/ v$ C* _ 下面是电机调速程序,基本原理是采用PWM脉宽调制,即占空比。Vout=k*VCC,k是占空比,比如k=30%,VCC=5V,那么Vout=30%*5V=1.5V,不同的占空比,可以得到不同的电压,而电压大小与转速成正比,所以PWM起到了调速作用。. ~+ {# p$ }5 R$ q& H
' b7 w8 u, M: \
0 m/ w+ `$ A& S) N2 U
#include<reg52.h>! d/ X+ A0 J5 R0 D
#define uchar unsigned char0 o7 u2 w, s. u8 K( O. Z4 y- V
uchar i,k;0 b' j6 _' t5 g! L1 w! j! z! s) k9 P E
sbit pwm0=P0^0;! q+ L2 n9 g/ G) q
sbit pwm1=P0^1;
. U8 r; [9 j+ K' j. O' J! c) ]8 Ksbit led=P2^7;' K: P$ O* i X( Q7 @0 U' H
void main(); k4 l: M/ U1 ?$ P) R$ @
{7 k1 Z5 m7 q( W* [9 ?; v$ `
TMOD=0x01;//定时器方式一
- o6 T3 q* w9 ?- G8 lTH0=(65536-100)/256;//100us
5 h7 A) W. y9 GTL0=(65536-100)%256; P+ v4 _2 b- Q: q# K! n
ET0=1;
$ u$ Y* ?8 p& y( U/ cEA=1;% B' E6 I$ X. b+ l$ |4 o6 E! C* O
TR0=1;
& u/ P+ Z- A0 Q, m4 qpwm1=1;
" @9 k. x/ M3 |: e" p" Bpwm0=0;
0 P9 c- P) V. i4 b% p, `while(1)
7 }. d# k. K( g# X{
5 z, e( O# ]$ y8 U/ @0 r/ [! Z. v- @6 ?. D H( n9 N' \, Q7 b
}8 B8 K$ h. Z. p* T. ~
}5 R x% @( o1 C# M/ I7 q3 x5 J6 p+ T
void t0() interrupt 16 k8 T. [& i- D8 h! l, u t/ @
{
+ }1 \' d0 N. ~) S5 [TH0=(65536-100)/256;
6 ^, t& E1 U9 P9 R' W+ z9 WTL0=(65536-100)%256;
# d8 O9 [! I: u' h& k, h* @i++;k++;7 H) Y. G! r2 y) p- Y
if(i==1)//占空比10%," f$ Y: w4 u/ |! @7 N
{pwm0=1; led=1;}//100us时间到,停止) W& M+ A( C, ?! j
if(k==10)//设定周期为1000us,停止时间为700us.& M; f' m' B- Z1 x# k' y' a& L
{pwm0=0;led=0;k=0;i=0;}//1000us周期结束,电机启动,计数清零。
+ a) {, `. d6 B: o' q3 R) f}
) b0 N. ?" {7 ~9 r; k6 ~. j4 C! x1 P- A: X3 G: b0 t
程序目的是让电机以10%的速度转动,周期是1000ms,改变i的值(1=<i<=10),即可改变转速。4 a4 C3 v/ r" \! v: F
3 U1 C0 L3 F; A# c5 Y0 u2 c) d& N如果与PC串口通信,则可以通过发送命令来调速。
9 S, U/ v. _5 a X具体程序我就不写了,给大家发挥吧。
- {, B( x: i/ k$ O/ Y2 W
1 k, Q2 h: O- {0 j" t! v完整原理图和程序下载:, |, y7 X- K( F
" D$ B* j2 Q$ B
* v# V5 ?7 }- a9 O* [: D6 N |
|