Inhoudsopgave:

Raspberry Pi Box met koelventilator met CPU-temperatuurindicator - Ajarnpa
Raspberry Pi Box met koelventilator met CPU-temperatuurindicator - Ajarnpa
Anonim
Raspberry Pi Box met koelventilator met CPU-temperatuurindicator
Raspberry Pi Box met koelventilator met CPU-temperatuurindicator

Ik had raspberry pi (hierna als RPI) CPU-temperatuurindicatorcircuit geïntroduceerd in het vorige project.

Het circuit toont eenvoudig het RPI 4 verschillende CPU-temperatuurniveau als volgt.

- Groene LED gaat aan wanneer de CPU-temperatuur binnen 30 ~ 39 graden is

- Gele LED geeft aan dat de temperatuur is verhoogd in het bereik van 40 tot 45 graden

- 3e rode LED geeft aan dat de CPU een beetje heet wordt door 46 ~ 49 graden te bereiken

- Een andere rode LED knippert wanneer de temperatuur meer dan 50 graden overschrijdt

***

Wanneer de temperatuur meer dan 50C overschrijdt, zal alle hulp nodig zijn voor een kleine RPI die niet te veel wordt benadrukt.

Volgens de informatie die ik op verschillende webpagina's heb gezien die spreken over het maximaal toelaatbare temperatuurniveau van RPI, zijn de meningen divers, zoals iemand vermeldt dat meer dan 60 ° C nog steeds redelijk goed is wanneer een koellichaam wordt gebruikt.

Maar mijn persoonlijke ervaring zegt iets anders dat de transmissieserver (met behulp van RPI met koellichaam) traag wordt en zich uiteindelijk als een zombie gedraagt wanneer ik hem enkele uren aanzet.

Daarom zijn deze extra circuit- en koelventilator toegevoegd voor het regelen van de CPU-temperatuur onder 50C om een stabiele werking van RPI te ondersteunen.

***

Ook het eerder geïntroduceerde CPU-temperatuurindicatorcircuit (hierna INDICATOR genoemd) is samen geïntegreerd om gemakkelijke temperatuurniveaucontrole te ondersteunen zonder het uitvoeren van de opdracht "vcgencmd measure_temp" op de consoleterminal.

Stap 1: Schema's voorbereiden

Schema's voorbereiden
Schema's voorbereiden

In twee eerdere projecten had ik het over volledige isolatie van de voeding tussen RPI en externe circuits.

In het geval van een koelventilator is onafhankelijke voeding vrij belangrijk omdat DC 5V VENTILATOR (motor) relatief zwaar wordt belast en nogal luidruchtig is tijdens het gebruik.

Daarom worden de volgende overwegingen benadrukt voor het ontwerpen van deze schakeling.

- Opto-couplers worden gebruikt om te communiceren met de RPI GPIO-pin om een koelventilator-activeringssignaal te krijgen

- Geen stroom van RPI en gebruik van een gewone telefoonoplader voor de stroombron van dit circuit.

- LED-indicator wordt gebruikt voor het informeren van de werking van de koelventilator

- 5V-relais wordt gebruikt om de koelventilator op mechanische wijze te activeren;

***

Dit circuit werkt samen met het CPU-temperatuurindicatorcircuit (hierna INDICATOR) door middel van python-programmabesturing.

Wanneer de INDICATOR begint te knipperen (temperatuur is hoger dan 50C), zal dit koelventilatorcircuit beginnen te werken.

Stap 2: Onderdelen voorbereiden

Net als bij andere eerdere projecten worden veel voorkomende componenten gebruikt voor het maken van een koelventilatorcircuit, zoals hieronder vermeld.

- Opto-coupler: PC817 (SHARP) x 1

- 2N3904 (NPN) x 1, BD139 (NPN) x 1

- TQ2-5V (Panasonic) 5V relais

- 1N4148-diode

- Weerstanden (1/4Watt): 220ohm x 2 (stroombegrenzing), 2,2K (transistorschakeling) x 2

- LED x 1

- 5V koelventilator 200mA

- Universeel bord met gaten van meer dan 20 (W) bij 20 (H) (u kunt elke maat universeel bord knippen om op het circuit te passen)

- Tindraad (raadpleeg mijn projectbericht "Raspberry Pi shutdown-indicator" voor meer informatie over het gebruik van tindraad)

- Kabel (rode en blauwe gemeenschappelijke enkeladerige kabel)

- Elke handtelefoonoplader 220V ingang en 5V uitgang (USB type B connector)

- Speldkop (3 pinnen) x 2

***

De fysieke afmeting van de koelventilator moet klein genoeg zijn om bovenop de RPI te worden gemonteerd.

Elk type relais kan worden gebruikt wanneer het kan werken op 5V en meer dan één mechanisch contact heeft.

Stap 3: PCB-tekening maken

PCB-tekening maken
PCB-tekening maken

Omdat het aantal componenten klein is, is de vereiste universele PCB-afmeting niet groot.

Let op de indeling van de pinpolariteit van de TQ2-5V zoals weergegeven in de afbeelding hierboven. (In tegenstelling tot het conventionele denken, is de werkelijke plus / grond-lay-out omgekeerd gerangschikt)

Persoonlijk heb ik een onverwacht probleem na het solderen vanwege de omgekeerd geplaatste (in vergelijking met andere relaisproducten) polariteitspinnen van TQ2-5V.

Stap 4: Solderen

Solderen
Solderen

Omdat het circuit zelf vrij eenvoudig is, is het bedradingspatroon niet veel complex.

Ik maak een "L" -vormige montagebeugel vast om de PCB rechtop te bevestigen.

Zoals je later kunt zien, is het acrylchassis waarop alles gemonteerd is een beetje klein.

Daarom is het verkleinen van de voetafdruk noodzakelijk, omdat het acrylchassis erg vol zit met PCB's en andere subonderdelen.

LED bevindt zich aan de voorzijde om de werking van de VENTILATOR gemakkelijk te herkennen.

Stap 5: Maken en monteren van koelventilator HAT

Koelventilator HAT maken en monteren
Koelventilator HAT maken en monteren

Ik veronderstel dat universele PCB een zeer nuttig onderdeel is dat voor uiteenlopende gebruiksdoeleinden kan worden gebruikt.

Koelventilator is gemonteerd op universele printplaat en gemonteerd en vastgezet met bouten en moeren.

Om luchtstroom mogelijk te maken, maak ik een groot gat door PCB's te boren.

Ook voor het eenvoudig aansluiten van startkabels, wordt het GIPO 40-pins gebied geopend door de PCB te snijden.

Stap 6: PCB's monteren

Monteer PCB's
Monteer PCB's

Zoals hierboven vermeld, was ik van plan om twee verschillende circuits in een enkele eenheid te consolideren.

Het eerder gemaakte CPU-temperatuurindicatorcircuit is samengevoegd met het nieuwe koelventilatorcircuit zoals weergegeven in de afbeelding hierboven., Alles is samen verpakt in een transparant en klein formaat (15 cm B x 10 cm D) acrylchassis.

Hoewel ongeveer de helft van de chassisruimte leeg en beschikbaar is, zal later een extra component worden ondergebracht in de resterende ruimte.

Stap 7: RPI bedraden met circuits

Bedrading RPI met circuits
Bedrading RPI met circuits

Twee circuits zijn met RPI op geïsoleerde wijze met elkaar verbonden door middel van opto-couplers.

Er wordt ook geen stroom getrokken uit RPI, aangezien de externe oplader van de handtelefoon stroom levert aan de circuits.

Later zul je weten dat dit soort geïsoleerde interfaceschema's behoorlijk de moeite waard zijn als later extra componenten meer in het acrylchassis worden geïntegreerd.

Stap 8: Python-programmabesturing alle circuits

Python-programmabesturing alle circuits
Python-programmabesturing alle circuits

Slechts een kleine toevoeging van code is vereist van de broncode van het CPU-temperatuurindicatorcircuit.

Wanneer de temperatuur hoger is dan 50C, begint twintig (20) herhalingen van het inschakelen van de VENTILATOR gedurende 10 seconden en het uitschakelen van 3 seconden.

Omdat de kleine motor van de FAN tijdens bedrijf maximaal 200 mA stroom nodig heeft, wordt de motoractiveringsmethode van het type PWM (Pulse Width Modulation) gebruikt voor een minder belastende handtelefoonoplader.

De gewijzigde broncode is zoals hieronder.

***

#-*- codering:utf-8 -*-

##

importeer subproces, signaal, sys

import tijd, opnieuw

importeer RPi. GPIO als g

##

A = 12

B = 16

VENTILATOR = 25

##

g.setmode(g. BCM)

g.setup(A, g. OUT)

g.setup(B, g. OUT)

g.setup(VENTILATOR, g. OUT)

##

def signal_handler (sig, frame):

print('Je hebt op Ctrl+C gedrukt!')

g.output (A, False)

g.output (B, False)

g.output (FAN, False)

f.sluiten()

sys.exit(0)

signaal.signaal(signaal. SIGINT, signaal_handler)

##

terwijl waar:

f = open('/home/pi/Mijn_project/CPU_temperatuur_log.txt', 'a+')

temp_str = subprocess.check_output('/opt/vc/bin/vcgencmd measure_temp', shell=True)

temp_str = temp_str.decode (codering = 'UTF-8', errors = 'strikt')

CPU_temp = re.findall("\d+\.\d+", temp_str)

# huidige CPU-temperatuur extraheren

##

huidige_temp = zwevend(CPU_temp[0])

als current_temp > 30 en current_temp < 40:

# temperatuur laag A=0, B=0

g.output (A, False)

g.output (B, False)

tijd.slaap(5)

elif current_temp >= 40 en current_temp < 45:

# temperatuur medium A=1, B=0

g.output (A, True)

g.output (B, False)

tijd.slaap(5)

elif current_temp >= 45 en current_temp < 50:

# temperatuur hoog A=0, B=1

g.output (A, False)

g.output (B, True)

tijd.slaap(5)

elif huidige_temp >= 50:

# CPU-koeling is vereist hoog A=1, B=1

g.output (A, True)

g.output (B, True)

voor i in bereik (1, 20):

g.output (FAN, True)

tijd.slaap(10)

g.output (FAN, False)

tijd.slaap(3)

huidige_tijd = tijd.tijd()

formated_time = time.strftime("%H:%M:%S", time.gmtime(current_time))

f.write(str(geformatteerde_tijd)+'\t'+str(huidige_temp)+'\n')

f.sluiten()

##

Omdat de bedieningslogica van deze python-code bijna vergelijkbaar is met die van het CPU-temperatuurindicatorcircuit, zal ik hier geen details herhalen.

Stap 9: VENTILATOR Circuitwerking

Werking ventilatorcircuit
Werking ventilatorcircuit

Als we naar de grafiek kijken, is de temperatuur hoger dan 50C zonder VENTILATOR-circuit.

Het lijkt erop dat de gemiddelde CPU-temperatuur rond de 40 ~ 47C ligt terwijl RPI werkt.

Als een zware systeembelasting wordt toegepast, zoals het afspelen van YouTube in een webbrowser, stijgt de temperatuur meestal snel tot 60C.

Maar met het FAN-circuit zal de temperatuur binnen 5 seconden met minder dan 50C worden verlaagd door de koelventilator in werking te stellen.

Als gevolg hiervan kunt u RPI de hele dag aanzetten en alles doen wat u maar wilt, zonder dat u zich zorgen hoeft te maken over oververhitting.

Stap 10: Verdere ontwikkeling

Verdere ontwikkeling
Verdere ontwikkeling

Zoals je kunt zien, is de helft van het acrylchassis leeg gebleven.

Ik zal daar extra componenten plaatsen en dit basisblok van RPI-box uitbreiden tot iets nuttigers.

Natuurlijk betekent meer toevoeging ook een beetje toenemende complexiteit.

Hoe dan ook, ik integreer in dit project twee circuits in een enkele doos.

Bedankt voor het lezen van dit verhaal.

Aanbevolen: