1

Итак, у меня есть поклонник 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

Снимок экрана с выводом, который я получаю

0