Innholdsfortegnelse:

PWM -regulert vifte basert på CPU -temperatur for Raspberry Pi: 4 trinn (med bilder)
PWM -regulert vifte basert på CPU -temperatur for Raspberry Pi: 4 trinn (med bilder)

Video: PWM -regulert vifte basert på CPU -temperatur for Raspberry Pi: 4 trinn (med bilder)

Video: PWM -regulert vifte basert på CPU -temperatur for Raspberry Pi: 4 trinn (med bilder)
Video: SKR 1.4 - Fan Control 2024, November
Anonim
PWM -regulert vifte basert på CPU -temperatur for Raspberry Pi
PWM -regulert vifte basert på CPU -temperatur for Raspberry Pi

Mange tilfeller for Raspberry Pi kommer med en liten 5V vifte for å hjelpe kjøle CPU'en. Imidlertid er disse viftene vanligvis ganske bråkete, og mange kobler den til 3V3 -pinnen for å redusere støyen. Disse viftene er vanligvis vurdert til 200mA, noe som er ganske høyt for 3V3 -regulatoren på RPi. Dette prosjektet vil lære deg hvordan du regulerer viftehastigheten basert på CPU -temperaturen. I motsetning til de fleste opplæringsprogrammer som dekker dette emnet, vil vi ikke bare slå på eller av viften, men vi vil kontrollere hastigheten som den er gjort på vanlig PC ved hjelp av Python.

Trinn 1: Nødvendige deler

For dette prosjektet vil vi bare bruke noen få komponenter som vanligvis er inkludert i elektronikksett for hobbyister som du kan finne på Amazon, som denne.

  • Raspberry Pi som kjører Raspbian (men burde fungere med andre distribusjoner).
  • 5V vifte (men en 12V vifte kan brukes med en tilpasset transistor og en 12V strømforsyning).
  • NPN -transistor som støtter minst 300mA, som en 2N2222A.
  • 1K motstand.
  • 1 diode.

Valgfritt, for å sette komponentene inne i saken (men ikke gjort ennå):

  • Et lite stykke protoboard, for å lodde komponentene.
  • Stor varmekrymping, for å beskytte brettet.

Trinn 2: Elektriske tilkoblinger

Elektriske tilkoblinger
Elektriske tilkoblinger
Elektriske tilkoblinger
Elektriske tilkoblinger
Elektriske tilkoblinger
Elektriske tilkoblinger

Motstand kan plugges på begge måter, men vær forsiktig med transistorens og diodenes retning. Diodes katode må kobles til +5V (rød) ledning, og anode må være koblet til GND (svart) ledning. Sjekk transistordokumentet ditt for sender, base og samlerpinner. Viftens bakke må være koblet til samleren, og Rpi -bakken må være koblet til emitteren

For å kontrollere viften må vi bruke en transistor som skal brukes i åpen kollektorkonfigurasjon. Ved å gjøre dette har vi en bryter som kobler eller kobler jordledningen fra viften til bakken av bringebærpi.

En NPN BJT -transistor leder avhengig av strømmen som strømmer i porten. Strømmen som får strømme fra kollektoren (C) til emitteren (E) er:

Ic = B * Ib

Ic er strømmen som strømmer gjennom kollektoren emitteren, Ib er strømmen som strømmer gjennom basen til emitteren, og B (beta) er en verdi avhengig av hver transistor. Vi tilnærmer B = 100.

Siden viften vår er vurdert til 200mA, trenger vi minst 2mA gjennom transistorens base. Spenningen mellom basen og emitteren (Vbe) regnes som konstant og Vbe = 0, 7V. Dette betyr at når GPIO er på, har vi 3,3 - 0,7 = 2,6V ved motstanden. For å ha 2mA gjennom den motstanden, trenger vi en motstand på maksimum 2,6 / 0,002 = 1300 ohm. Vi bruker en motstand på 1000 ohm for å forenkle og beholde en feilmargin. Vi vil ha 2,6mA gjennom GPIO -pinnen, som er helt trygg.

Siden en vifte i utgangspunktet er en elektrisk motor, er det en induktiv ladning. Dette betyr at når transistoren slutter å lede, vil strømmen i viften fortsette å strømme når en induktiv ladning prøver å holde strømmen konstant. Dette vil resultere i en høy spenning på viftens jordnål og kan skade transistoren. Derfor trenger vi en diode parallelt med viften som får strømmen til å flyte konstant gjennom motoren. Denne typen diodeoppsett kalles en svinghjulsdiode

Trinn 3: Program for å kontrollere viftehastigheten

For å kontrollere viftehastigheten bruker vi et programvare -PWM -signal fra RPi. GPIO -biblioteket. Et PWM -signal er godt tilpasset for å drive elektriske motorer, ettersom reaksjonstiden deres er veldig høy i forhold til PWM -frekvensen.

Bruk programmet calib_fan.py for å finne FAN_MIN -verdien ved å kjøre i terminalen:

python calib_fan.py

Kontroller flere verdier mellom 0 og 100% (bør være rundt 20%) og se hva som er minimumsverdien for viften din å slå på.

Du kan endre samsvar mellom temperatur og viftehastighet i begynnelsen av koden. Det må være like mange tempSteps som speedSteps -verdier. Dette er metoden som vanligvis brukes i PC-hovedkort, bevegelige punkter på en Temp / Speed 2-akset graf.

Trinn 4: Kjør programmet ved oppstart

For å kjøre programmet automatisk ved oppstart, laget jeg et bash -skript der jeg la alle programmene jeg vil starte, og deretter starter jeg dette bash -skriptet ved oppstart med rc.locale

  1. Opprett en katalog/home/pi/Scripts/og plasser fan_ctrl.py -filen i den katalogen.
  2. I den samme katalogen lager du en fil som heter launcher.sh og kopierer skriptet nedenfor.
  3. Rediger /etc/rc.locale -filen og legg til en ny linje før "exit 0": sudo sh '/home/pi/Scripts/launcher.sh'

launcher.sh -skript:

#!/bin/sh #launcher.sh #naviger til hjemmekatalogen, deretter til denne katalogen, kjør deretter python -skript, deretter tilbake homelocalecd/cd/home/pi/Scripts/sudo python3./fan_ctrl.py & cd/

Hvis du for eksempel vil bruke den med OSMC, må du starte den som en tjeneste med systemd.

  1. Last ned fanctrl.service -filen.
  2. Sjekk banen til python -filen.
  3. Plasser fanctrl.service i/lib/systemd/system.
  4. Til slutt, aktiver tjenesten med sudo systemctl enable fanctrl.service.

Denne metoden er tryggere, ettersom programmet automatisk startes på nytt hvis det blir drept av brukeren eller systemet.

Anbefalt: