版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
在直流伺服控制系统中,通过专用集成芯片或中小规模的数字集成电路构成的传统PWM控制电路往往存在电路设计复杂,体积大,抗干扰能力差以及设计困难、设计周期长等缺点?因此PWM控制电路的模块化、集成化已成为发展趋势.它不仅可以使系统体积减小、重量减轻且功耗降低,同时可使系统的可靠性大大提高.随着电子技术的发展,特别是专用集成电路(ASIC)设计技术的日趋完善,数字化的电子自动化设计(EDA)工具给电子设计带来了巨大变革,尤其是硬件描述语言的出现,解决了传统电路原理图设计系统工程的诸多不便.针对以上情况,本文给出一种基于复杂可编程逻辑器件(CPLD)的PWM控制电路设计和它的仿真波形.
6 R3 U) H% b) Y2 i* F
. g* `; F/ m( X0 k) a8 ^ 1 PWM控制电路基本原理
) q6 c! K. [1 f
5 ` [+ ^7 W& X 为了实现直流伺服系统的H型单极模式同频PWM可逆控制,一般需要产生四路驱动信号来实现电机的正反转切换控制.当PWM控制电路工作时,其中H桥一侧的两路驱动信号的占空比相同但相位相反,同时随控制信号改变并具有互锁功能;而另一侧上臂为低电平,下臂为高电平.另外,为防止桥路同侧对管的导通,还应当配有延时电路.设计的整体模块见图1所示.其中,d[7:0]矢量用于为微机提供调节占空比的控制信号,cs为微机提供控制电机正反转的控制信号,clk为本地晶振频率,qout[3:0]矢量为四路信号输出.其内部原理图如图2所示.
) g8 O' ` z( b O/ q 该设计可得到脉冲周期固定(用软件设置分频器I9可改变PWM开关频率,但一旦设置完毕,则其脉冲周期将固定)、占空比决定于控制信号、分辨力为1/256的PWM信号.I8模块为脉宽锁存器,可实现对来自微机的控制信号d[7:0]的锁存,d[7:0]的向量值用于决定PWM信号的占空比.clk本地晶振在经I9分频模块分频后可为PWM控制电路中I12计数器模块和I11延时模块提供内部时钟.I12计数器在每个脉冲的上升沿到来时加1,当计数器的数值为00H或由0FFH溢出时,它将跳到00H时,cao输出高电平至I7触发器模块的置位端,I7模块输出一直保持高电平.当I8锁存器的值与I12计数器中的计数值相同时,信号将通过I13比较器模块比较并输出高电平至I7模块的复位端,以使I7模块输出低电平.当计数器再次溢出时,又重复上述过程.I7为RS触发器,经过它可得到两路相位相反的脉宽调制波,并可实现互锁.I11为延时模块,可防止桥路同侧对管的导通,I10模块为脉冲分配电路,用于输出四路满足设计要求的信号.CS为I10模块的控制信号,用于控制电机的正反转.
s5 Z2 p5 Q, U) K' J- O$ x. D s# A4 h
. O" a! `" `- ^2 E2 m; B7 j 2 电路设计 3 y% Y9 I4 A3 e8 F2 a7 x! \
6 n Z- ]/ ?% X2 T6 j* \# q 本设计采用的是Lattice半导体公司推出的is-plever开发平台,该开发平台定位于复杂设计的简单工具.它采用简明的设计流程并完整地集成了Leonardo Spectrum的VHDL综合工具和ispVMTM系统,因此,无须第三方设计工具便可完成整个设计流程.在原理设计方面,本设计采用自顶向下、层次化、模块化的设计思想,这种设计思想的优点是符合人们先抽象后具体,先整体后局部的思维习惯.其设计出的模块修改方便,不影响其它模块,且可重复使用,利用率高.本文仅就原理图中的I12计数器模块和I11延迟模块进行讨论. 6 W0 ^& o2 I2 c: O. U
6 h1 J3 K1 G! ~+ [
计数器模块的VHDL程序设计如下: + o0 X0 D/ h6 H' z! d" z+ S
& s! j& f( J9 T$ S0 ]
entity counter is ) Q7 w& k2 k+ o. @+ q$ ~
8 \% S4 R% Q4 ?0 W% c4 H% ^ port(clk: in std logic; 8 @, e* i i. Y8 P" _. W
$ d( w+ X* K9 P: X/ W" x& O2 y
Q : out std logic vector(7 downto 0); * i: ~! Y7 l- j4 y ~+ U/ w' C. w
5 G! S% V2 x) [) z cao: out std_logic); 7 v, F! }& L. ^1 m9 a# ^
; A8 J3 ^. ^/ s5 j, x0 |/ M
end counter;
9 ]- I- W% L. d5 S
% e7 C, }& I A* M. h architecture a_counter of counter is
|. o7 Y5 G! o3 K- u( Z# U/ O) f+ W3 z
signal Qs: std_logic_vector(7 downto 0); : |' D- _ ~' a. V, f- c4 {
: x* j$ H/ Z& D; }2 H signal reset: std_logic;
1 A6 V+ H- E- ~( ~) ?
; a. [1 b5 Z2 F* @8 n; M signal caolock: std_logic; % |' [ i; S7 Z- @5 O& D
& D" l; a: L' I% T
begin
' {( Q5 i) ~% I+ }
9 s( \9 b/ l) o1 z& h& }4 \ process(clk,reset)
/ I7 s: g: K* C# C6 B& @( J
% c" S+ Z" b2 Y/ x+ s- o% ` begin
" r3 o4 H$ d+ W9 {& d) ?& }
5 X8 M8 Y8 N! `/ {. S8 ^* m if(reset=‘1')then ) d6 M: P, H& M0 i" W
n. s1 y8 g/ ^2 F i
Qs<=“00000000”; ( W' @& }( m* [4 `) D* f- F& b
5 g/ ], r0 U5 o& M0 d) D! \
elsif clk'event and clk=‘1' then
9 c b6 V/ y( w- L+ ~ e" w8 l$ \7 u9 O. [" L* P4 P
Qs<=Qs+‘1';
" K5 r/ T' v* Y7 z$ y) ? f/ \ m4 l7 }0 M, w
end if;
. c& Y: n8 E) m( c$ C. _
( X# U. z- ]5 q, ^% J+ R9 D7 ` end process;
1 Q; O$ s! P' |+ ~+ y9 Z: K g3 }8 D1 H# ~0 O! o& |( M
reset<=‘1' when Qs="255" else
, b/ U, H9 R: z7 p& ?
- A2 V: i' ^0 |7 i; c$ ^8 T ‘0'; , f+ e7 c+ \8 I9 A& @
2 r. V# C5 s! g, a7 }8 p' w caolock<=‘1' when Qs="0" else ' V1 k; Y1 Q7 r4 W, H
! j+ g \4 v8 n; F! A! D2 |) B. |
‘0';
6 q3 C# \& o8 R% z
5 O' [/ i0 F+ Q, E Q<=Qs; ; y: R4 p* S) N: k3 v' K
5 b: w' D6 [# R% D2 n" q cao<=reset or caolock;
L9 p7 r& s+ M: {, h5 L
, Y3 ?: E7 v4 Y, M) b end a_counter; 9 b, w6 i3 ^' ?9 u% ~" }
! h# ~, ]1 S, Y* O" o, N5 A/ K
在原理图中,延迟模块必不可少,其功能是对PWM波形的上升沿进行延时,而不影响下降沿,从而确保桥路同侧不会发生短路.其模块的VHDL程序如下:
. ^0 S4 t! }# p1 u: R5 L2 Y2 W. d& h1 i
entity delay is
F3 z6 s$ x. K7 w8 z0 ? x: Z" O& u. o
port(clk: in std_logic; 4 W- _; c5 M) ]0 U; G
5 W, J1 ]6 V$ k, i$ e9 V) R2 a3 c
input: in std_logic_vector(1 downto 0);
5 T, y! f% k- E! s# J& O' N" s' z! h1 }- Z6 ]
output:out std_logic_vector(1 downto 0) . V3 f' |! M$ j5 K
+ b* m7 g& c% @ M5 o" C2 ^' P! H) U
end delay;
# i, ?: r. [3 e! r( ?, A5 D- i! i" I V- v2 J f. ~
architecture a_delay of delay is 3 g) j+ l# a: ^' B$ O
3 B# S/ I9 ^. {" X9 G8 M signal Q1,Q2,Q3,Q4: std_logic;
( H! g A1 M7 T" r0 g9 p! W
9 a# |3 u" `8 ^ begin ; _ w$ b8 W9 Q# o1 E
7 l B1 V! H) x/ ?2 l
process(clk) , o5 |! \- R. G% L( W* L, F
" w' M3 U8 k) i- g$ B. K) O$ U+ `
begin " Z4 c' b1 h( B5 [
. ^* `5 U- v1 m; v" {5 X# V# k if clk'event and clk=‘1' then ( H3 b% U! Z) D9 i
* ?, k6 R, E+ r w8 V& I8 s0 x4 I
Q3<=Q2;
9 U2 t, M8 A# F) e% _, {9 E0 n3 l
% i( B" q, T/ Y" t, [ r. s6 x% x Q2<=Q1; ' p( ^* ^, d# K" q( |/ E2 W$ |
$ m4 d6 T( S& h* X Q1<=input(1);
+ V7 H6 T* y8 [- z: K! U
) f, e+ T/ d; o9 ]7 r4 m end if;
$ j" V B& M }& O* Q# ^) \" v3 I+ t: D7 ]" J4 e. d3 E& |. {
end process;
/ X" W9 [5 `% D" c) X
+ Z& N0 g, f7 G5 Q* G Q4<=not Q3; 9 u& y* @" D9 b3 B/ y+ U
& R! M8 P9 n# q
output(1)<=input(1)and Q3; - q. ?' b- T j$ n6 |& `% H4 G
5 O! E) V, ^ v3 D8 u' H# H+ V( U
output(0)<=input(0)and Q4;
& I# s! W4 e7 q& n! g/ v9 H
4 y' r& q; H- P, n1 _ Y4 G0 Q: @8 L3 B end a_delay; 0 B4 E$ l7 p: A3 U
) G- Q/ t% ^% E w, o7 y! u
. ] m' l3 a4 P4 _9 P( t* O
3 结束语
& s, v x. t7 d: S9 y$ \8 E
5 X, f+ m; Y& `* `- D4 A) ? 采用可编程逻辑器件和硬件描述语言,同时利用其供应商提供的开发工具可大大缩短数字系统的设计时间,节约新产品的开发成本,另外,还具有设计灵活,集成度高,可靠性好,抗干能力强等特点.本文设计的PWM控制电路用于某光测设备的传动装置时,取得了良好的效果. |
|