0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用GreenPAK为PC风扇构建PWM控制器

科技观察员 来源:allaboutcircuits 作者:David Riedell,Dialo 2022-05-07 16:38 次阅读

本文介绍了如何使用DialogGreenPAK可配置混合信号IC构建12VPC风扇PWM控制器。该项目涉及旋转编码、PWM控制、PCB设计C#应用程序编程

该设计最多可控制16个3针电脑风扇,使用一对DialogGreenPAK可配置混合信号IC来控制每个风扇的占空比,并包括两种改变风扇速度的方法:

带有正交/旋转编码器

使用Windows应用程序—内置于C#中,通过I2C与GreenPAK进行通信

系统框图

poYBAGJ2MAeAFnrLAABhr16jYr0464.jpg

图1.系统框图

SLG46108旋转解码器设计

为了手动增加或减少风扇的占空比,我们使用了旋转编码器。该设备在相隔90°的通道A和通道B输出上输出脉冲。有关旋转编码器工作原理的更多信息,请参见AN-1101:非时钟正交解码器。

pYYBAGJ2MAiAIQXLAAA9TX_v_mc464.jpg

图2.旋转编码器框图

然后,我们使用DialogGreenPAKSLG46108创建了一个时钟旋转解码器来处理通道A和通道B信号并将它们输出为逆时针(CCW)和顺时针(CW)脉冲。

当通道A领先于通道B时,设计会在CW上输出一个短脉冲。当通道B超前通道A时,它在CCW上输出一个短脉冲。

poYBAGJ2MAmAEEzNAABaTfdH3gA962.jpg

图3.GreenPAKSLG46108旋转解码器设计

我们使用3个DFF将通道A输入与时钟同步。同样,我们使用管道延迟,将OUT0设置为2个DFF,将OUT1设置为3个DFF,为通道B创建相同的功能。

然后,我们使用一些LUT来创建CW和CCW输出。有关此标准旋转解码器设计的更多信息,请访问此网站。

最后,GreenPAKRotaryDecoder将接收到下图中的输入脉冲A和B,并输出如图所示的CW和CCW脉冲。

poYBAGJ2MAqAE95nAAAnxCpO__o103.jpg

图4.旋转信号时序图

异或门之后的电路确保不会同时出现CW脉冲和CCW脉冲,以防旋转编码器出现错误。CW和CCW信号上的8ms下降沿延迟迫使它们在8ms加1个时钟周期内保持高电平,这对于下游SLG46826GreenPAK是必需的。

SLG46826风扇控制器设计

pYYBAGJ2MAuAVEIrAACdXz_XDwA460.jpg

图5.GreenPAKSLG46826风扇控制器设计

使用偏移计数器生成PWM

为了生成PWM信号,我们使用了一对具有相同周期的偏移计数器。第一个计数器设置DFF,第二个计数器将其重置,从而创建一致的占空比PWM信号,如下所示。

poYBAGJ2MAyAH9EKAAAekrKRuX0972.jpg

图6.PWM生成时序图

pYYBAGJ2MA2AGaWRAABDK985Ovs513.jpg

图7.使用偏移计数器生成PWM

CNT6设置DFF10,CNT1的反相输出复位DFF10。引脚18和19用于将PWM信号输出到外部电路。

具有时钟注入和时钟跳跃的占空比控制

风扇控制器接收来自旋转解码器的CW和CCW信号作为输入,并使用它们来增加或减少控制风扇速度的PWM信号。我们通过几个数字逻辑组件实现了这一点。

我们需要做的是使占空比在我们接收到CW脉冲时增加。我们可以通过向CNT6模块注入一个额外的时钟脉冲来实现这一点,使其比其他方式早一个时钟周期输出。您可以在下面的时序图中看到此过程。

poYBAGJ2MA2ARGHHAAA7ukutbTA013.jpg

图8.时钟脉冲注入

CNT1仍以恒定速率获得时钟,但CNT6注入了几个额外的时钟。每当计数器有一个额外的时钟时,它就会将其输出向左移动一个时钟周期。

相反,如果我们想降低占空比,我们需要为CNT6跳过一个时钟脉冲。您可以在下图中看到该过程,其中CNT1仍然以恒定速率获得时钟,而CNT6有跳过的时钟脉冲,其中计数器没有按预期获得时钟。这样我们就可以将CNT6的输出一次向右推一个时钟周期,从而缩短输出PWM占空比。

pYYBAGJ2MA6ANd8hAABXYdC8q1I351.jpg

图9.时钟脉冲跳跃

我们使用GreenPAK中的一些数字逻辑元件实现了时钟注入和时钟跳跃功能。我们使用一对多功能块来创建一对锁存器/边缘检测器组合。4位LUT0用于在通用时钟信号(CLK/8)和时钟注入或时钟跳跃信号之间进行复用。此功能将在第5.2.2节防止占空比翻转中更详细地描述。

按钮输入

BUTTON输入去抖20ms,然后用于触发一个锁存器,该锁存器将确定是否选择了该特定芯片。如果选择它,则4位LUT将传递时钟跳跃或注入信号。如果未选择芯片,则4位LUT将简单地传递CLK/8信号。

poYBAGJ2MA-AVaD_AAB__c-gdU0148.jpg

图10.时钟跳跃和时钟注入

防止占空比翻转

RS锁存器3位LUT5和3位LUT3用于确保您不能注入或跳过太多时钟,以免偏移计数器翻转。我们不想让系统达到100%的占空比,然后如果它接收到另一个注入的时钟,则翻转到1%的占空比。

RS锁存器通过在系统距离翻转1个时钟周期时锁存多功能模块的输入来防止这种情况发生。我们使用一对DFF将PWM_SET和PWM_nRST信号延迟一个时钟周期,如下图所示。

pYYBAGJ2MBCAW9gwAAAwYSEtsro984.jpg

图11.BLOCK_CW和BLOCK_CCW

然后,我们使用一对LUT来创建必要的逻辑。如果我们的占空比太低以至于延迟的PWM_SET信号与PWM_nRST信号同时出现,我们不想进一步降低占空比,否则我们将翻转。

poYBAGJ2MBGAcGupAAAqiW9MRgw842.jpg

图12.最小占空比翻转情况

同样,如果我们正在接近最大占空比,从而延迟的PWM_nRST信号与PWM_SET信号同时出现,我们不想进一步增加占空比。在这种情况下,我们需要将nRST信号延迟2个时钟周期,以确保系统不会从99%翻转到1%。

poYBAGJ2MBKAOjI5AAAriP2-BX0518.jpg

图13.最大占空比翻转情况

具有I2C的占空比控制

该设计采用了另一种控制占空比的方法,而不是时钟跳跃/时钟注入。我们可以使用外部微控制器向GreenPAK写入I2C命令,以编程方式设置占空比。

poYBAGJ2MBOAFoNtAACUiDgTv_M628.jpg

图14.I2C占空比控制

如上图中的红色标签所示,控制I2C上的占空比需要控制器执行特定的命令序列。这些命令在下表中按顺序显示。“x”表示用户不应更改的位,“[”表示START位,“]”表示STOP位。

表1.I2C命令

pYYBAGJ2MBSAUIr-AAC2pQqLGhg680.jpg

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计数器),从而为占空比生成创建偏移量。

poYBAGJ2MBWAZ-HWAAAug4ZlQ4A306.jpg

图15.使用I2C加载占空比(频率不按比例)

转速表读数

如果需要,用户可以读取I2C上的转速计值,通过读取CNT2值来跟踪风扇转动的速度。CNT2将在每次ACMP0H出现上升沿时递增,并且可以通过I2C命令异步复位。(请注意,这是一个可选功能,ACMP0H的阈值需要根据正在使用的特定风扇的规格进行调整。)

poYBAGJ2MBaAcpruAAAvJKlh1G0434.jpg

图16.转速计部分

表2.I2C命令

pYYBAGJ2MBeAU0TuAABbHHVlFl8856.jpg

外部电路设计

poYBAGJ2MBeADVqNAABfQI4RJV0818.jpg

图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和风扇接头。

pYYBAGJ2MBiAbx9UAACVPkDBQeg094.jpg

图18.PCB和连接器

每个风扇板的左侧都有一个带罩的公头,右侧有一个母头,因此它们可以菊花链式连接在一起。每个风扇板都可以填充资源以独立控制2个风扇。

C#应用程序

我们编写了一个C#应用程序来通过FT232HUSB-I2C桥接我们的风扇板。此应用程序可用于通过应用程序生成的I2C命令调整每个风扇的频率。

poYBAGJ2MBqAONZSAAA01oXYa98464.jpg

图19.C#应用程序GUI

应用程序将每秒对所有16个I2C地址执行一次ping操作,并使用存在的从地址填充GUI。在这种情况下,我们将风扇1(从地址0001)和风扇3(从地址0011)连接到电路板。用户可以通过移动滑块或在滑块下方的文本框中输入0-256的值来单独调整每个风扇的占空比。

项目结论

在本文中,我们使用一些DialogGreenPAK可配置混合信号IC创建了一个功能齐全的12vPC风扇PWM控制器。通过我们的设计,我们能够使用旋转编码器或C#应用程序独立控制多达16个风扇(因为有16个可能的I2C从地址)。我们演示了如何使用一对偏移计数器生成PWM信号,以及如何在不翻转的情况下增加和减少该信号的占空比。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IC
    IC
    +关注

    关注

    35

    文章

    5529

    浏览量

    173151
  • PWM
    PWM
    +关注

    关注

    114

    文章

    4885

    浏览量

    209811
  • PWM控制器
    +关注

    关注

    18

    文章

    405

    浏览量

    35754
收藏 人收藏

    评论

    相关推荐

    请问用LM63输出PWM控制风扇为什么无法正常控制风扇转速?

    各路大神: 现在用LM63输出PWM控制风扇出现一个问题: 往LM63的PWM value寄存(ADDR:4C)写不同的值,为什么
    发表于 10-30 22:12

    基于ADT7475热监控PWM风扇控制器的ADT7475EBEVB评估板

    ADT7475EBEVB,ADT7475控制器评估板是一款热监控和多个PWM风扇控制器,适用于需要主动系统冷却的噪声敏感或功耗敏感型应用。
    发表于 05-10 09:34

    ADM00575三相BLDC无传感风扇控制器的演示套件

    传感风扇控制器演示板软件提供多种功能,如风扇驱动电源控制和监控,脉冲宽度调制(
    发表于 06-03 12:50

    MTD6505三相BLDC无传感风扇控制器

    ADM00345,MTD6505三相BLDC无传感风扇控制器演示板允许使用通过USB连接连接到电路板的PC软件控制和监控MTD6505器件
    发表于 08-24 09:36

    PWM风扇控制器(具有温度感应和按钮超控功能)资料(原理图+源代码)

    `带温度感应和最大速度按钮的风扇PWM控制器服务室和车库配备风扇。要使用大型风管
    发表于 10-12 09:48

    抗电磁干扰的PWM风扇控制器,不看肯定后悔

    求大佬详细介绍一下抗电磁干扰的PWM风扇控制器
    发表于 04-20 06:31

    使用LM35温度传感和ATTiny13微控制器控制风扇的教程

    和 ATTiny13 微控制器控制大多数标准风扇(25KHz PWM)。规格电源电压:12VDC(见正文)负载过温保护:有(60度以上)PWM
    发表于 07-21 06:19

    自制一个风扇控制器

    描述风扇控制器在这个项目中,我需要一个风扇控制器。但我不想只使用任何组件,而是尽可能多地使用我在家中已有的组件。因此,我用 4 个 Power Mosfets
    发表于 08-16 07:49

    如何使用PWM控制风扇转速?

    近期本人入手了一个支持PWM四线控制的涡扇散热(蓝色是温控线,黄色测速线可以先忽略),再加上VF2拥有两个PWM引脚(PWM0和
    发表于 09-13 07:05

    两通道温度监视器双PWM自动风扇速度控制器和五GPIO集成器

    两通道温度监视器双PWM自动风扇速度控制器和五GPIO集成器件
    发表于 11-11 16:32 22次下载

    采用FanSense TM技术的PWM风扇速度控制器

    TC642 是一款开关模式风扇速度控制器,用于控制直流无刷风扇的速度。器件采用脉宽调制技术(PWM) 实现
    发表于 11-20 18:26 49次下载

    抗电磁干扰的PWM风扇控制器原理及应用

    抗电磁干扰的PWM风扇控制器原理及应用 微芯科技(Microchip )公司提供一种工作于PWM模式的风扇制冷速度
    发表于 03-12 15:42 3817次阅读
    抗电磁干扰的<b class='flag-5'>PWM</b><b class='flag-5'>风扇</b><b class='flag-5'>控制器</b>原理及应用

    PWM控制器,PWM控制器是什么意思

    PWM控制器,PWM控制器是什么意思 脉宽调制的基本原理及其应用实例 脉宽调制(PWM)是利用微处理器的数字
    发表于 03-23 13:35 7972次阅读

    如何使用Silego GreenPAK构建温度传感系统

    在这个项目中,我们将测试如何使用 Silego GreenPAK 构建温度传感系统。
    的头像 发表于 05-07 17:07 1208次阅读
    如何使用Silego <b class='flag-5'>GreenPAK</b><b class='flag-5'>构建</b>温度传感系统

    无叶风扇控制器怎么调 无叶风扇控制器怎么接线

    无叶风扇控制器是一种新型的风扇控制设备,以其独特的设计和革新的风扇技术而备受关注。无叶风扇
    的头像 发表于 01-24 16:51 384次阅读