论文部分内容阅读
摘 要:本文介绍了两种不同的方式实现对“占空比”的检测,分析其误差来源,并对比了两种方案各自的优劣。
关键词:占空比滤波硬件实现软件实现
振荡电路的“占空比(Duty Cycle)”指高电平持续时间在整个周期内所占的比值。传统的占空的测定通常可用示波器量取高电平持续时间除以整个周期来计算。然而,在实际应用中,常常要求用尽可能简单的电路,直观、动态地显示出当前占空比的变化。以下将结合实际情况给出两种低成本解决方案。
待测试电路为一个直流风机的控制信号,输出为0-5V的矩形波(内阻较高),占空比0-100%分段变化,每隔十多秒变化一次,输入波形频率2.5KHz。
测试要求:
1.对占空比变化进行测定并及时显示出来。
2.误差<5%。
3.由于待测电路与测试电路不共地,因此两者需要隔离。
方案一:硬件实现方法
1.1初步分析:
由于待测量频率固定,硬件上可利用积分电路将占空比转换为电压信号,通过测量电压大小即可确定占空比,显示部分,利用LM3914驱动LED以光柱方式显示。
1.1.1 我们先从最简单的RC电路入手。假定下图中R1C1选取远大于1/ω (ω=2πf),近似可以看作所有交流成分已经被滤除,从而获得一个比较平滑的直流分量用于检测。此外,需要设置一个放电电阻R2,当信号源占空比减小时,利用R2将C1中的电荷释放
待测信号占空比等幅递增(每12秒递增20%左右),测试结果如下:
该电路具有明显的“非线性”失真—电压和输入占空比并不成线性比例关系,且占空比越大,电压递增越小。这是因为随着占空比增加,电容两端的累计电压持续升高,造成每个周期内高电平期间,对C的充电电流减小。若把RC取的过大,线性度会有所改善,不过响应速度就会下降,通俗的讲就是Dutycycle变化后,检测电路需要很长时间才能做出反应。
1.1.2若将电路改为以下形式:
这是一个的二阶有源滤波电路,又称*二阶巴特沃斯(Butterworth)型低通滤波器。
1.2 参数计算:
设上述电路
根据巴特沃斯多项式,n=2时:
下图是巴特沃斯滤波器不同Q值下对应的幅度频特性曲线
显示电路由LM3914驱动LED光柱显示。隔离部分利用6N136光耦隔离,中间经过1级同相型放大器放大。为了让整个电路增益达到2,则滤波电路前的放大器增益取:
这一级放大利用了同相型放大器的高输入阻抗,避免源信号失真。
1.3完整电路如下:
1.4测量结果:
对比无源RC电路,线性度有了较好的改善,波形也比较平直了。
以下为实测数据
从放大器输出电压看,误差已经控制在2%左右,电路满足设计需要。
1.5 误差来源分析:
1.5.1隔离电路的延迟:
隔离部分若采用低速光耦,例如TPL621 GB,光耦打开时正常,关闭时由于深度饱和的缘故,输入和输出端总会出现大约36uS的延迟,对于2.5KHz的输入来说,一个周期就是400uS,36uS相当于9%的误差,换成高速光耦6N136后情况明显改善。
1.5.2隔离电路输出端的电压波动:
光耦LED端的电流开通时必须是一个恒定值,光电管侧的电压也必须是个恒定值,不然会导致取样电阻两端的电压在相同的占空比情况下,有不同的电压,由此造成测量误差。此处采用了TL431进行稳压
1.5.3 器件不理想,例如电容漏电,电阻偏差,运放非理想等等
以上这些,大部分是恒定误差量,只要不是非线性误差,一般都可以通过调节LM3914比较点电压取得比较理想的效果。
方案二.软件实现方法
2.1软件方法的核心思想是通过定时器对一个周期内高、低电平分别计时,再通过计算得出这一时刻的占空比。这里有几个关键点:
1) 计时的时间点:
A. 第一上升沿——这是起始计数时间,在中断子程序中打开定时器,开始计时,并设置标志位,等待下降沿到来.
B. 下降沿——这是高电平结束时间,在中断子程序中保存定时器的内容,等待第二上升沿.
C. 第二上升沿——这是结束计时标志(在中断子程序中关闭定时器,设定标志位,表示检测结束,CPU开始计算占空比,计算结果送显示缓冲区供主程序显示。
2) 针对0%和100%这两种情况,要做特殊处理,由于检测不到上升(下降)沿,要设定定时器溢出时,在中断子程序中通过读取端口输入电平高低来判断占空比是0%还是100%,将结果直接送显示缓冲区。
3) 此外,CPU计算占空比期间保持关中断,避免计算过程中,新数据将原数据弄乱。
2.2 接线图及相关说明如下:
本例采用89S52单片机的2个中断P1.1(T2EX)和P3.2(INT0)分别检测下降沿和上升沿。在不同的中断子程序中做相应的处理。
定时器采用的是T2“16位捕获模式”,他是这样一种计时模式:
当P1.1=H时,T2向上计时,当P1.1发生下跳时, TH2/TL2中的内容会被复制到陷阱寄存器RCAP2H和RCAP2L中,同时触发中断服务申请。此时,RCAP2H和RCAP2L中的内容就是高电平持续时间,注意,此时T2并没有停止计时,直到P3.2检测到第二上升沿后,在INT0中断子程序中由用户程序关闭T2,此时T2H和T2L中的内容就是整个周期的时间。两者相除得到占空比。
采用软件方式,显示部分比较灵活,用LCD或LED都可以,隔离和硬件方式一样,用光耦隔离,不再赘述。
2.3运行结果如下:
2.4误差分析:
2.4.1隔离部分光耦的关断延迟,这点和硬件检测一样。
2.4.2 软件语句执行过程中的时间误差,比如:
从检测到第一上升沿到实际打开TR2重新计时,这中间执行的指令总共有34个机器周期,12M晶振情况下就是34uS,不过这是一个固定误差,可以通过“清零”T2计时器时对TL2,赋以初值34来消除。
从检测到第二上升沿到实际停止计时,这中间也有17個机器周期需要执行指令,因此需要把记录的时间减去17T予以修正。
下表是修正前后的实测数据对比:
小结
以上介绍了两种方法,都能够实现占空比测定。
采用硬件方式侦测,其核心思想是将占空比转换为电压幅度,通过对幅度的量测间接地测量出占空比。电路相对复杂一点,对器件要求高一些,如果需要多路侦测,只需要搭建同样的多组电路即可。由于显示是每路独立显示,相互间不会影响,也比较醒目,精度取决于器件质量。但补偿,尤其是非线性补偿实施起来比较困难。电路调试相对麻烦些,但开发及问题排查相对简单些。
采用软件方式侦测,是从占空比定义出发,通过对时间的测量,直接折算出占空比。电路相对简单一点,精度相对较高,器件误差对结果相对影响不大(例如晶振,因为分子分母上下可以约掉,故误差可忽略),数字显示也比较直观(当然也可以改为LED显示,需要另外占用I/O口)。成本上,如果系统本身MCU有比较充裕的I/O和中断资源,也有显示LCD,则使用软件检测比较经济,如果需要侦测多路占空比,需要使用多路复用器,选通也需要额外占用I/O资源,成本也会随之提高。此外,他的误差补偿比较容易实现。但程序编写和调试麻烦些,不过程序编写结束后,电路几乎不用调试。
作者简介:朱华(1975-),男,汉族,籍贯:浙江,学历:本科,研究方向 电子检测技术,单位: 中达电通股份有限公司(上海市 201209)。
关键词:占空比滤波硬件实现软件实现
振荡电路的“占空比(Duty Cycle)”指高电平持续时间在整个周期内所占的比值。传统的占空的测定通常可用示波器量取高电平持续时间除以整个周期来计算。然而,在实际应用中,常常要求用尽可能简单的电路,直观、动态地显示出当前占空比的变化。以下将结合实际情况给出两种低成本解决方案。
待测试电路为一个直流风机的控制信号,输出为0-5V的矩形波(内阻较高),占空比0-100%分段变化,每隔十多秒变化一次,输入波形频率2.5KHz。
测试要求:
1.对占空比变化进行测定并及时显示出来。
2.误差<5%。
3.由于待测电路与测试电路不共地,因此两者需要隔离。
方案一:硬件实现方法
1.1初步分析:
由于待测量频率固定,硬件上可利用积分电路将占空比转换为电压信号,通过测量电压大小即可确定占空比,显示部分,利用LM3914驱动LED以光柱方式显示。
1.1.1 我们先从最简单的RC电路入手。假定下图中R1C1选取远大于1/ω (ω=2πf),近似可以看作所有交流成分已经被滤除,从而获得一个比较平滑的直流分量用于检测。此外,需要设置一个放电电阻R2,当信号源占空比减小时,利用R2将C1中的电荷释放
待测信号占空比等幅递增(每12秒递增20%左右),测试结果如下:
该电路具有明显的“非线性”失真—电压和输入占空比并不成线性比例关系,且占空比越大,电压递增越小。这是因为随着占空比增加,电容两端的累计电压持续升高,造成每个周期内高电平期间,对C的充电电流减小。若把RC取的过大,线性度会有所改善,不过响应速度就会下降,通俗的讲就是Dutycycle变化后,检测电路需要很长时间才能做出反应。
1.1.2若将电路改为以下形式:
这是一个的二阶有源滤波电路,又称*二阶巴特沃斯(Butterworth)型低通滤波器。
1.2 参数计算:
设上述电路
根据巴特沃斯多项式,n=2时:
下图是巴特沃斯滤波器不同Q值下对应的幅度频特性曲线
显示电路由LM3914驱动LED光柱显示。隔离部分利用6N136光耦隔离,中间经过1级同相型放大器放大。为了让整个电路增益达到2,则滤波电路前的放大器增益取:
这一级放大利用了同相型放大器的高输入阻抗,避免源信号失真。
1.3完整电路如下:
1.4测量结果:
对比无源RC电路,线性度有了较好的改善,波形也比较平直了。
以下为实测数据
从放大器输出电压看,误差已经控制在2%左右,电路满足设计需要。
1.5 误差来源分析:
1.5.1隔离电路的延迟:
隔离部分若采用低速光耦,例如TPL621 GB,光耦打开时正常,关闭时由于深度饱和的缘故,输入和输出端总会出现大约36uS的延迟,对于2.5KHz的输入来说,一个周期就是400uS,36uS相当于9%的误差,换成高速光耦6N136后情况明显改善。
1.5.2隔离电路输出端的电压波动:
光耦LED端的电流开通时必须是一个恒定值,光电管侧的电压也必须是个恒定值,不然会导致取样电阻两端的电压在相同的占空比情况下,有不同的电压,由此造成测量误差。此处采用了TL431进行稳压
1.5.3 器件不理想,例如电容漏电,电阻偏差,运放非理想等等
以上这些,大部分是恒定误差量,只要不是非线性误差,一般都可以通过调节LM3914比较点电压取得比较理想的效果。
方案二.软件实现方法
2.1软件方法的核心思想是通过定时器对一个周期内高、低电平分别计时,再通过计算得出这一时刻的占空比。这里有几个关键点:
1) 计时的时间点:
A. 第一上升沿——这是起始计数时间,在中断子程序中打开定时器,开始计时,并设置标志位,等待下降沿到来.
B. 下降沿——这是高电平结束时间,在中断子程序中保存定时器的内容,等待第二上升沿.
C. 第二上升沿——这是结束计时标志(在中断子程序中关闭定时器,设定标志位,表示检测结束,CPU开始计算占空比,计算结果送显示缓冲区供主程序显示。
2) 针对0%和100%这两种情况,要做特殊处理,由于检测不到上升(下降)沿,要设定定时器溢出时,在中断子程序中通过读取端口输入电平高低来判断占空比是0%还是100%,将结果直接送显示缓冲区。
3) 此外,CPU计算占空比期间保持关中断,避免计算过程中,新数据将原数据弄乱。
2.2 接线图及相关说明如下:
本例采用89S52单片机的2个中断P1.1(T2EX)和P3.2(INT0)分别检测下降沿和上升沿。在不同的中断子程序中做相应的处理。
定时器采用的是T2“16位捕获模式”,他是这样一种计时模式:
当P1.1=H时,T2向上计时,当P1.1发生下跳时, TH2/TL2中的内容会被复制到陷阱寄存器RCAP2H和RCAP2L中,同时触发中断服务申请。此时,RCAP2H和RCAP2L中的内容就是高电平持续时间,注意,此时T2并没有停止计时,直到P3.2检测到第二上升沿后,在INT0中断子程序中由用户程序关闭T2,此时T2H和T2L中的内容就是整个周期的时间。两者相除得到占空比。
采用软件方式,显示部分比较灵活,用LCD或LED都可以,隔离和硬件方式一样,用光耦隔离,不再赘述。
2.3运行结果如下:
2.4误差分析:
2.4.1隔离部分光耦的关断延迟,这点和硬件检测一样。
2.4.2 软件语句执行过程中的时间误差,比如:
从检测到第一上升沿到实际打开TR2重新计时,这中间执行的指令总共有34个机器周期,12M晶振情况下就是34uS,不过这是一个固定误差,可以通过“清零”T2计时器时对TL2,赋以初值34来消除。
从检测到第二上升沿到实际停止计时,这中间也有17個机器周期需要执行指令,因此需要把记录的时间减去17T予以修正。
下表是修正前后的实测数据对比:
小结
以上介绍了两种方法,都能够实现占空比测定。
采用硬件方式侦测,其核心思想是将占空比转换为电压幅度,通过对幅度的量测间接地测量出占空比。电路相对复杂一点,对器件要求高一些,如果需要多路侦测,只需要搭建同样的多组电路即可。由于显示是每路独立显示,相互间不会影响,也比较醒目,精度取决于器件质量。但补偿,尤其是非线性补偿实施起来比较困难。电路调试相对麻烦些,但开发及问题排查相对简单些。
采用软件方式侦测,是从占空比定义出发,通过对时间的测量,直接折算出占空比。电路相对简单一点,精度相对较高,器件误差对结果相对影响不大(例如晶振,因为分子分母上下可以约掉,故误差可忽略),数字显示也比较直观(当然也可以改为LED显示,需要另外占用I/O口)。成本上,如果系统本身MCU有比较充裕的I/O和中断资源,也有显示LCD,则使用软件检测比较经济,如果需要侦测多路占空比,需要使用多路复用器,选通也需要额外占用I/O资源,成本也会随之提高。此外,他的误差补偿比较容易实现。但程序编写和调试麻烦些,不过程序编写结束后,电路几乎不用调试。
作者简介:朱华(1975-),男,汉族,籍贯:浙江,学历:本科,研究方向 电子检测技术,单位: 中达电通股份有限公司(上海市 201209)。