|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
直流电机正反转控制电路设计(含程序)4 O4 j, |% u% f1 B. N6 C$ ~
& w& \4 C7 j$ B, \# y, e3 ^. A1 ]) ]
) Z/ x7 Y9 P+ _; B# o1 [74HC244是三态门八路缓冲/线路驱动器,在这里主要起两个作用:一是驱动MOS管;二是防止上下桥同时导通短路。
2 Z1 r0 G+ W. I0 jMOS管采用N和P型增加型MOS管,上桥是AP9565(P-MOS)*2,下桥是AOU454(N-MOS)*2,这两颗MOS都是公司现有的,虽然不是对管,但参数还是满足要求了。
7 ^+ g; H# P# [' s7 m% f. p3 IAP9565:VDS=-40V VGS=+/-20V ID=-17A: x, k3 J3 V+ |; |" X6 b- Y
AOU454:VDS=40V VGS=+/-20V ID=12A" h' D8 W- r& w, m. r8 U' J7 x
这个电路工作电压是3.3V,最大电流不超过1A(包括堵转电流),所以这两颗管足足有余了。/ S2 q6 {/ p" B+ V j, m
工作原理:P-MOS低电平导通,N-MOS高电平导通,控制信号只需2个信号(单片机控制)。真值表如图,当控制信号都为1或都为0时,MOS不构成回路,电机不转。当控制信号为1,0(或0,1)时,构成回路,电机得电正转(或反转)。7 l0 A. x& {1 o `# j
这个电路已经实际测试通过了,具体程序参考后面。
! ]; _) R l9 l, w- n5 d, T经验总结:/ T- | q- N. J0 Q9 \( g
1.电源电流要大于1A,如果采用降压型芯片供电,要注意散热问题。
+ f* L, e, _, ]* y4 U, O4 K2.74HC244可以采用同类型功能的芯片,不必雷同。7 W, Q+ T( B$ u; S
3.MOS管也可以采用其它型号,ID为2A以上最好。(看电机电流而定)
; S" @4 r) ~! o; x& S4.4颗电阻是上拉电阻,给MOS提供偏置电压。' f, U' o2 |% o5 F
5.MOS管不提倡用晶体管代替,因为晶体管电流小,压降大,相对来说功耗也变大了,而MOS管内阻小,电流大,压降小,从而功耗低。这个电路测试时用5V供电,满载电流约1A,MOS管基本没热。) A# s6 P5 {3 T& `
6.做实验的时候一定在电路中串一个30R/1W的电阻,防止短路,起到限流作用,起码不会爆管子。等调试确定没问题后,再拿掉限流电阻。如果有条件的话,也可以在电路中串一个数字电流表,实时观察电流变化。% W) i( c/ s. L
0 c, L% t8 f3 D2 b
: U g: [' \# [8 l! x, w% ?% g 下面是电机调速程序,基本原理是采用PWM脉宽调制,即占空比。Vout=k*VCC,k是占空比,比如k=30%,VCC=5V,那么Vout=30%*5V=1.5V,不同的占空比,可以得到不同的电压,而电压大小与转速成正比,所以PWM起到了调速作用。
. |$ e! k$ W, R3 ?
; M2 }( i- s8 q$ x2 R. B" ]8 O: b- L. u) I
#include<reg52.h>( i" p( F! s3 x4 `
#define uchar unsigned char
- _! p- E8 @! s H5 F; Suchar i,k;2 ?( \8 S5 S- i- J3 Z
sbit pwm0=P0^0;
, ]+ M, e- \! S( \5 H ^& ysbit pwm1=P0^1;* w( W! n- d% m6 l
sbit led=P2^7;4 x; I" s2 G/ _& ? p: e7 v9 [( o
void main()# l; K& k4 Z6 t! `' P
{
. E3 l- I, Q* tTMOD=0x01;//定时器方式一5 \& y4 \2 f" g
TH0=(65536-100)/256;//100us
5 Q8 l! w3 }1 u7 PTL0=(65536-100)%256;
6 u* m$ {" ?* _5 W7 bET0=1;1 |+ k. e) |: P3 v$ ~; m
EA=1;
$ w2 v; f* y) G3 Z, uTR0=1;5 F& b' M& \3 z
pwm1=1;: C& V5 k/ `+ H- Z. R+ L( N( d. U P
pwm0=0;
0 W/ w( {2 T& f) V! _! Awhile(1)
5 k2 H6 p. x# |- i8 Q{
) b6 g. g/ N# W5 Z
0 m* f0 V1 `% i; c$ @}/ R0 Y" s) Z3 M, x
}3 D+ b( C0 r* E
void t0() interrupt 1' l4 ^+ c- N; h3 T" X2 r; J" O+ f
{
" C. \9 j) c3 k' N& XTH0=(65536-100)/256;
( e0 D$ p( X0 W( ]9 x& q2 U# MTL0=(65536-100)%256;
% j# o% R- M% N5 }- C/ P Wi++;k++;. k- z( F" O4 i6 Z+ y6 m
if(i==1)//占空比10%,) n7 F& a2 I) M
{pwm0=1; led=1;}//100us时间到,停止
/ \# y7 y0 j! z- Gif(k==10)//设定周期为1000us,停止时间为700us. ^7 H+ K. ? g2 W! k' j) Q- H
{pwm0=0;led=0;k=0;i=0;}//1000us周期结束,电机启动,计数清零。
1 Y: v3 a2 W' l. H% Z5 \}5 T/ J# E6 B r6 C) `9 G& d
" s- p5 N3 [6 r9 i7 r7 B
程序目的是让电机以10%的速度转动,周期是1000ms,改变i的值(1=<i<=10),即可改变转速。
& H5 A/ ] c6 M$ p, h6 A' P/ [
6 N' Q+ S' {5 `1 p: C2 [如果与PC串口通信,则可以通过发送命令来调速。4 m0 |) i& m. b7 A; R7 U/ s
具体程序我就不写了,给大家发挥吧。
! q* p; w8 R9 S/ ?) u" _/ O
8 o" e; z) y1 l. I完整原理图和程序下载:4 y$ _5 U8 M* [& p( W
. ~6 u- W0 I" d& j: C' b
E j0 P- ]7 ~2 [% `8 q |
|