Indholdsfortegnelse:

Raspberry Pi CPU -temperaturindikator: 11 trin (med billeder)
Raspberry Pi CPU -temperaturindikator: 11 trin (med billeder)

Video: Raspberry Pi CPU -temperaturindikator: 11 trin (med billeder)

Video: Raspberry Pi CPU -temperaturindikator: 11 trin (med billeder)
Video: I just bought an INSANE graphics card 2024, Juli
Anonim
Raspberry Pi CPU -temperaturindikator
Raspberry Pi CPU -temperaturindikator

Tidligere havde jeg introduceret simple hindbær pi (i det følgende kaldet RPI) driftsstatusindikator kredsløb.

Denne gang vil jeg forklare et mere nyttigt indikator kredsløb for RPI, der kører som hovedløs (uden skærm) måde.

Kredsløbet ovenfor viser CPU -temperaturen i 4 forskellige niveauer, såsom:

- Grøn LED tændt, når CPU -temperaturen er inden for 30 ~ 39 grader

- Gul LED angiver, at temperaturen øges i området 40 til 45 grader

- 3. røde LED viser CPU'en blive en smule varm ved at nå 46 ~ 49 grader

- En anden rød LED blinker, når temperaturen overstiger mere end 50 grader

Ovenstående CPU -temperaturområder er mit personlige designkoncept (Andre temperaturområder kan konfigureres ved at ændre testbetingelser for pythonprogram, der styrer dette kredsløb).

Ved at bruge dette kredsløb udfører du ikke nødvendigvis kommandoen "vcgencmd measure_temp" ofte på konsolterminalen.

Dette kredsløb skal informere den aktuelle CPU -temperatur kontinuerligt og bekvemt.

Trin 1: Forberedelse af skemaer

Udarbejdelse af skemaer
Udarbejdelse af skemaer

Selvom du kan styre 4 lysdioder direkte ved kun at bruge pythonkoder, vil programmets kontrollogik indlæse RPI, og som følge heraf vil CPU -temperaturen øges mere, fordi du løbende skal køre en lille smule kompleks python -kode.

Derfor minimerer jeg python-kodens kompleksitet så enkelt som muligt og aflader LED-styringslogik til eksternt hardwarekredsløb.

CPU -temperaturindikator (herefter INICATOR) kredsløb består af følgende hoveddele.

-To optokoblere er forbundet til RPI GPIO-ben for at få data om temperaturniveau som f.eks. 00-> LAV, 01-> Mellem, 10-> Høj, 11-> Skal køles.

-74LS139 (eller 74HC139, 2-til-4 dekoder og de-multiplexer) styreudgange (Y0, Y1, Y2, Y3) i henhold til input (A, B)

- Når temperaturen er inden for 30 ~ 39 grader, udsender python -kode 00 til GPIO -ben. Derfor får 74LS139 inputdata 00 (A-> 0, B-> 0)

- Når 00 indtastes, bliver Y0 -output LAV. (Se sandhedstabel med 74LS139)

- Når Y0 -udgangen bliver LAV, aktiverer den 2N3906 PNP -transistor og som følge heraf tændes den grønne LED

- På samme måde skal Y1 (01 -> CPU -temperaturmedium) tænde gul LED og så videre

- Når Y3 bliver LAV, aktiverer DB140 aktiverende NE555 LED -blinkende kredsløb (dette er almindeligt 555 IC -baseret LED -blink), der er belastning af BD140 PNP -transistor

Den vigtigste komponent i dette kredsløb er 74LS139, som dekoder 2 cifre input til 4 forskellige enkelt output som vist i sandhedstabellen nedenfor.

Input | Produktion

G (Aktiver) | B | A | 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 |

Da 74LS139 -udgangen bliver LAV, kan PNP -type transistor gøre det overordnede kredsløb enkelt, da PNP -transistoren tændes, når baseterminalen bliver LAV. (Jeg viser NPN -version i slutningen af denne historie)

Da 100K potentiometer er inkluderet i NE555 LED blinker kredsløb, kan rød LED ON/OFF tid justeres frit efter behovene.

Trin 2: Lav PCB -tegning

Fremstilling af PCB -tegning
Fremstilling af PCB -tegning

Som driftsordningen for INDIKATOREN er forklaret, lad os begynde at lave kredsløbet.

Inden lodning af noget på universalboard er det nyttigt at forberede PCB -tegningen vist ovenfor for at minimere eventuelle fejl.

Tegningen er lavet ved at bruge power-point til at lokalisere hver del på universalbordet og lave ledningsmønstre blandt dele med ledninger.

Da IC og transistor pin-out-billeder er placeret sammen med PCB-ledningsmønster, kan lodning udføres ved hjælp af denne tegning.

Trin 3: Lodning

Lodning
Lodning

Selvom den originale PCB -tegning er lavet uden at bruge enkelte ledninger til at forbinde komponenter på PCB, lodder jeg noget anderledes.

Ved at bruge en enkelt leder af ledninger (ikke blik), forsøger jeg at reducere den universelle printstørrelse, der indeholder INDIKATOR -kredsløb.

Men som du kan se på lodningssiden af PCB, bruger jeg blikketråd også i henhold til de mønstre, der er afbildet i PCB -tegningen.

Når hver komponent er tilsluttet i henhold til det originale design af PCB -tegning, fungerer lodning af færdigt printkort inklusive INDICATOR -kredsløb korrekt.

Trin 4: Test af forberedelse

Test af forberedelse
Test af forberedelse

Før til RPI -forbindelse kræver det færdige kredsløb test.

Da der kan eksistere loddefejl, bruges DC -strømleverandør til at forhindre skader, når der opstår kortslutning eller forkert ledningsføring.

Til test af INDIKATOR er to ekstra strømforsyningskabler forbundet til kredsløbets 5V strømforsyningsstik.

Trin 5: Test (CPU -temperaturen er mellemniveau)

Test (CPU -temperaturen er mellemniveau)
Test (CPU -temperaturen er mellemniveau)

Når der ikke anvendes en 5V -indgang, dekoder 74LS139 input og aktiverer output Y0 som LOW (Grøn LED tændt).

Men 5V anvendes på input A, output Y1 på 74LS139 aktiveres (LOW).

Derfor er gul LED tændt som vist på billedet ovenfor.

Trin 6: Test (CPU skal køle niveau)

Test (CPU skal køle niveau)
Test (CPU skal køle niveau)

Når 5V anvendte begge indgange (A og B) på 74LS139, blinker 4. røde LED.

Blinkhastigheden kan ændres ved at justere 100K VR som vist på billedet ovenfor.

Når testen er afsluttet, kan to Molex 3 -polede hunkabler fjernes.

Trin 7: Strømforsyning til INDIKATOR -kredsløb

Strømforsyning til INDIKATOR -kredsløb
Strømforsyning til INDIKATOR -kredsløb

Til strømforsyning af INDICATOR-kredsløb bruger jeg en almindelig håndtelefonoplader, der sender 5V og USB type-B-adapter som vist på billedet ovenfor.

For at undgå problemer med RPI ved at tilslutte 3.3V GPIO og 5V drevet INDICATOR kredsløb er signalinterface og strømforsyning totalt isoleret.

Trin 8: RPI -ledninger

RPI ledninger
RPI ledninger

Til grænseflade INDIKATOR -kredsløb med RPI skal to GPIO -ben tildeles sammen med to jordstift.

Der er ikke noget specifikt krav til valg af GPIO -ben.

Du kan bruge alle GPIO -ben til at forbinde INDIKATOR.

Men kablede stifter skal betegnes som input til 74LS139 (f.eks. A, B) i python -program.

Trin 9: Python -program

Python -program
Python -program

Når kredsløbet er afsluttet, er det nødvendigt at lave python -program for at bruge INDICATOR -funktionen.

Se venligst flowdiagrammet ovenfor for flere detaljer om programlogik.

#-*-kodning: utf-8-*-

importere delproces, signal, sys

importtid, vedr

importer RPi. GPIO som g

A = 12

B = 16

g.setmode (g. BCM)

g. opsætning (A, g. OUT)

g. opsætning (B, g. OUT)

##

def signal_handler (sig, frame):

print ('Du har trykket på Ctrl+C!')

g. output (A, Falsk)

g. output (B, Falsk)

f.close ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

mens det er sandt:

f = open ('/home/pi/My_project/CPU_temperature_log.txt', 'a+')

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

temp_str = temp_str.decode (kodning = 'UTF-8', fejl = 'streng')

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

# udtrækning af den aktuelle CPU -temperatur

current_temp = float (CPU_temp [0])

hvis current_temp> 30 og current_temp <40:

# temperatur lav A = 0, B = 0

g. output (A, Falsk)

g. output (B, Falsk)

tid. sover (5)

elif current_temp> = 40 og current_temp <45:

# temperaturmedium A = 0, B = 1

g. output (A, Falsk)

g. output (B, True)

tid. sover (5)

elif current_temp> = 45 og current_temp <50:

# temperatur høj A = 1, B = 0

g. output (A, True)

g. output (B, Falsk)

tid. sover (5)

elif current_temp> = 50:

# CPU -køling er påkrævet høj A = 1, B = 1

g. output (A, True)

g. output (B, True)

tid. sover (5)

current_time = time.time ()

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

f.write (str (formated_time)+'\ t'+str (current_temp)+'\ n')

f.close ()

Python -programmets hovedfunktion er som nedenfor.

- For det første indstilling af GPIO 12, 16 som outputport

- Definere Ctrl+C interrupt handler til lukning af logfil og deaktiver GPIO 12, 16

- Når du går ind i den uendelige loop, skal du åbne logfilen som tilføjelsestilstand

- Læs CPU -temperaturen ved at udføre kommandoen “/opt/vc/bin/vcgencmd measure_temp”

- Når temperaturen er i området 30 ~ 39, send derefter 00 for at tænde den grønne LED

- Når temperaturen er inden for området 40 ~ 44, skal output 01 tændes for gul LED

- Når temperaturen er i området 45 ~ 49, send derefter 10 for at tænde den røde LED

- Når temperaturen er over 50, send derefter 11 for at få den røde LED til at blinke

- Skriv tidsstempel og temperaturdata til logfil

Trin 10: INDIKATOR Betjening

INDIKATOR Betjening
INDIKATOR Betjening

Når alt er OK, kan du se, at hver LED er tændt eller blinker i henhold til CPU -temperaturen.

Du behøver ikke at indtaste shell -kommando for at kontrollere den aktuelle temperatur.

Efter at have indsamlet data i logfilen og gengivet tekstdata til graf ved hjælp af Excel, vises resultatet på billedet ovenfor.

Ved påføring af store belastninger (Kørsel af to Midori -browsere og afspilning af Youtube -video) stiger CPU -temperaturen op til 57,9C.

Trin 11: Alternativ fremstilling (ved hjælp af NPN -transistor) og videreudvikling

Alternativ fremstilling (ved hjælp af NPN -transistor) og videreudvikling
Alternativ fremstilling (ved hjælp af NPN -transistor) og videreudvikling

Dette er et tidligere INDIKATOR -projekteksempel, der anvender NPN -transistorer (2N3904 og BD139).

Som du kan se, er en IC mere (74HC04, Quad inverter) nødvendig for at drive NPN -transistor, da der skal påføres HIGH -niveau spænding på basen af NPN for at tænde transistoren.

Som et sammendrag tilføjer unødvendig kompleksitet ved hjælp af NPN -transistor at lave INDICATOR -kredsløb.

For den videre udvikling af dette projekt tilføjer jeg køleventilator som vist på billedet ovenfor for at gøre INDICATOR -kredsløbet mere nyttigt.

Anbefalede: