本文介绍了如何使用dialoggreenpak可配置混合信号ic构建12vpc风扇pwm控制器。该项目涉及旋转编码、pwm控制、pcb设计和c#应用程序编程。
该设计最多可控制16个3针电脑风扇,使用一对dialoggreenpak可配置混合信号ic来控制每个风扇的占空比,并包括两种改变风扇速度的方法:
带有正交/旋转编码器和
使用windows应用程序—内置于c#中,通过i2c与greenpak进行通信。
系统框图
图1.系统框图
slg46108旋转解码器设计
为了手动增加或减少风扇的占空比,我们使用了旋转编码器。该设备在相隔90°的通道a和通道b输出上输出脉冲。有关旋转编码器工作原理的更多信息,请参见an-1101:非时钟正交解码器。
图2.旋转编码器框图
然后,我们使用dialoggreenpakslg46108创建了一个时钟旋转解码器来处理通道a和通道b信号并将它们输出为逆时针(ccw)和顺时针(cw)脉冲。
当通道a领先于通道b时,设计会在cw上输出一个短脉冲。当通道b超前通道a时,它在ccw上输出一个短脉冲。
图3.greenpakslg46108旋转解码器设计
我们使用3个dff将通道a输入与时钟同步。同样,我们使用管道延迟,将out0设置为2个dff,将out1设置为3个dff,为通道b创建相同的功能。
然后,我们使用一些lut来创建cw和ccw输出。有关此标准旋转解码器设计的更多信息,请访问此网站。
最后,greenpakrotarydecoder将接收到下图中的输入脉冲a和b,并输出如图所示的cw和ccw脉冲。
图4.旋转信号时序图
异或门之后的电路确保不会同时出现cw脉冲和ccw脉冲,以防旋转编码器出现错误。cw和ccw信号上的8ms下降沿延迟迫使它们在8ms加1个时钟周期内保持高电平,这对于下游slg46826greenpak是必需的。
slg46826风扇控制器设计
图5.greenpakslg46826风扇控制器设计
使用偏移计数器生成pwm
为了生成pwm信号,我们使用了一对具有相同周期的偏移计数器。第一个计数器设置dff,第二个计数器将其重置,从而创建一致的占空比pwm信号,如下所示。
图6.pwm生成时序图
图7.使用偏移计数器生成pwm
cnt6设置dff10,cnt1的反相输出复位dff10。引脚18和19用于将pwm信号输出到外部电路。
具有时钟注入和时钟跳跃的占空比控制
风扇控制器接收来自旋转解码器的cw和ccw信号作为输入,并使用它们来增加或减少控制风扇速度的pwm信号。我们通过几个数字逻辑组件实现了这一点。
我们需要做的是使占空比在我们接收到cw脉冲时增加。我们可以通过向cnt6模块注入一个额外的时钟脉冲来实现这一点,使其比其他方式早一个时钟周期输出。您可以在下面的时序图中看到此过程。
图8.时钟脉冲注入
cnt1仍以恒定速率获得时钟,但cnt6注入了几个额外的时钟。每当计数器有一个额外的时钟时,它就会将其输出向左移动一个时钟周期。
相反,如果我们想降低占空比,我们需要为cnt6跳过一个时钟脉冲。您可以在下图中看到该过程,其中cnt1仍然以恒定速率获得时钟,而cnt6有跳过的时钟脉冲,其中计数器没有按预期获得时钟。这样我们就可以将cnt6的输出一次向右推一个时钟周期,从而缩短输出pwm占空比。
图9.时钟脉冲跳跃
我们使用greenpak中的一些数字逻辑元件实现了时钟注入和时钟跳跃功能。我们使用一对多功能块来创建一对锁存器/边缘检测器组合。4位lut0用于在通用时钟信号(clk/8)和时钟注入或时钟跳跃信号之间进行复用。此功能将在第5.2.2节防止占空比翻转中更详细地描述。
按钮输入
button输入去抖20ms,然后用于触发一个锁存器,该锁存器将确定是否选择了该特定芯片。如果选择它,则4位lut将传递时钟跳跃或注入信号。如果未选择芯片,则4位lut将简单地传递clk/8信号。
图10.时钟跳跃和时钟注入
防止占空比翻转
rs锁存器3位lut5和3位lut3用于确保您不能注入或跳过太多时钟,以免偏移计数器翻转。我们不想让系统达到100%的占空比,然后如果它接收到另一个注入的时钟,则翻转到1%的占空比。
rs锁存器通过在系统距离翻转1个时钟周期时锁存多功能模块的输入来防止这种情况发生。我们使用一对dff将pwm_set和pwm_nrst信号延迟一个时钟周期,如下图所示。
图11.block_cw和block_ccw
然后,我们使用一对lut来创建必要的逻辑。如果我们的占空比太低以至于延迟的pwm_set信号与pwm_nrst信号同时出现,我们不想进一步降低占空比,否则我们将翻转。
图12.最小占空比翻转情况
同样,如果我们正在接近最大占空比,从而延迟的pwm_nrst信号与pwm_set信号同时出现,我们不想进一步增加占空比。在这种情况下,我们需要将nrst信号延迟2个时钟周期,以确保系统不会从99%翻转到1%。
图13.最大占空比翻转情况
具有i2c的占空比控制
该设计采用了另一种控制占空比的方法,而不是时钟跳跃/时钟注入。我们可以使用外部微控制器向greenpak写入i2c命令,以编程方式设置占空比。
图14.i2c占空比控制
如上图中的红色标签所示,控制i2c上的占空比需要控制器执行特定的命令序列。这些命令在下表中按顺序显示。“x”表示用户不应更改的位,“[”表示start位,“]”表示stop位。
表1.i2c命令
pdly模块在clk/8信号的下降沿产生一个短的高电平有效脉冲,我们称之为!clk/8。该信号用于以稳定频率为dff14提供时钟。当i2c_set异步变高时,!clk/8的下一个上升沿将导致dff14输出high,这将触发cnt5oneshot。oneshot将运行上表中“写入cnt5”i2c命令中指定的用户写入的时钟周期数。在这种情况下,它是10个时钟周期。oneshot允许25mhz振荡器准确运行其持续时间,并且不再让3位lut0接收用户写入cnt5的时钟周期数。
下图显示了这些信号,其中红色时钟是发送到3位lut0的信号,lut0将它们传递到cnt6(pwm_set计数器),从而为占空比生成创建偏移量。
图15.使用i2c加载占空比(频率不按比例)
转速表读数
如果需要,用户可以读取i2c上的转速计值,通过读取cnt2值来跟踪风扇转动的速度。cnt2将在每次acmp0h出现上升沿时递增,并且可以通过i2c命令异步复位。(请注意,这是一个可选功能,acmp0h的阈值需要根据正在使用的特定风扇的规格进行调整。)
图16.转速计部分
表2.i2c命令
外部电路设计
图17.风扇控制器框图
外部电路相当简单。有一个按钮连接到greenpak的pin6以切换是否选择此特定设备进行旋转控制,以及连接到pin12和pin13的led以指示何时选择设备。
由于风扇的电压为12伏,因此我们需要一对fet来控制其开关。greenpak的pin18和pin19驱动一个nfet。当nfet开启时,它将pfet的栅极拉低,将风扇连接到+12v。当nfet关闭时,pfet的栅极被1k电阻上拉,从而断开风扇从+12v。
pcd设计
我们将几块pcb放在一起来对我们的设计进行原型设计。左侧的pcb是“风扇控制器”,其中包含旋转编码器、12v插孔、slg46108greenpak和ft232husb到i2c分线板的连接器。右侧的两个pcb是“风扇板”,其中包含slg46826greenpak、按钮、开关、led和风扇接头。
图18.pcb和连接器
每个风扇板的左侧都有一个带罩的公头,右侧有一个母头,因此它们可以菊花链式连接在一起。每个风扇板都可以填充资源以独立控制2个风扇。
c#应用程序
我们编写了一个c#应用程序来通过ft232husb-i2c桥接我们的风扇板。此应用程序可用于通过应用程序生成的i2c命令调整每个风扇的频率。
图19.c#应用程序gui
应用程序将每秒对所有16个i2c地址执行一次ping操作,并使用存在的从地址填充gui。在这种情况下,我们将风扇1(从地址0001)和风扇3(从地址0011)连接到电路板。用户可以通过移动滑块或在滑块下方的文本框中输入0-256的值来单独调整每个风扇的占空比。
项目结论
在本文中,我们使用一些dialoggreenpak可配置混合信号ic创建了一个功能齐全的12vpc风扇pwm控制器。通过我们的设计,我们能够使用旋转编码器或c#应用程序独立控制多达16个风扇(因为有16个可能的i2c从地址)。我们演示了如何使用一对偏移计数器生成pwm信号,以及如何在不翻转的情况下增加和减少该信号的占空比。
了解射频电路板设计和解决方案
二维码扫码引擎嵌入在人脸识别门禁里面
专家解读NXP下一代S32家族可扩展计算平台
中国创业团队造出全球最小双通道物联网芯片
射极旁路电容对低频特性的影响
如何使用GreenPAK为PC风扇构建PWM控制器
电子式温度控制器的工作原理
国芯科技与昆仑芯签订战略合作协议
集中电源控制器在智能家居中的应用
中国人工智能技术在武器装备上取得重要成绩
伺服电机和步进电机的工作原理及其区别
2018年全球创新投入力度持续加大,创新成果丰硕
苹果遭指控阻碍第三方app与自家的「屏幕使用时间」竞争
COB市占三连冠 雷曼再造增量
TE Connectivity推出市场上可实现最高电流密度的金手指电源连接器
福建联通正在建设基于5G的边缘云计算中心,构建“数字福建”发展基石
2021年OPPO开发者大会:AI技术优势与能力探索
国际航空集团IAG计划与波音签订购买737Max飞机的相关协议
中科驭数发布最新DPU芯片及应用方案
关于ZVC功耗测试解决方案的分析和介绍