Innehållsförteckning:

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

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

Video: Raspberry Pi CPU -temperaturindikator: 11 steg (med bilder)
Video: Большой тест мини-ПК 2019 2024, Juli
Anonim
Raspberry Pi CPU -temperaturindikator
Raspberry Pi CPU -temperaturindikator

Tidigare hade jag introducerat enkel hallon pi (nedan kallad RPI) driftstatusindikator krets.

Den här gången ska jag förklara en mer användbar indikatorkrets för RPI som körs utan huvud (utan bildskärm).

Kretsen ovan visar CPU -temperaturen i 4 olika nivåer såsom:

- Grön lysdiod tänds när CPU -temperaturen ligger inom 30 ~ 39 grader

- Gul lysdiod indikerar att temperaturen har ökat inom intervallet 40 till 45 grader

- Den tredje röda lysdioden visar att CPU: n blir lite varm genom att nå 46 ~ 49 grader

- En annan röd lysdiod blinkar när temperaturen överstiger mer än 50 grader

Ovanstående CPU -temperaturintervall är mitt personliga designkoncept (Andra temperaturområden kan konfigureras genom att ändra testförhållanden för pythonprogram som styr denna krets).

Genom att använda denna krets utför du inte nödvändigtvis kommandot "vcgencmd measure_temp" ofta på konsolterminalen.

Denna krets ska informera aktuell CPU -temperatur kontinuerligt och bekvämt.

Steg 1: Förbereda scheman

Förbereder scheman
Förbereder scheman

Även om du kan styra fyra lysdioder direkt genom att bara använda pythonkoder, laddar programmets styrlogik RPI och som ett resultat kommer CPU -temperaturen att öka mer eftersom du borde köra lite komplex pythonkod kontinuerligt.

Därför minimerar jag pythonkodens komplexitet så enkelt som möjligt och laddar bort LED-styrlogik till extern hårdvarukrets.

CPU -temperaturindikatorkretsen (nedan kallad INICATOR) består av följande huvuddelar.

-Två optokopplare är anslutna till RPI GPIO-stift för att få temperaturnivådata som 00-> LÅG, 01-> Medium, 10-> Hög, 11-> Behöver kylning.

-74LS139 (eller 74HC139, 2-till-4 dekoder och de-multiplexer) styrutgångar (Y0, Y1, Y2, Y3) enligt ingångarna (A, B)

- När temperaturen ligger inom 30 ~ 39 grader skickar pytonkoden 00 ut till GPIO -stiften. Därför får 74LS139 inmatningsdata 00 (A-> 0, B-> 0)

- När 00 matas in blir Y0 -utgången LÅG. (Se sanningstabellen för 74LS139)

- När Y0 -utgången blir LÅG aktiverar den 2N3906 PNP -transistorn och som ett resultat tänds den gröna lysdioden

- På samma sätt ska Y1 (01 -> CPU -temperaturmedium) tända gul LED och så vidare

- När Y3 blir LÅG aktiverar DB140 aktiverande NE555 LED -blinkande krets (detta är en vanlig 555 IC -baserad LED -blinkare) som är belastning på BD140 PNP -transistor

Den viktigaste komponenten i denna krets är 74LS139 som avkodar 2 siffror ingång till 4 olika enkla utgångar som visas i sanningstabellen nedan.

Ingång | Produktion

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

När 74LS139 -utgången blir LÅG kan transistorn av PNP -typ göra den övergripande kretsen enkel eftersom PNP -transistorn slås på när basterminalen blir LÅG. (Jag visar NPN -versionen i slutet av den här historien)

Eftersom 100K potentiometer ingår i NE555 LED -blinkerkretsen, kan den röda LED -ON/OFF -tiden justeras fritt efter behoven.

Steg 2: Gör PCB -ritning

Gör PCB -ritning
Gör PCB -ritning

Som förklaringen för INDIKATORENS driftschema, låt oss börja göra kretsen.

Innan du lödar något på universalbräda är det bra att förbereda PCB -ritningen som visas ovan för att minimera eventuella misstag.

Ritningen görs med hjälp av power-point för att lokalisera varje del på universalbordet och göra kabelmönster mellan delar med ledningar.

Eftersom IC och transistor pin-out-bilder samlokaliseras tillsammans med PCB-kopplingsmönster kan lödning utföras med hjälp av denna ritning.

Steg 3: Lödning

Lödning
Lödning

Även om original PCB -ritning görs utan att använda enstaka trådar för att ansluta komponenter på PCB, löd jag lite annorlunda.

Genom att använda en ledare av ledningar (inte tenntråd) försöker jag minska universell PCB -storlek som innehåller INDIKATOR -krets.

Men som du kan se på lödsidan av PCB använder jag tenntråd också enligt mönstren som visas på PCB -ritningen.

När varje komponent är ansluten enligt den ursprungliga konstruktionen av PCB -ritning, kommer lödning av färdig PCB -kort inklusive INDIKATOR -krets att fungera korrekt.

Steg 4: Testa förberedelser

Testa förberedelser
Testa förberedelser

Innan till RPI -anslutning kräver den färdiga kretsen testning.

Eftersom eventuella lödningsfel kan existera, används DC -leverantör för att förhindra skador när kortslutningar eller fel ledningar uppstår.

För test av INDIKATOR är ytterligare två strömkablar anslutna till kretsens 5V strömförsörjningskontakt.

Steg 5: Testning (CPU -temperaturen är medellång)

Testning (CPU -temperaturen är medelhög)
Testning (CPU -temperaturen är medelhög)

När ingen 5V -ingång tillämpas, avkodar 74LS139 ingång och aktiverar utgång Y0 som LÅG (grön lysdiod tänd).

Men 5V tillämpas på ingång A, utgång Y1 från 74LS139 aktiveras (LÅG).

Därför tänds den gula lysdioden som visas på bilden ovan.

Steg 6: Testning (CPU behöver kylnivå)

Testning (CPU behöver kylnivå)
Testning (CPU behöver kylnivå)

När 5V använde båda ingångarna (A och B) på 74LS139, blinkar den fjärde röda lysdioden.

Blinkande hastighet kan ändras genom att justera 100K VR enligt bilden ovan.

När testningen är klar kan två Molex 3 -poliga honkablar tas bort.

Steg 7: Strömförsörjning till INDIKATORskrets

Strömförsörjning till INDIKATORskrets
Strömförsörjning till INDIKATORskrets

För att driva INDICATOR-kretsen använder jag en vanlig telefonladdare som matar ut 5V och USB typ-B-adapter som visas på bilden ovan.

För att undvika problem med RPI genom att ansluta 3.3V GPIO och 5V driven INDICATOR -krets är signalgränssnittet och strömförsörjningen totalt isolerade.

Steg 8: RPI -ledningar

RPI -ledningar
RPI -ledningar

För gränssnitt mellan INDIKATOR -krets och RPI bör två GPIO -stift tilldelas tillsammans med två jordstift.

Det finns inget specifikt krav för att välja GPIO -stift.

Du kan använda alla GPIO -stift för att ansluta INDIKATOR.

Men trådbundna stift bör betecknas som ingångar till 74LS139 (t.ex. A, B) i pythonprogram.

Steg 9: Python -program

Python -program
Python -program

När kretsen är klar krävs pythonprogram för att använda INDIKATOR -funktionen.

Vänligen se flödesschemat ovan för mer detaljerad information om programlogik.

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

importera delprocess, signal, sys

importtid, re

importera RPi. GPIO som g

A = 12

B = 16

g.setmode (g. BCM)

g. inställning (A, g. OUT)

g. inställning (B, g. OUT)

##

def signal_handler (sig, frame):

print ('Du tryckte på Ctrl+C!')

g. utmatning (A, falsk)

g. utmatning (B, falsk)

f.close ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

medan det är 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 (kodning = 'UTF-8', fel = 'strikt')

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

# extrahera aktuell CPU -temperatur

current_temp = float (CPU_temp [0])

om aktuell_temp> 30 och aktuell_temp <40:

# temperatur låg A = 0, B = 0

g. utmatning (A, falsk)

g. utmatning (B, falsk)

tid. sover (5)

elif current_temp> = 40 och current_temp <45:

# temperaturmedium A = 0, B = 1

g. utmatning (A, falsk)

g. utmatning (B, sant)

tid. sover (5)

elif current_temp> = 45 och current_temp <50:

# temperatur hög A = 1, B = 0

g. utmatning (A, sant)

g. utmatning (B, falsk)

tid. sover (5)

elif current_temp> = 50:

# CPU -kylning krävs hög A = 1, B = 1

g. utmatning (A, sant)

g. utmatning (B, sant)

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

Huvudfunktionen för pythonprogrammet är som nedan.

- För det första ställer du in GPIO 12, 16 som utgångsport

- Definiera Ctrl+C avbrottshanterare för att stänga loggfil och stänga av GPIO 12, 16

- När du går in i den oändliga slingan, öppna loggfilen som tilläggsläge

- Läs CPU -temperaturen genom att utföra kommandot "/opt/vc/bin/vcgencmd measure_temp"

- När temperaturen ligger inom intervallet 30 ~ 39, mata sedan ut 00 för att slå på grön LED

- När temperaturen ligger inom intervallet 40 ~ 44, släpp sedan ut 01 för att tända den gula lysdioden

- När temperaturen ligger inom intervallet 45 ~ 49, mata sedan ut 10 för att tända den röda lysdioden

- När temperaturen är mer än 50, mata ut 11 så att den röda lysdioden blinkar

- Skriv tidsstämpel och temperaturdata till loggfilen

Steg 10: INDIKATOR -drift

INDIKATOR Drift
INDIKATOR Drift

När allt är OK kan du se att varje lysdiod tänds eller blinkar enligt CPU -temperaturen.

Du behöver inte ange skalkommando för att kontrollera aktuell temperatur.

Efter att ha samlat in data i loggfilen och gjort textdata till diagram med hjälp av Excel, visas resultatet ovan.

Vid hög belastning (körning av två Midori -webbläsare och uppspelning av Youtube -video) stiger CPU -temperaturen upp till 57,9C.

Steg 11: Alternativ tillverkning (med NPN -transistor) och vidareutveckling

Alternativ tillverkning (med NPN -transistor) och vidareutveckling
Alternativ tillverkning (med NPN -transistor) och vidareutveckling

Detta är ett tidigare exempel på INDICATOR -projekt som använder NPN -transistorer (2N3904 och BD139).

Som du kan se är ytterligare en IC (74HC04, Quad inverterare) nödvändig för att driva NPN -transistorn eftersom HIGH -nivåspänning bör appliceras på basen av NPN för att slå på transistorn.

Som en sammanfattning, med hjälp av NPN -transistor lägger du till onödig komplexitet för att göra INDICATOR -krets.

För vidare utveckling av detta projekt lägger jag till kylfläkt som visas på bilden ovan för att göra INDICATOR -kretsen mer användbar.

Rekommenderad: