如何在Python脚本中获取方波频率
我正在使用TSL235(http://www.ti.com/lit/ds/symlink/tsl235.pdf)这个光转频率转换器,配合树莓派。这个传感器的输出是一个方波(占空比50%),它的频率和光的强度成正比。
所以我需要在一个Python脚本里知道,哪个频率到达了树莓派的输入GPIO引脚。
我只找到一个教程(http://playground.arduino.cc/Main/TSL235R),里面是C语言的代码,但我不懂C语言……我只会用Python。
读取GPIO输入到目前为止并不难:
#!/usr/bin/python
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.IN)
impuls_count = 0
# Do next lines for i.e. 1000ms:
GPIO.wait_for_edge(25, GPIO.FALLING)
impuls_count = impuls_count + 1
我想我需要在一段时间内计算信号的数量。但我该怎么做呢?
1 个回答
3
使用time模块。这个模块有一个时钟功能,可以精确到1微秒(1 MHz)。根据你的传感器说明书,它的频率最高只能到500 kHz,这个精度对于在高光强下获取准确的频率测量是足够的。
只需要计算一组输入周期的平均频率即可。
import time
NUM_CYCLES = 10
start = time.time()
for impulse_count in range(NUM_CYCLES):
GPIO.wait_for_edge(25, GPIO.FALLING)
duration = time.time() - start #seconds to run for loop
frequency = NUM_CYCLES / duration #in Hz