风扇监控电路
?
? 已经商业化的产品有aquaero 5 LT USB fan controller,具体看这里。
芯片都是LPC接口,而这个好像只用在主板电路中。
从已有的设备(www.aqua-computer.de/e_content/e_aquaero.htm)看,它用USB HID接口,这样免驱动。
nuvoton的LPC芯片列表:http://www.nuvoton.com/NuvotonMOSS/Community/ProductInfo.aspx?tp_GUID=cf73485c-9e0a-4218-9bee-89dfe9a7bb87
如何用把LPC桥接到USB HID来呢?还是压根行不通?
从W83627DHG-P_W83627DHG-PT datasheet来看,只需使用其Hardware Monitor Interface就可以了,当然POWER PINS是需要接上的。
?
后来在amtel的网站上看到一篇文章“AVR441: Intelligent BLDC Fan Controller with?Temperature Sensor and Serial Interface”,这个直接用amtel的芯片来控制风扇,i2c接口。乖乖,原来控制风扇用通用芯片也可以,不用上面这种专用的芯片也可以啊。不过外围电路比较复杂些。
In linux,run sensors-detect, beside super I/O,? it also can detect I2C/smbus interface. as below:
?写道Lastly, we can probe the I2C/SMBus adapters for connected hardware?
存/取接口LPC Iterface用不到,那寄存器从哪里读取呢?原来除了LPC,还有个有个I2C interface来读取内部寄存器。也即是SMBus Interface接口,通过SDA, SLC来上传和下载数据。taobao搜索”USB转I2C“有这种专门的芯片。国产的大多为这种:http://www.usb-i2c-spi.com/CN/prod_usb-i2c.htm,优点在于外围元件简单,只需1个12M晶体和2个电容。缺点在于有点贵,单芯片就要50块。这个有linux的驱动,不错,不过当我下载deom的“大礼包”时,居然杀毒软件报有毒。不好靠谱啊。正规芯片有FTDI的FT232H,不过这个功能太多,而且我看了datasheet,需要的外围电路还挺复杂的。不过后来我发现tiny-usb的i2c方案还要刷avr芯片,这个也很麻烦啊。
有的型号还支持SPI Interface,这个会更容易操作么?可以看看这里SPI、I2C、UART三种串行总线协议的区别。
?
md,我又回来了。哈哈。
软件模拟的USB感觉不稳定,很是折腾,还是换为硬件的吧,谁叫我是菜鸟呢。
arduino老的用ft232rl,淘宝上价格大概是15元。新的uno用atmel的Atmega16U2。我对比了下电路图,FTDI的更简单些。也有可能是新版的挖掘了atmel的更多功能。
原件购买
smt焊接(或者贴片焊接)。淘宝上有,不过一般都接受只小批量的生产,我猜大多数还需要提供电路图。罢了。
128-QFP或者128-LQFP的淘宝上没有相应的转接卡卖,有144接口脚间距0.5mm的形状都为长方形,不符合要求。nuvoton 128针都为长方形。W83527HG为48针,简单,可惜不含i2c接口,无望。所以剩下的只有NCT5577D这一款:64针,0.40mm间距,只能买这种转接卡:QFN/QFP/TQFP/LQFP 16-80脚转接DIP 双面 转接板。
?
?
PartQtyName中文名taobao备注D1, D223.6V zener diode稳压二极管,3.6v, 0.5w不单卖后来看了看Geoff's Projects,由于加上了12v的电源调整电路,所以对输出要优化。加上470uf, 25v的电容,还有100uh, 1a or higher的电感。前者在这里有,相当吻合。后者则不大好找,0805 package的一般都没有标注电流值。
现在差的是大4pin口的插座,要能焊接的那种。找了半天,md终于找到了,叫做“8981连接器”,这里有。这家也有4pin的风扇接口。不过3pin的好像就没有了。
?
电源转换器用udn2981,用arduion的话,对于的anaglaWrite写入1~255的值,输出电压呈线性变化。这块芯片也有smd封装类型,就是可能argel上面没有这种类型的了。如果要贴片类型的,只能用UDN2982LW了
I2C协议编程?
跟普通的PCF8574不同,NCT577D读写的时候都要加上寄存器地址,这个有和DS1621类似,不过后者叫command,比如有读最高温度和最低温度阀值的command,这个感觉和寄存器地址差不多。在testapp/i2c_usb.c里面也有i2c_write_cmd_and_byte和i2c_write_byte这两种不同的方法,区别在于前者会发生两个字节,而后者只有一个字节。slave的芯片如何区分呢?比如如何记住前面一个是command?
?
重大失误:当I2C-USB做好后在连接NCT577D时,发现这个芯片是smbus master的,悲剧。虽然可以通过修改寄存器值而让其切换到slave的模式,但是还没连上去怎么修改寄存器呢?多个i2c master也是可以的通讯的,不过看这里好像要芯片本身支持这种模式。
?
为什么不直接用UART?一则文档上面只是说hardware monitor只支持lpc和i2c interface,虽然芯片本身支持UART。再者,i2c好像简单点。
?
焊接工具?
看chiphell这里的推荐,使用电烙铁goot TQ-95,然后“原装日本太洋 GOOT TQ-77RT-2C 烙铁头 TQ-77 TQ-95专用 斜咀焊咀”,这个是斜口的,方便拖焊。需要焊油么?感觉不使用也行的。
?
风扇相关
?
一般风扇为12v输入电压,比如安耐美的。
?
风扇自己也有单片机,牛啊,小小东西也能做成这样。我的九州风神的PWM风扇的芯片是三洋的LB11961。