单片机驱动CPLD的PWM正弦信号发生器设计

时间:2022-03-17作者:佚名

脉宽调制PWM(Pulse Width Modulation)是利用数字输出信号对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

一、PWM原理

PWM 是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON) 或断(OFF) 的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。

只要带宽足够,任何模拟值都可以使用PWM 进行编码。

如图1 所示,用一系列等幅不等宽的脉冲来代替一个正弦半波,正弦半波N 等分,看成N 个相连的脉冲序列,宽度相等,但幅值不等;用矩形脉冲代替,等幅,不等宽,中点重合,面积(冲量)相等,宽度按正弦规律变化。

图1 用PWM波代替正弦半波

SPWM 波形——脉冲宽度按正弦规律变化而和正弦波等效的PWM 波形。

二、基于CPLD的PWM方案

一个PWM发生器必须包括计数器,数据比较器,另外就是配置PWM 参数的时钟分频寄存器和占空比寄存器,结构框图如图2 所示,这些电路都可以用CPLD 来实现。

图2 PWM控制器结构框图

高频时钟信号经分频器驱动计数器,计数器如图3 所示,总是从Bottom 到Top 的循环计数,计数器的输出和占空比寄存器里的数据经数据比较器比较,输出PWM 信号,当计数器输出小于占空比设定值时输出低电平(0),否则输出高电平(1),如图3(b)(c)所示。

图3 PWM信号发生器时序波形图

从图中还可以看出,计数器的周期就是PWM 信号的周期,通过修改占空比寄存器从而实现对输出PWM 信号高低电平比例控制,图3(b)是占空比为P1 的PWM输出,图3(c)是占空比为P2 的PWM 输出,它们周期相同,高低电平的比例不同。

下面用硬件描述语言来设计CPLD 的内部电路,这里给出VerilogHDL 版本的参考代码。

module Mini51b_PWM(P0,ALE,P27,WR,PWM);// 模块电路命名和端口说明。

input [7:0]P0;// 数据输入接MCU 数据P0 口

input ALE,P27,WR;// 几个MCU 读写控制引脚

output PWM;//PWM 信号输出

wire [7:0]addr;// 内部地址线

reg [7:0]daPWMc,daPWMs;// 定义计数器和占空比设定寄存器

reg [3:0]divPWM,divPWMc;// 分频控制变量

reg PWM;// 输出锁存器

assign addr = ALE?P0 : addr; // 低八位地址锁存

always @(negedge WR)// 在MCU 写信号有效时执行寄存器设定

begin

case({P27,addr[4:0]}) // 根据地址选择寄存器

6'b10_1000: daPWMs <= P0;// 写带地址的寄存器

6'b10_1001: divPWM <= P0[3:0];// 写带地址的寄存器

default:begin// 其它地址则让寄存器保持不变

daPWMs <= daPWMs;

divPWM <= divPWM;

end

endcase

end

always @(posedge ALE) begin// 这里利用MCU 的ALE 做时钟信号

if(divPWMc == divPWM) begin // 与分频系数比较

divPWMc<=0;

if(daPWMc<100) daPWMc <= daPWMc 1; //PWM 调整精度1%

else daPWMc <= 0;

if(daPWMs < daPWMc) PWM <= 0;//PWM 发生器

else PWM <= 1;

end

else divPWMc <= divPWMc 1;// 时钟分频

end

endmodule

关于单片机与CPLD 之间的接口请读者参考本刊前几期笔者撰写的文章。

与之对应的MCU 测试程序为:

#include

#include

#define PWM XBYTE[0xffe8]

#define DIV XBYTE[0xffe9]

void main()

{

DIV = 15; //PWM 信号频率计算晶振22.1184M/6/100/

(DIV 1)=2.30K(实测2.281K)

PWM=50; // 设定占空比50%,前面计数器范围为0~99

while(1) ;

}

执行单片机程序,选择不同的分频系数和占空比值,从CPLD 的引脚输出PWM信号示波器截图如图4所示。

图4 不同占空比的PWM信号示波器截图

三、SPWM

如果将占空比按正弦规律随着时间变化,就可以得到正弦调制的PWM 信号,也就是SPWM。如图5 所示,该信号经过阻容滤波可以得到正弦模拟信号,这里的运放做电压跟随器用,对信号驱动能力进行放大。实际得到的正弦信号示波器截图效果如图6 所示。

图5 SPWM阻容滤波电路

图6 正弦信号示波器截图

正弦信号发生器MCU 演示程序:

#include

#include

#define PWM XBYTE[0xffe8]

unsigned char code sine_dot[32]={49,59,68,77,84,90,95,98,99,98,95,90,84,77,68,59,49,40,30,22,14,8,4,1,0,1,4,8,14,22,30,40};// 正弦表

相关阅读

光伏组件的类型、适用场景 光伏板的选型 光伏方阵串联数量计算公式及实例

光伏组件的类型、适用场景 &zwnj;不同类型光伏组件有其不同的应用场景,比如:&zwnj;&zwnj;单晶组件,适用转换效率高,适合光照充足、对发电效率要求高的工商业项目,适用于需要高效...
2024-11-05
光伏组件的类型、适用场景 光伏板的选型 光伏方阵串联数量计算公式及实例

如何用灯光设计来塑造古建筑的夜间形象?

随着夜间旅游文化的发展,许多历史悠久的建筑得到了开发和设计。夜幕降临时,在灯光效果下,古建筑有着不同的风格。一座成功的 古建筑灯光设计 ,不仅打造了自己的形象,体现...
2022-08-03
如何用灯光设计来塑造古建筑的夜间形象?

亮化照明工程是城市建设的一部分

亮化照明工程 应与城市规划建设紧密联系,是城市规划建设的重要构成部分。依据整体规划,体现城市特点的亮化工程基本建设,不但照明功能有效,并且具备较高的艺术水平。 亮化...
2022-10-12
亮化照明工程是城市建设的一部分

如何通过亮化工程扩大城市夜间人文价值?-河南明亮照明

近年来,各个城市都在利用夜灯营造夜间形象, 城市亮化工程 发展迅速。那么,亮化工程如何根据灯光提升城市夜间形象,拓展城市夜间的历史人文价值。下面为大家介绍一下城市亮...
2022-08-25
如何通过亮化工程扩大城市夜间人文价值?-河南明亮照明

体育馆灯光设计需要规避哪些误区?

体育馆就像是反映当地经济水平的地标性建筑。所以 体育馆灯光设计 自然也越来越重要。体育馆灯光设计需要考虑全面,下面为大家介绍下体育馆夜景灯光设计中需要避免的误区: 策...
2022-09-18
体育馆灯光设计需要规避哪些误区?

热销商品

FEITA 镊子碳纤维合成塑料防静电无尘净化塑胶手动工具镊子93302

FEITA镊子93302采用高强度碳纤维合成塑料材质,兼具轻量化与耐用性,适用于精密操作场景。其独特的防静电设计有效避免静电对电子元件的损害,广泛应用于半导体、光学、...
1.2

江南国标rvv铜芯电缆软线3 4多芯平方rvvp护套信号屏蔽线线缆电线

江南国标rvv铜芯电缆软线34多芯平方rvvp护套信号屏蔽线线缆电线,是一种高性能的电缆产品,适用于各种信号传输和控制场合。该电缆采用优质铜芯,具有优良的导电性能和...
1.96

内六角扳手套装单个内六方螺丝刀进口S2款加长特长平头内6角2.5mm

这款进口S2材质内六角扳手套装,专为精密机械维修与装配设计,采用高品质S2合金钢制造,具备卓越的硬度、耐磨性与抗扭强度,有效防止使用过程中断裂或变形。套装中包含2....
1.4

橡胶条U型防撞包边条橡胶卡条玻璃嵌条配电箱机柜u型条密封条封王

橡胶条U型防撞包边条是一种多功能密封与防护配件,广泛应用于配电箱、机柜、玻璃门窗及各类设备边缘。采用优质橡胶材质,具备优异的弹性、耐老化、防水防尘和抗冲击...
0.8

10副装护目镜打磨劳保防飞溅男女骑行机械实验防风沙灰尘防护眼镜

这款10副装护目镜专为多场景防护设计,适用于打磨、机械加工、实验操作、骑行及户外作业等环境。采用高透光防雾镜片,有效抵御飞溅物、风沙、灰尘及化学液体喷溅,保障...
19.8

网站栏目