Итак, у меня есть поклонник Noctua (ссылка на продукт: https://noctua.at/en/products/fan/nf-a4x20-5v/specification), подключенный к Raspberry Pi 3. Я хочу знать обороты вентилятора на каждом втором интервале. У меня есть сценарий Python, который дает мне значение для RPM, но RPM, похоже, не является точным. Скорость вентилятора составляет 5000 об / мин (+/- 10%) при полной мощности, тогда как сценарий дает значение оборотов, которое составляет половину ожидаемого. Мне нужна помощь с тем, как получить точное показание, используя ШИМ (широтно-импульсная модуляция) или любой другой метод.
def calculate_elapse(channel): # callback function
global pulse, start_timer, elapse
pulse+=1 # increase pulse by 1 whenever interrupt occurred
elapse = time.time() - start_timer # elapse for every 1 complete rotation made!
start_timer = time.time() # let current time equals to start_timer
def calculate_speed(r_cm):
global pulse,elapse,rpm,dist_km,dist_meas,km_per_sec,km_per_hour
if elapse !=0: # to avoid DivisionByZero error
rpm = 1/elapse * 60
circ_cm = (2*math.pi)*r_cm # calculate wheel circumference in CM
dist_km = circ_cm/100000 # convert cm to km
km_per_sec = dist_km / elapse # calculate KM/sec
km_per_hour = km_per_sec * 3600 # calculate KM/h
dist_meas = (dist_km*pulse)*1000 # measure distance traverse in meter
return km_per_hour