Innholdsfortegnelse:

Raspberry Pi CPU -temperaturindikator: 11 trinn (med bilder)
Raspberry Pi CPU -temperaturindikator: 11 trinn (med bilder)

Video: Raspberry Pi CPU -temperaturindikator: 11 trinn (med bilder)

Video: Raspberry Pi CPU -temperaturindikator: 11 trinn (med bilder)
Video: Установите Windows 11 на Raspberry Pi 2024, Juli
Anonim
Raspberry Pi CPU -temperaturindikator
Raspberry Pi CPU -temperaturindikator

Tidligere hadde jeg introdusert enkel bringebær pi (heretter kalt RPI) driftsstatusindikator krets.

Denne gangen vil jeg forklare en mer nyttig indikatorkrets for RPI som kjører på en hodeløs måte (uten skjerm).

Kretsen ovenfor viser CPU -temperaturen i 4 forskjellige nivåer, for eksempel:

- Grønn LED slått på når CPU -temperaturen er innenfor 30 ~ 39 grader

- Gul LED indikerer at temperaturen er økt i området 40 til 45 grader

- Tredje røde LED viser at CPU blir litt varm ved å nå 46 ~ 49 grader

- En annen rød LED vil blinke når temperaturen overstiger mer enn 50 grader

CPU -temperaturområdene ovenfor er mitt personlige designkonsept (Andre temperaturområder kan konfigureres ved å endre testbetingelsene for pythonprogrammet som styrer denne kretsen).

Ved å bruke denne kretsen utfører du ikke nødvendigvis kommandoen "vcgencmd measure_temp" ofte på konsollterminalen.

Denne kretsen skal informere gjeldende CPU -temperatur kontinuerlig og praktisk.

Trinn 1: Utarbeide skjemaer

Forbereder skjemaer
Forbereder skjemaer

Selv om du kan styre 4 lysdioder direkte ved å bare bruke pythonkoder, vil kontrolllogikkene i programmet laste RPI, og som et resultat vil CPU -temperaturen økes mer fordi du bør kjøre litt kompleks pythonkode kontinuerlig.

Derfor minimerer jeg kompleksiteten av python-koder så enkelt som mulig og avlaster LED-kontrolllogikk til ekstern maskinvarekrets.

CPU -temperaturindikatorkretsen (heretter INICATOR) består av følgende hoveddeler.

-To optokoblere er koblet til RPI GPIO-pinner for å få temperaturnivådata som 00-> LAV, 01-> Middels, 10-> Høy, 11-> Trenger kjøling.

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

- Når temperaturen er innenfor 30 ~ 39 grader, sender python -kode 00 til GPIO -pinner. Derfor får 74LS139 inndata 00 (A-> 0, B-> 0)

- Når 00 er angitt, blir Y0 -utgangen LAV. (Se sannhetstabellen til 74LS139)

- Når Y0 -utgangen blir LAV, aktiverer den 2N3906 PNP -transistoren, og som et resultat er grønn LED slått på

- På samme måte skal Y1 (01 -> CPU -temperaturmedium) slå på gul LED og så videre

- Når Y3 blir LAV, aktiverer DB140 NE555 LED -blinkende krets (dette er vanlig 555 IC -basert LED -blink) som er belastning på BD140 PNP -transistor

Den viktigste komponenten i denne kretsen er 74LS139 som dekoder 2 siffer input til 4 forskjellige enkeltutganger som vist i sannhetstabellen nedenfor.

Inngang | Produksjon

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 |

Etter hvert som 74LS139 -utgangen blir LAV, kan transistoren av PNP -typen gjøre den generelle kretsen enkel, ettersom PNP -transistoren slås på når baseterminalen blir LAV. (Jeg viser NPN -versjon på slutten av denne historien)

Ettersom 100K potensiometer er inkludert i NE555 LED blinker krets, kan rød LED PÅ/AV tid justeres fritt i henhold til behovene.

Trinn 2: Lag PCB -tegning

Lage PCB -tegning
Lage PCB -tegning

Som driftsopplegget til INDIKATOREN er forklart, la oss begynne å lage kretsen.

Før du lodder noe på universalbord, er det nyttig å forberede PCB -tegningen som vist ovenfor for å minimere eventuelle feil.

Tegningen er laget ved å bruke power-point til å lokalisere hver del på universalbordet og lage ledningsmønstre blant deler med ledninger.

Ettersom IC og transistor pin-out-bilder samlokaliseres sammen med PCB-ledningsmønster, kan lodding utføres ved hjelp av denne tegningen.

Trinn 3: Lodding

Lodding
Lodding

Selv om original PCB -tegning er laget uten å bruke enkeltledninger for å koble komponenter på PCB, lodder jeg noe annerledes.

Ved å bruke en enkelt leder av ledninger (ikke tinntråd), prøver jeg å redusere universell PCB -størrelse som inneholder INDIKATOR -krets.

Men som du kan se på loddesiden av PCB, bruker jeg tinntråd også i henhold til mønstrene som er avbildet i PCB -tegningen.

Når hver komponent er tilkoblet i henhold til den opprinnelige utformingen av PCB -tegning, vil lodding av ferdig PCB -kort inkludert INDIKATOR -krets fungere korrekt.

Trinn 4: Testing av forberedelser

Testing av forberedelser
Testing av forberedelser

Før RPI -tilkobling krever den ferdige kretsen testing.

Siden det kan oppstå loddefeil, brukes DC -strømleverandør for å forhindre skader når det oppstår kortslutning eller feil ledninger.

For testing av INDIKATOR er to ekstra strømkabler koblet til kretsens 5V strømforsyningskontakt.

Trinn 5: Testing (CPU -temperaturen er middels nivå)

Testing (CPU -temperaturen er middels nivå)
Testing (CPU -temperaturen er middels nivå)

Når det ikke brukes noen 5V -inngang, dekoder 74LS139 inngang og aktiverer utgang Y0 som LAV (grønn LED slått på).

Men 5V brukes på inngang A, utgang Y1 på 74LS139 aktiveres (LAV).

Derfor er gul LED slått på som vist på bildet ovenfor.

Trinn 6: Testing (CPU trenger kjøleenivå)

Testing (CPU trenger kjøle nivå)
Testing (CPU trenger kjøle nivå)

Når 5V brukte begge inngangene (A og B) på 74LS139, blinker den fjerde røde lysdioden.

Blinkende hastighet kan endres ved å justere 100K VR som vist på bildet ovenfor.

Når testen er fullført, kan to Molex 3 -pinners hunnkabler fjernes.

Trinn 7: Strømforsyning til INDIKATOR -krets

Strømforsyning til INDIKATOR -krets
Strømforsyning til INDIKATOR -krets

For å drive INDICATOR-kretsen bruker jeg vanlig håndtelefonlader som sender ut 5V og USB type-B-adapter som vist på bildet ovenfor.

For å unngå problemer med RPI ved å koble til 3.3V GPIO og 5V drevet INDICATOR -krets, er signalgrensesnittet og strømforsyningen totalt isolert.

Trinn 8: RPI -ledninger

RPI -ledninger
RPI -ledninger

For tilkobling av INDIKATOR -krets med RPI, bør to GPIO -pinner være dedikert sammen med to bakkepinner.

Det er ikke noe spesifikt krav for å velge GPIO -pinner.

Du kan bruke alle GPIO -pinner for å koble til INDIKATOR.

Men kablede pinner bør angis som innganger til 74LS139 (f.eks. A, B) i python -programmet.

Trinn 9: Python -program

Python -program
Python -program

Etter hvert som kretsen er fullført, kreves det et python -program for å bruke INDIKATOR -funksjonen.

Se flytdiagrammet ovenfor for mer detaljert informasjon om programlogikk.

#-*-koding: utf-8-*-

importere delprosess, signal, sys

importtid, re

importer RPi. GPIO som g

A = 12

B = 16

g.setmode (g. BCM)

g. oppsett (A, g. OUT)

g. oppsett (B, g. OUT)

##

def signal_handler (sig, frame):

print ('Du trykket Ctrl+C!')

g. utgang (A, usann)

g. utgang (B, usann)

f.close ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

mens det er sant:

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 (koding = 'UTF-8', feil = 'streng')

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

# trekke ut gjeldende CPU -temperatur

current_temp = float (CPU_temp [0])

hvis current_temp> 30 og current_temp <40:

# temperatur lav A = 0, B = 0

g. utgang (A, usann)

g. utgang (B, usann)

tid. sover (5)

elif current_temp> = 40 og current_temp <45:

# temperaturmedium A = 0, B = 1

g. utgang (A, usann)

g. output (B, True)

tid. sover (5)

elif current_temp> = 45 og current_temp <50:

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

g. output (A, True)

g. utgang (B, usann)

tid. sover (5)

elif current_temp> = 50:

# CPU -kjøling kreves høy 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 ()

Hovedfunksjonen til python -programmet er som nedenfor.

- Innstiller først GPIO 12, 16 som utgangsport

- Definere Ctrl+C avbryterbehandler for å lukke loggfil og slå av GPIO 12, 16

- Når du går inn i uendelig sløyfe, åpner du loggfilen som vedleggsmodus

- Les CPU -temperaturen ved å utføre kommandoen "/opt/vc/bin/vcgencmd measure_temp"

- Når temperaturen er i området 30 ~ 39, send deretter ut 00 for å slå på grønn LED

- Når temperaturen er i området 40 ~ 44, send deretter ut 01 for å slå på gul LED

- Når temperaturen er i området 45 ~ 49, send deretter ut 10 for å slå på rød LED

- Når temperaturen er over 50, send deretter ut 11 for å få rød LED til å blinke

- Skriv tidsstempel og temperaturdata til loggfil

Trinn 10: INDIKATOR -drift

INDIKATOR Drift
INDIKATOR Drift

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

Du trenger ikke å skrive inn skallkommando for å kontrollere gjeldende temperatur.

Etter å ha samlet data i loggfilen og gjengitt tekstdata til graf ved hjelp av Excel, vises resultatet på bildet ovenfor.

Når du bruker høye belastninger (kjører to Midori -nettlesere og spiller Youtube -video), er CPU -temperaturen en økning på opptil 57,9C.

Trinn 11: Alternativ produksjon (ved hjelp av NPN -transistor) og videre utvikling

Alternativ produksjon (ved bruk av NPN -transistor) og videreutvikling
Alternativ produksjon (ved bruk av NPN -transistor) og videreutvikling

Dette er et tidligere INDIKATORprosjekteksempel som bruker NPN -transistorer (2N3904 og BD139).

Som du kan se, er det nødvendig med en annen IC (74HC04, Quad inverter) for å drive NPN -transistor, ettersom HIGH -nivåspenning bør påføres basen på NPN for å slå på transistoren.

Som et sammendrag, bruker du NPN -transistor til unødvendig kompleksitet for å lage INDIKATOR -krets.

For videre utvikling av dette prosjektet vil jeg legge til kjølevifte som vist på bildet ovenfor for å gjøre INDICATOR -kretsen mer nyttig.

Anbefalt: