数字锁相环介绍
占一楼。先说锁相环中最基本的过零点锁相的原理,后面我会给出相关的软件代码实现方法。过零点锁相主要原理是,通过硬件采样比较电路将电网信号转化成方波信号,由DSP或者单片机通过捕获相应的上升沿或者下降沿信号,计算相邻两个上升沿(或者下降沿)的时间即可得到电网周期。
此时,对于DSP来说,信号的频率是锁相环(PLL)唯一的输入信息。得到了频率信息以后,可以确定了,锁相环的输出信号的频率一定会等于电网采用信号频率。那么我们如何能够得到电网相位信息呢。假设电网电压采样信号函数为sin(2*PI*f*t + Φ1),锁相环输出信号为sin(2*PI*f*t + Φ2),当Φ1=Φ2时,即完成了锁相。那么这个过程是如何实现的呢?
在介绍锁相过程之前,有几个基本要用到的基本概念简单的阐述一下,不是从事数字电源的朋友可能不是很了解。
1、 DSP定时器的/频率/周期及中断的产生
时器:学过单片机的朋友都懂,不作详细介绍了。可以进行加计数,也可以进行减计数。具体模式需要对相关寄存器进行配置。在数字电源中一般配置成加减计数。定时器在一个控制周期内由0先加计数到周期,在从周期值减计数到0,周而复始。如下图:
DPTR = fclk/fl/2
fclk--------定时器的时钟频率
fl----------我们想要设置的控制频率
DPTR---------定时器周期寄存器值
举个例子,定时器配置的时钟频率假设为150MHZ,控制频率为20KHZ,可以算出DPTR为3750.表示定时器从0计数到3750,需要花费25us.看看上面的图,像不像一个20KHZ的三角形载波?
现在假设我们设定载波频率为20KHZ,一般情况下我们的控制频率等于载波频率(当然也可以不等)。现在我们设定DSP定时器每计数到3750就会进入一次中断,表示每过50US会进入一次定时器周期中断。如果我们需要输出一个50HZ的正弦电压信号。表明在一个周期20ms的时间内,DSP产生了400次定时器周期中断。现在可以看出在20ms的时间内,我们的锁相环输出一个完整的正弦信号需要用400个点来构成。换句话说,我们锁相环的输出是一个由400个点构成的周期离散信号序列。取400个点放到excel中画图,会显示一个完整周期的正弦信号。
2、 DSP产生的捕获中断,或者称之为过零点中断。
通过寄存器的相关设置,可以让DSP的IO口在捕捉到上升沿或者下降沿信号时进入中断,执行相关代码。这里我们举例在DSP捕获到上升沿时进入中断。可以看到每过一个电网周期就会进入一次捕获中断服务子程序,执行相关代码。
3、 正弦表
我们的DSP会存储一个周期的正弦表。点数越多,我们通过Excel画出的正弦信号就越接近连续信号。锁相环的输出也相对更精确。下面是一个DSP存储的400个点的正弦表序列。太长了,只贴出前100个点。
0 257 515 772 1029 1285 1542 1798 2053 2309 2563 2817 3070 3322 3574 3825 4075 4323 4571 4818 5063 5307 5550 5791 6031 6270 6507 6742 6976 7208 7438 7667 7893 8118 8340 8561 8779 8995 9209 9421 9630 9837 10042 10244 10444 10641 10835 11027 11216 11402 11585 11766 11943 12118 12290 12458 12624 12787 12946 13102 13255 13405 13551 13694 13833 13970 14102 14232 14357 14480 14598 14713 14825 14932 15036 15137 15233 15326 15415 15501 15582 15660 15733 15803 15869 15931 15989 16044 16094 16140 16182 16221 16255 16285 16311 16333 16352 16366 16376 16382
说到这里,大家可能明白了,锁相环的输出就是这个正弦表。只是这个正弦表在任意时间的值完全由我们所控制。当DSP捕捉到上升沿过零点信号时。我们知道此时电网的相位是0度。若我们在电网过零时刻以控制频率20K(即在上面说的定时器中断服务子程序中)开始输出正弦表,第1次为第1个点,第二次为第2个点,以此类推,这样20ms的电网周期时间内,我们输出了400个点,正好输出了一个完整的正弦信号,且和电网采样信号同频同相。这时有的朋友可能看出来了,若此时电网信号不是标准的50HZ呢。锁相环的输出还是50HZ啊,而且会产生相差啊。
下面我们就要详细介绍锁相的过程了。因为锁相有很多种方法,我不可能全部详细的介绍给大家。就算过零点锁相也有好几种处理方法,只是抛出某种思路给大家。由于本人表达能力有限,表达的可能不是很清楚,欢迎大家就问题提出讨论,共同进步。
写的很详细呀,继续继续 哥们把这个改为参赛帖吧~
由于电网相位,和逆变器的相位是会一直飘动,产生累积误差,所以第一次锁相OK后,还需要实时跟踪市电相位和频率,要做到每个周期都锁相。
如果电网为49HZ,此时要去锁定这个49HZ的频率和相位,兄弟你该怎么办呢?是调整SPWM的频率还是点数跟着调整呢?