Uživatelské nástroje

Nástroje pro tento web


raspberry-pi-4b

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
Následující verze
Předchozí verze
Poslední revizeObě strany příští revize
raspberry-pi-4b [2020/01/05 16:13] – [FAN PWM Noctua NF-A4x10 5V] blazekraspberry-pi-4b [2020/01/05 16:24] blazek
Řádek 24: Řádek 24:
  
 {{::pwm_driver_stripboard.png?450|}} {{::pwm_driver_stripboard.png?450|}}
 +
 +**PIN PWM:** BCM 18 (PWM 0) https://pinout.xyz/
 +
 +**Specific fan speed and temperature breakpoints for Noctua NF-A4x10 5V**
 +
 +<file bash fan-noctua.sh>
 +#!/bin/bash
 +
 +# Device references
 +dev_temp=/sys/class/thermal/thermal_zone0/temp
 +dev_pwm=/sys/class/pwm/pwmchip0/pwm0
 +dev_enable=$dev_pwm/enable
 +dev_duty=$dev_pwm/duty_cycle
 +dev_period=$dev_pwm/period
 +
 +# Export pwm0 if it's not available
 +if [ ! -e $dev_pwm ]; then
 +    echo 0 > /sys/class/pwm/pwmchip0/export
 +    sleep 2
 +fi
 +
 +# PWM frequency (nanoseconds)
 +period=1000000
 +
 +# temperature breakpoints (millidegrees)
 +off_low=45000
 +low_off=40000
 +low_high=52000
 +high_low=48000
 +
 +# fan-speed (nanoseconds)
 +low=930000
 +high=999999
 +
 +# on/off values
 +off=0
 +on=1
 +
 +# update interval (seconds)
 +interval=10
 +
 +# initialise the fan
 +next=($off $low)
 +echo $period > $dev_period
 +echo ${next[0]} > $dev_enable
 +echo ${next[1]} > $dev_duty
 +
 +update_status() {
 +    if [[ $(cat $dev_enable) == 1 ]]; then
 +        if [[ $(cat $dev_duty) == $high ]]; then
 +            nvalue=3
 +            svalue="High"
 +        else
 +            nvalue=2
 +            svalue="Low"
 +        fi
 +    else
 +        nvalue=1
 +        svalue="Off"
 +    fi
 +    logger "Fan $svalue"
 +}
 +
 +while [ : ]
 +do
 +    temp=$(cat $dev_temp)
 +    current=($(cat $dev_enable) $(cat $dev_duty))
 +    if [ $temp -gt $off_low ]; then
 +        next[0]=$on
 +        if [ $temp -gt $low_high ]; then
 +            next[1]=$high
 +        elif [ $temp -lt $high_low ]; then
 +            next[1]=$low
 +        fi
 +    elif [ $temp -lt $low_off ]; then
 +        next[0]=$off
 +    fi
 +
 +    if [ "${next[*]}" != "${current[*]}" ]; then
 +        echo ${next[1]} > $dev_duty
 +        echo ${next[0]} > $dev_enable
 +        update_status
 +    fi
 +    sleep $interval
 +done
 +</file>
 ===== FAN PWM ===== ===== FAN PWM =====
  
raspberry-pi-4b.txt · Poslední úprava: 2023/12/26 19:13 autor: 127.0.0.1