Inhoudsopgave:

Raspberry Pi CPU-temperatuurindicator: 11 stappen (met afbeeldingen)
Raspberry Pi CPU-temperatuurindicator: 11 stappen (met afbeeldingen)

Video: Raspberry Pi CPU-temperatuurindicator: 11 stappen (met afbeeldingen)

Video: Raspberry Pi CPU-temperatuurindicator: 11 stappen (met afbeeldingen)
Video: How to Interface Industrial 4-20mA Sensors with Raspberry Pi Pico PLC | Mitsubishi FX1N PLC 2024, December
Anonim
Raspberry Pi CPU-temperatuurindicator
Raspberry Pi CPU-temperatuurindicator

Eerder had ik het eenvoudige Raspberry pi (hierna RPI) operationele statusindicatorcircuit geïntroduceerd.

Deze keer zal ik een nuttiger indicatorcircuit uitleggen voor RPI die als headless (zonder monitor) werkt.

Het bovenstaande circuit toont de CPU-temperatuur in 4 verschillende niveaus, zoals:

- 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

De bovenstaande CPU-temperatuurbereiken zijn mijn persoonlijke ontwerpconcept (andere temperatuurbereiken kunnen worden geconfigureerd door de testomstandigheden van het python-programma dat dit circuit bestuurt te wijzigen).

Door dit circuit te gebruiken, voert u niet noodzakelijkerwijs de opdracht "vcgencmd measure_temp" vaak uit op de consoleterminal.

Dit circuit zal de huidige CPU-temperatuur continu en gemakkelijk informeren.

Stap 1: Schema's voorbereiden

Schema's voorbereiden
Schema's voorbereiden

Hoewel je 4 LED's rechtstreeks kunt besturen door alleen python-codes te gebruiken, zal de besturingslogica van het programma RPI laden en als gevolg daarvan zal de CPU-temperatuur meer worden verhoogd omdat je continu een beetje complexe python-code moet uitvoeren.

Daarom minimaliseer ik de complexiteit van de pythoncode zo eenvoudig mogelijk en ontlaad ik de LED-besturingslogica naar een extern hardwarecircuit.

Het circuit van de CPU-temperatuurindicator (hierna INICATOR genoemd) bestaat uit de volgende hoofdonderdelen.

- Twee opto-couplers zijn aangesloten op RPI GPIO-pinnen om temperatuurniveaugegevens te krijgen, zoals 00->LOW, 01->Medium, 10->High, 11-> Cooling nodig.

- 74LS139 (of 74HC139, 2-to-4 decoder en de-multiplexer) besturen uitgangen (Y0, Y1, Y2, Y3) volgens de ingangen (A, B)

- Wanneer de temperatuur binnen 30 ~ 39 graden ligt, voert pythoncode 00 uit naar GPIO-pinnen. Daarom krijgen 74LS139 invoergegevens 00 (A->0, B->0)

- Als 00 wordt ingevoerd, wordt de Y0-uitgang LAAG. (Zie waarheidstabel van 74LS139)

- Wanneer de Y0-uitgang LAAG wordt, wordt de 2N3906 PNP-transistor geactiveerd en als gevolg daarvan gaat de groene LED branden

- Evenzo zal Y1 (01 -> CPU-temperatuurmedium) de gele LED inschakelen, enzovoort

- Wanneer Y3 LAAG wordt, activeert DB140 het NE555 LED-knippercircuit (dit is een gewone 555 IC-gebaseerde LED-knipper) die de BD140 PNP-transistor belast

Het belangrijkste onderdeel van dit circuit is 74LS139, dat de invoer van 2 cijfers in 4 verschillende enkele uitvoer decodeert, zoals weergegeven in de onderstaande waarheidstabel.

Invoer | Uitgang:

G (Inschakelen) | B | een | Y0 | Y1 | Y2 | Y3 |

H | X | X | H | H | H | H |

L | L | L | L | H | H | H |

L | L | H | H | L | H | H |

L | H | L | H | H | L | H |

L | H | H | H | H | H | L |

Aangezien de output van 74LS139 LAAG wordt, kan de PNP-type transistor de algehele schakeling eenvoudig maken, aangezien de PNP-transistor wordt ingeschakeld wanneer de basisterminal LAAG wordt. (Ik zal de NPN-versie aan het einde van dit verhaal laten zien)

Omdat een 100K-potentiometer is opgenomen in het NE555 LED-knipperlichtcircuit, kan de rode LED AAN / UIT-tijd vrij worden aangepast aan de behoeften.

Stap 2: PCB-tekening maken

PCB-tekening maken
PCB-tekening maken

Als het bedieningsschema van de INDICATOR wordt uitgelegd, laten we beginnen met het maken van het circuit.

Voordat u iets op een universeel bord gaat solderen, is het handig om de bovenstaande PCB-tekening voor te bereiden om eventuele fouten te minimaliseren.

De tekening is gemaakt door powerpoint te gebruiken om elk onderdeel op het universele bord te lokaliseren en bedradingspatronen te maken tussen onderdelen met draden.

Omdat IC- en transistor-pin-out-afbeeldingen samen met het PCB-bedradingspatroon zijn geplaatst, kan solderen worden uitgevoerd met behulp van deze tekening.

Stap 3: Solderen

Solderen
Solderen

Hoewel de originele PCB-tekening is gemaakt zonder enkele draden om componenten op PCB aan te sluiten, soldeer ik iets anders.

Door een enkele geleider van draden te gebruiken (geen tindraad), probeer ik de universele PCB-grootte te verkleinen die het INDICATOR-circuit bevat.

Maar zoals je aan de soldeerzijde van PCB kunt zien, gebruik ik ook tindraad volgens de patronen die zijn weergegeven in de PCB-tekening.

Wanneer elk onderdeel is aangesloten volgens het originele ontwerp van de PCB-tekening, zal het solderen van de voltooide printplaat inclusief het INDICATOR-circuit correct werken.

Stap 4: Testvoorbereiding

Testvoorbereiding
Testvoorbereiding

Voordat de RPI-verbinding wordt gemaakt, moet het voltooide circuit worden getest.

Aangezien er soldeerfouten kunnen bestaan, wordt DC-stroomleverancier gebruikt om schade te voorkomen bij kortsluiting of verkeerde bedrading.

Voor het testen van INDICATOR worden twee extra voedingskabels aangesloten op de 5V-voedingsconnector van het circuit.

Stap 5: Testen (CPU-temperatuur is gemiddeld)

Testen (CPU-temperatuur is gemiddeld niveau)
Testen (CPU-temperatuur is gemiddeld niveau)

Als er geen 5V-ingang wordt toegepast, dan decodeert 74LS139 de ingang en activeert uitgang Y0 als LAAG (Groene LED aan).

Maar 5V toegepast op ingang A, uitgang Y1 van 74LS139 wordt geactiveerd (LAAG).

Daarom is de gele LED ingeschakeld zoals weergegeven in de bovenstaande afbeelding.

Stap 6: Testen (CPU-koelniveau nodig)

Testen (CPU-koelniveau nodig)
Testen (CPU-koelniveau nodig)

Wanneer 5V op beide ingangen (A en B) van 74LS139 is aangesloten, knippert de 4e rode LED.

De knippersnelheid kan worden gewijzigd door 100K VR aan te passen zoals weergegeven in de bovenstaande afbeelding.

Wanneer het testen is voltooid, kunnen twee Molex 3-pins vrouwelijke kabels worden verwijderd.

Stap 7: Voeding naar INDICATOR Circuit

Voeding naar INDICATOR Circuit
Voeding naar INDICATOR Circuit

Voor het voeden van het INDICATOR-circuit gebruik ik een gewone handtelefoonoplader die 5V en een USB type-B-adapter uitvoert, zoals weergegeven in de bovenstaande afbeelding.

Om problemen met RPI te voorkomen door 3.3V GPIO en 5V aangedreven INDICATOR-circuit aan te sluiten, zijn signaalinterface en voeding volledig van elkaar geïsoleerd.

Stap 8: RPI-bedrading

RPI-bedrading
RPI-bedrading

Voor het koppelen van het INDICATOR-circuit met RPI, moeten twee GPIO-pinnen worden toegewezen samen met twee aardingspinnen.

Er zijn geen specifieke vereisten voor het kiezen van GPIO-pinnen.

U kunt alle GPIO-pinnen gebruiken om INDICATOR aan te sluiten.

Maar bedrade pinnen moeten worden aangewezen als invoer voor 74LS139 (bijv. A, B) in het Python-programma.

Stap 9: Python-programma

Python-programma
Python-programma

Als het circuit is voltooid, is het maken van een python-programma vereist om de INDICATOR-functie te gebruiken.

Raadpleeg het bovenstaande stroomschema voor meer informatie over programmalogica.

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

importeer subproces, signaal, sys

import tijd, opnieuw

importeer RPi. GPIO als g

A = 12

B = 16

g.setmode(g. BCM)

g.setup(A, g. OUT)

g.setup(B, g. OUT)

##

def signal_handler (sig, frame):

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

g.output (A, False)

g.output (B, 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=0, B=1

g.output (A, False)

g.output (B, True)

tijd.slaap(5)

elif current_temp >= 45 en current_temp < 50:

# temperatuur hoog A=1, B=0

g.output (A, True)

g.output (B, False)

tijd.slaap(5)

elif huidige_temp >= 50:

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

g.output (A, True)

g.output (B, True)

tijd.slaap(5)

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()

De belangrijkste functie van het python-programma is zoals hieronder.

- Eerst GPIO 12, 16 instellen als uitvoerpoort

- Ctrl+C interrupt-handler definiëren voor het sluiten van het logbestand en het uitschakelen van GPIO 12, 16

- Wanneer u naar de oneindige lus gaat, opent u het logbestand als toevoegmodus

- Lees de CPU-temperatuur door de opdracht "/opt/vc/bin/vcgencmd measure_temp" uit te voeren

- Wanneer de temperatuur binnen het bereik van 30 ~ 39 ligt, voer dan 00 uit om de groene LED in te schakelen

- Wanneer de temperatuur binnen het bereik van 40 ~ 44 ligt, voert u 01 uit om de gele LED in te schakelen

- Wanneer de temperatuur binnen het bereik van 45 ~ 49 ligt, voert u 10 uit om de rode LED in te schakelen

- Wanneer de temperatuur hoger is dan 50, uitgang 11 om de rode LED te laten knipperen

- Schrijf tijdstempel en temperatuurgegevens naar logbestand

Stap 10: INDICATOR Bediening

INDICATOR Werking
INDICATOR Werking

Als alles in orde is, kunt u zien dat elke LED aan is of knippert volgens de CPU-temperatuur.

U hoeft geen shell-opdracht in te voeren om de huidige temperatuur te controleren.

Na het verzamelen van gegevens in het logbestand en het omzetten van tekstgegevens in een grafiek met behulp van Excel, wordt het resultaat weergegeven in de bovenstaande afbeelding.

Bij hoge belasting (twee Midori-browsers draaien en YouTube-video afspelen), stijgt de CPU-temperatuur tot 57,9 ° C.

Stap 11: Alternatief maken (met behulp van NPN-transistor) en verdere ontwikkeling

Alternatief maken (met behulp van NPN-transistor) en verdere ontwikkeling
Alternatief maken (met behulp van NPN-transistor) en verdere ontwikkeling

Dit is een eerder voorbeeld van een INDICATOR-project waarin NPN-transistoren (2N3904 en BD139) worden gebruikt.

Zoals u kunt zien, is er nog een IC (74HC04, Quad-omvormers) nodig om de NPN-transistor aan te sturen, aangezien er een HOOG niveau-spanning moet worden toegepast op de basis van de NPN om de transistor in te schakelen.

Samenvattend: het gebruik van een NPN-transistor voegt onnodige complexiteit toe om een INDICATOR-circuit te maken.

Voor de verdere ontwikkeling van dit project zal ik een koelventilator toevoegen zoals weergegeven in de afbeelding hierboven om het INDICATOR-circuit nuttiger te maken.

Aanbevolen: