技术
树莓派风扇测速 update
标签(空格分隔): 技术
经过整整一天的折腾,也总算弄明白了风扇测速线的大概工作原理。首先第一个错误就是风扇并非一个i2c设备(这个被喷了),而是标准的pwm设备。测速线输出速度的方法是,通过调整输出脉冲的宽幅(大概就是方波的波长吧),来输出占空比(有波的长度和输出周期的比值),然后占空比和转速是成正比的,查表就可以得到风扇的转速了。还有一种是转一圈输出一个脉冲,但是根据我的测试,手头上的风扇明显不是这种。
所以要检测速度也是比较简单,参考了下单片机检测风扇速度的方法,检测测速线输出的下降沿就好了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import RPi.GPIO as gpio import timeit import time gpio.setmode(gpio.BOARD) gpio.setup(7,gpio.OUT) gpio.output(7,0) time.sleep(1) gpio.output(7,1) gpio.setup(7,gpio.IN) def timer1() : while True : if gpio.input(7) == 0 : gpio.setup(7,gpio.OUT) gpio.output(7,1) gpio.setup(7,gpio.IN) if gpio.input(7) == 0: break def load1() : gpio.setup(7,gpio.OUT) gpio.setup(7,gpio.IN) if __name__=='__main__': from timeit import Timer import RPi.GPIO as gpio t1=Timer("timer1()","from __main__ import timer1") t2=Timer("load1()","from __main__ import load1") t1=t1.timeit(1)-t2.timeit(1) t1=t1/0.00004 print t1
|
