Innehållsförteckning:

PWM -reglerad fläkt baserad på CPU -temperatur för Raspberry Pi: 4 steg (med bilder)
PWM -reglerad fläkt baserad på CPU -temperatur för Raspberry Pi: 4 steg (med bilder)

Video: PWM -reglerad fläkt baserad på CPU -temperatur för Raspberry Pi: 4 steg (med bilder)

Video: PWM -reglerad fläkt baserad på CPU -temperatur för Raspberry Pi: 4 steg (med bilder)
Video: Lesson 2: Getting Arduino Software and using Documentation for SunFounder Arduino Kit | SunFounder 2024, November
Anonim
PWM -reglerad fläkt baserad på CPU -temperatur för Raspberry Pi
PWM -reglerad fläkt baserad på CPU -temperatur för Raspberry Pi

Många fodral för Raspberry Pi har en liten 5V fläkt för att hjälpa till att kyla CPU: n. Men dessa fläktar är vanligtvis ganska bullriga och många människor ansluter den till 3V3 -stiftet för att minska bullret. Dessa fläktar är vanligtvis klassade för 200mA vilket är ganska högt för 3V3 -regulatorn på RPi. Detta projekt kommer att lära dig hur du reglerar fläkthastigheten baserat på CPU -temperaturen. Till skillnad från de flesta självstudier som täcker detta ämne, kommer vi inte bara att slå på eller stänga av fläkten, utan vi kommer att styra dess hastighet som den gjordes på vanlig dator med Python.

Steg 1: Delar som behövs

För detta projekt kommer vi bara att använda några få komponenter som vanligtvis ingår i elektronikpaket för amatörer som du kan hitta på Amazon, som den här.

  • Raspberry Pi som kör Raspbian (men borde fungera med andra distribuerar).
  • 5V fläkt (men en 12V fläkt kan användas med en anpassad transistor och en 12V strömförsörjning).
  • NPN -transistor som stöder minst 300mA, som en 2N2222A.
  • 1K motstånd.
  • 1 diod.

Valfritt, för att sätta in komponenterna i höljet (men inte gjort ännu):

  • En liten bit protoboard, för att lödda komponenterna.
  • Stor värmekrympning, för att skydda brädet.

Steg 2: Elektriska anslutningar

Elektriska anslutningar
Elektriska anslutningar
Elektriska anslutningar
Elektriska anslutningar
Elektriska anslutningar
Elektriska anslutningar

Motstånd kan anslutas på båda sätten, men var försiktig med transistorns och diodens riktning. Diodens katod måste anslutas till +5V (röd) ledning och anoden måste anslutas till GND (svart) kabel. Kontrollera transistordokumentet för sändar-, bas- och samlarstift. Fläktens mark måste vara ansluten till samlaren, och Rpis mark måste vara ansluten till sändaren

För att styra fläkten måste vi använda en transistor som kommer att användas i öppen kollektorkonfiguration. Genom att göra detta har vi en strömbrytare som kommer att ansluta eller koppla bort jordkabeln från fläkten till marken på hallon Pi.

En NPN BJT -transistor leder beroende på den ström som flödar i dess grind. Strömmen som får flöda från kollektorn (C) till sändaren (E) är:

Ic = B * Ib

Ic är strömmen som strömmar genom kollektorn emitteren, Ib är den ström som strömmar genom basen till sändaren och B (beta) är ett värde beroende på varje transistor. Vi uppskattar B = 100.

Eftersom vår fläkt är klassad som 200mA behöver vi minst 2mA genom basen på transistorn. Spänningen mellan basen och sändaren (Vbe) anses vara konstant och Vbe = 0, 7V. Det betyder att när GPIO är på har vi 3,3 - 0,7 = 2,6V vid motståndet. För att ha 2mA genom det motståndet behöver vi ett motstånd på maximalt 2,6 / 0,002 = 1300 ohm. Vi använder ett motstånd på 1000 ohm för att förenkla och behålla en felmarginal. Vi kommer att ha 2,6mA genom GPIO -stiftet som är helt säkert.

Eftersom en fläkt i grunden är en elektrisk motor är det en induktiv laddning. Detta betyder att när transistorn slutar leda kommer strömmen i fläkten att fortsätta flöda när en induktiv laddning försöker hålla strömmen konstant. Detta skulle resultera i en hög spänning på fläktens jordstift och kan skada transistorn. Det är därför vi behöver en diod parallellt med fläkten som kommer att få strömmen att flöda konstant genom motorn. Denna typ av diodinställning kallas en svänghjulsdiod

Steg 3: Program för att kontrollera fläkthastigheten

För att styra fläkthastigheten använder vi en PWM -signal från RPi. GPIO -biblioteket. En PWM -signal är väl anpassad för att driva elmotorer, eftersom deras reaktionstid är mycket hög jämfört med PWM -frekvensen.

Använd programmet calib_fan.py för att hitta FAN_MIN -värdet genom att köra i terminalen:

python calib_fan.py

Kontrollera flera värden mellan 0 och 100% (bör vara runt 20%) och se vad som är minsta värde för din fläkt att slå på.

Du kan ändra korrespondensen mellan temperatur och fläkthastighet i början av koden. Det måste finnas lika många tempSteps som speedSteps -värden. Detta är den metod som vanligtvis används i PC-moderkort, rörliga punkter på en Temp / Speed 2-axlig graf.

Steg 4: Kör programmet vid start

För att köra programmet automatiskt vid start gjorde jag ett bash -skript där jag lade alla program jag vill starta och sedan startar jag detta bash -skript vid start med rc.locale

  1. Skapa en katalog/home/pi/Scripts/och placera fan_ctrl.py -filen i den katalogen.
  2. I samma katalog skapar du en fil som heter launcher.sh och kopierar manuset nedan.
  3. Redigera filen /etc/rc.locale och lägg till en ny rad före "exit 0": sudo sh '/home/pi/Scripts/launcher.sh'

launcher.sh -skript:

#!/bin/sh #launcher.sh #navigera till hemkatalogen, sedan till den här katalogen, kör sedan python -skript, sedan tillbaka homelocalecd/cd/home/pi/Scripts/sudo python3./fan_ctrl.py & cd/

Om du vill använda den med OSMC till exempel måste du starta den som en tjänst med systemd.

  1. Ladda ner fanctrl.service -filen.
  2. Kontrollera sökvägen till din python -fil.
  3. Placera fanctrl.service i/lib/systemd/system.
  4. Slutligen, aktivera tjänsten med sudo systemctl enable fanctrl.service.

Denna metod är säkrare, eftersom programmet automatiskt startas om om det dödas av användaren eller systemet.

Rekommenderad: