术语和定义
参考文献
//www.xmece.com/configurable-mixed-signal.
下载我们的免费GreenPAK软件设计师(1]以打开。gp文件[2],并查看所提出的电路设计。使用GreenPAK开发工具(3.可以在几分钟内将设计冻结到您自己定制的集成电路中。yabo国际娱乐Dialog Semiconductor提供完整的申请资料库[4],包括设计实例,以及对Dialog IC的功能和模块的解释。
- GreenPAK设计软件,《软件下载及用户指南》,Dialog Semiconductoryabo国际娱乐
- AN-CM-248 PWM控制器用于PC风扇,GreenPAK设计文件,Dialog半导yabo国际娱乐体
- GreenPAK开发工具,GreenPAK开发工具网页,对话半导体yabo国际娱乐
- GreenPAK应用笔记,GreenPAK应用笔记网页,Dialog半导体yabo国际娱乐
- SLG46108对话yabo国际娱乐框半导体
- SLG46826对话yabo国际娱乐框半导体
- AN-1101未锁定正交解码器对话yabo国际娱乐框半导体
- DMP3085LSD-13DICT-ND,二极管
- QS5K2CT-ND罗姆半导体
介绍
本文档描述了如何构建一个功能齐全的12v PC风扇PWM控制器。该设计可以控制多达16个3针电脑风扇。本设计采用一对Dialog GreenPAK可编程混合信号asic来控制每个风扇的占空比。它还包括两种改变风扇转速的方法:
- 使用正交/旋转编码器
- 使用c#构建的Windows应用程序与GreenPAK通过我2C。
系统框图
SLG46108旋转解码器设计
旋转编码器用于手动增加或减少风扇的占空比。该设备在其通道A和通道B的输出上输出脉冲,它们相距90°。看到AN-1101:未锁定的正交解码器[7,以获取有关旋转编码器工作原理的更多信息。
使用Dialog可以创建一个时钟旋转解码器GreenPAKSLG46108处理A通道和B通道信号,输出为逆时针(CCW)和顺时针(CW)脉冲。
当通道A引导通道B时,设计在连续波上输出一个短脉冲。当通道B引出通道A时,在CCW上输出一个短脉冲。
三个dff与时钟同步通道A输入。类似地,将OUT0设置为两个dff和OUT1设置为三个dff的管道延迟为通道B创建了相同的功能。
要使用几个lut创建CW和CCW输出,有关这个标准旋转解码器设计的更多信息,请访问这个网站.
的GreenPAK旋转解码器将接收输入脉冲A和B,并输出CW和CCW脉冲,如图所示图4.
异或门后的电路确保永远不会有连续波脉冲和CCW脉冲同时出现,允许旋转编码器的任何错误。CW和CCW信号的8ms下降沿延迟迫使它们保持高8ms加一个时钟周期,这是下游SLG46826所必需的GreenPAK年代。
SLG46826风扇控制器设计
带有偏移计数器的PWM产生
利用一对周期相同的偏置计数器产生PWM信号。第一个计数器设置DFF,第二个复位它,创建一致的占空比PWM信号,如图所示图6和图7.
CNT6设置DFF10, CNT1反转输出复位DFF10。引脚18和19用于输出PWM信号到外部电路。
带有时钟注入和时钟跳过的占空比控制
风扇控制器接收CW和CCW信号作为来自旋转解码器的输入,并使用它们来增加或减少控制风扇速度的PWM信号。这是通过几个数字逻辑组件实现的。
当接收到连续波脉冲时,占空比需要增加。这是通过注入一个额外的时钟脉冲到CNT6块,使它输出一个时钟周期比它本来会有。这个过程显示在图8.
CNT1仍然以恒定的速率被计时,但CNT6有两个额外的时钟注入。每当计数器上有一个额外的时钟时,它的输出就会向左移动一个时钟周期。
相反地,为了降低占空比,可以跳过CNT6的时钟脉冲,如图所示图9.CNT1仍然以恒定的速率被计时,而CNT6有跳过的时钟脉冲,计数器没有在它应该计时的时候被计时。这样,CNT6的输出每次向右推一个时钟周期,缩短了输出PWM占空比。
时钟注入和时钟跳过功能是使用一些数字逻辑元件在GreenPAK.一对多功能块用于创建一对闩锁/边缘检测器组合。4位LUT0用于普通时钟信号(CLK/8)和时钟注入或跳时钟信号之间的多路复用。该功能将在本节中进行更详细的描述5.2.2.
按钮输入
BUTTON输入断开20毫秒,然后用于拨动一个锁存器,以确定是否选择了这个特定的芯片。如果它被选中,那么4位LUT将通过时钟跳过或注入信号。如果芯片没有被选中,那么4位LUT仅仅通过CLK/8信号。
防止工作周期翻转
RS锁存3位LUT5和3位LUT3用于确保您不能注入或跳过过多的时钟,从而导致偏移计数器滚动。这是为了避免系统达到100%占空比,然后在接收到另一个注入时钟时转到1%占空比。
RS锁存器通过锁存多功能块的输入来防止这种情况发生,当系统距离滚动只有一个时钟周期时。一对DFFs将PWM_SET和PWM_nRST信号延迟一个时钟周期,如下所示图11.
使用一对lut创建必要的逻辑。如果占空比很低,延迟的PWM_SET信号与PWM_nRST信号同时发生,占空比的进一步降低将导致翻转。
类似地,如果接近最大占空比,即延迟的PWM_nRST信号与PWM_SET信号同时发生,则有必要避免进一步增加占空比。在这种情况下,将nRST信号延迟两个时钟周期,以确保系统不会从99%转到1%。
占空比控制与I2C
该设计采用了另一种方法来控制占空比,而不是时钟跳过/时钟注入。采用外接微控制器可实现I2C命令到GreenPAK设置占空比。
控制I的占空比2C要求控制器执行特定的命令序列。这些命令按顺序显示表1.“x”表示不应更改位,“[”表示开始位,“]”表示停止位。
期望的功能 |
我2C命令(从地址0001) |
目的 |
---|---|---|
设置I2C_RST高 |
[0x10 0x7A xxxx xxx1] |
同时复位CNT6和CNT1,使其输出同步 |
设置I2C_RST低 |
[0x10 0x7A xxxx xxx0] |
释放CNT6和CNT1上的重置,以便它们开始计数 |
写信给CNT5 |
[0 x10 0 xbc (0 - 255)) |
给one hot脉冲加载所需的量,以增加占空比 |
设置I2C_SET高 |
[0x10 0x7A xxxx xx1x] |
在CLK/8的下一个下降沿启动CNT5 OneShot脉冲 |
设置I2C_SET低 |
[0x10 0x7A xxxx xx0x] |
将I2C_SET信号复位为LOW |
PDLY块在CLK/8信号下降沿产生一个短的有源高脉冲,称为!CLK/8。该信号用于以稳定的频率对DFF14进行计时。当I2C_SET异步变高时,!CLK/8的下一个上升沿导致DFF14输出high,触发CNT5 OneShot。OneShot运行的时钟周期的数量,用户写入“写入CNT5”I指定2C命令表1.在这种情况下,它是10个时钟周期。OneShot允许25 MHz振荡器在其持续时间内运行,因此3位LUT0接收写入CNT5的时钟周期数。
图15显示这些信号,其中红色时钟是发送到3位LUT0的信号,它将它们传递到CNT6 (PWM_SET计数器),从而创建占空比产生的偏移量。
转速计读数
如果需要,用户可以读取转速计的值超过I2C通过读取CNT2值来跟踪风扇转动的速度。当ACMP0H有上升沿时,CNT2增加,并且可以用I异步复位2C命令。注意,这是一个可选特性,ACMP0H的阈值需要根据所使用的特定风扇的规格进行调整。
期望的功能 |
我2C命令(从地址0001) |
目的 |
---|---|---|
读性心动过速计数器 |
[0x10 0x7E [0x11 r . |
读取CNT2中的值 |
复位环计数器 |
[0x10 0x7A xxx1 xxxx] |
重新设置CNT2中的值 |
Un-reset环计数器 |
[0x10 0x7A xxx0 xxxx] |
释放CNT2上的重置,以便它开始计数 |
外部电路设计
外部电路相当简单。有一个按钮连接到Pin6的GreenPAK切换该特定设备是否被选择用于旋转控制,并连接到Pin12和Pin13的一个LED来指示设备何时被选择。
由于风扇运行12v,需要一对fet来控制其开关。的GreenPAK的Pin18和Pin19驱动一个fet。当fet打开时,它会拉动连接风扇到+ 12v的fet LOW栅极。当fet关闭时,fet的栅极被1kΩ电阻拉上,这将从+ 12v断开风扇。
PCB设计
为了设计原型,组装了一对pcb。左边的PCB是“风扇控制器”,它包含了旋转编码器,12v插座,SLG46108GreenPAK,以及FT232H USB到I的连接器2C突破。右边的两个pcb是“风扇板”,其中包含SLG46826GreenPAKs、按钮、开关、led和风扇头。
每个扇板有一个被遮盖的男性头部在左边和一个女性头部在右边,以便他们可以雏菊锁在一起。每个风扇板可以配置资源,独立控制两个风扇。
c#应用程序
编写了一个c#应用程序,通过FT232H USB-I与风扇板接口2C桥。这个应用程序可以用I来调节每个风扇的频率2由应用程序生成的C命令。
应用程序ping所有16 I2C每秒访问一次地址,并使用当前的从地址填充GUI。本例中风扇1(从地址0001)和风扇3(从地址0011)连接到单板。每个风扇的占空比可以通过移动滑块或在滑块下方的文本框中输入0-256的值来单独调整。
结论
使用这种设计,它可以独立控制多达16个风扇(因为有16个可能的I2或者使用旋转编码器或者使用c#应用程序。演示了如何用一对偏移计数器产生PWM信号,以及如何在不发生侧翻的情况下增加和减少该信号的占空比。