Cuprins:

Indicator de temperatură CPU Raspberry Pi: 11 pași (cu imagini)
Indicator de temperatură CPU Raspberry Pi: 11 pași (cu imagini)

Video: Indicator de temperatură CPU Raspberry Pi: 11 pași (cu imagini)

Video: Indicator de temperatură CPU Raspberry Pi: 11 pași (cu imagini)
Video: replacing the thermal paste in a 15 year old GPU #shorts 2024, Iulie
Anonim
Indicator de temperatură CPU Raspberry Pi
Indicator de temperatură CPU Raspberry Pi

Anterior am introdus circuitul indicatorului de stare operațională simplu raspberry pi (în continuare RPI).

De data aceasta, voi explica câteva circuite de indicatori mai utile pentru RPI care rulează fără cap (fără monitor).

Circuitul de mai sus arată temperatura procesorului în 4 niveluri diferite, cum ar fi:

- LED-ul verde este aprins atunci când temperatura procesorului este de 30 ~ 39 de grade

- LED-ul galben indică creșterea temperaturii între 40 și 45 de grade

- Al treilea LED roșu arată că CPU devine puțin fierbinte atingând 46 ~ 49 de grade

- Un alt LED roșu va clipi atunci când temperatura depășește peste 50 de grade

Intervalele de temperatură ale procesorului de mai sus sunt conceptul meu personal de proiectare (alte intervale de temperatură pot fi configurate prin schimbarea condițiilor de testare ale programului python care controlează acest circuit).

Prin utilizarea acestui circuit, nu executați neapărat comanda „vcgencmd measure_temp” frecvent pe terminalul consolei.

Acest circuit trebuie să informeze continuu și convenabil temperatura curentă a procesorului.

Pasul 1: Pregătirea schemelor

Pregătirea schemelor
Pregătirea schemelor

Deși puteți controla direct 4 LED-uri utilizând numai coduri python, logica de control a programului va încărca RPI și, ca rezultat, temperatura procesorului va crește mai mult, deoarece ar trebui să rulați un cod Python puțin complex continuu.

Prin urmare, minimizez complexitatea codului python cât mai simplu posibil și descărc logica de control LED către circuitul hardware extern.

Circuitul indicatorului de temperatură al procesorului (în continuare INICATOR) este format din următoarele părți majore.

- Două opto-cuplaje sunt conectate la pinii RPI GPIO pentru a obține date de nivel de temperatură, cum ar fi 00-> LOW, 01-> Medium, 10-> High, 11-> Need cooling.

- 74LS139 (sau 74HC139, decodor 2-la-4 și de-multiplexor) controlează ieșirile (Y0, Y1, Y2, Y3) în funcție de intrări (A, B)

- Când temperatura este cuprinsă între 30 ~ 39 de grade, codul python iese 00 la pinii GPIO. Prin urmare, 74LS139 obține date de intrare 00 (A-> 0, B-> 0)

- Pe măsură ce se introduce 00, ieșirea Y0 devine LOW. (Vă rugăm să consultați tabelul de adevăr al 74LS139)

- Când ieșirea Y0 devine LOW, activează tranzistorul PNP 2N3906 și, ca urmare, LED-ul verde este aprins

- La fel, Y1 (01 -> mediu de temperatură CPU) va porni LED-ul galben și așa mai departe

- Când Y3 devine LOW, DB140 activează circuitul intermitent cu LED-uri NE555 (acesta este un clipitor comun cu LED-uri 555 IC) care este încărcarea tranzistorului BD140 PNP

Cea mai importantă componentă a acestui circuit este 74LS139, care decodifică 2 cifre de intrare în 4 ieșiri diferite, așa cum se arată în tabelul de adevăr de mai jos.

Intrare | Ieșire

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

Pe măsură ce ieșirea 74LS139 devine LOW, tranzistorul de tip PNP poate simplifica circuitul general, deoarece tranzistorul PNP este pornit atunci când terminalul de bază devine LOW. (Voi arăta versiunea NPN la sfârșitul acestei povești)

Deoarece potențiometrul de 100K este inclus în circuitul intermitent cu LED-uri NE555, timpul de pornire / oprire a LED-ului roșu poate fi reglat liber în funcție de necesități.

Pasul 2: Realizarea desenului PCB

Realizarea desenului PCB
Realizarea desenului PCB

Pe măsură ce se explică schema de funcționare a INDICATORULUI, să începem să realizăm circuitul.

Înainte de a lipi ceva pe placa universală, pregătirea desenului PCB prezentat mai sus este utilă pentru a minimiza orice greșeli.

Desenul este realizat folosind power-point pentru a localiza fiecare parte pe placa universală și realizând modele de cablare între piese cu fire.

Deoarece imaginile cu pin și cu tranzistor sunt amplasate împreună cu modelul de cablare PCB, lipirea poate fi efectuată folosind acest desen.

Pasul 3: lipire

Lipire
Lipire

Deși desenul original al PCB-ului este realizat fără a utiliza fire simple pentru a conecta componentele de pe PCB, lipesc oarecum diferit.

Folosind un singur conductor de fire (nu sârmă de tablă), încerc să reduc dimensiunea PCB-ului universal care conține circuitul INDICATOR.

Dar, după cum puteți vedea pe partea de lipit a PCB, folosesc sârmă de tablă, de asemenea, conform modelelor prezentate în desenul PCB.

Când fiecare componentă este conectată conform designului original al desenului PCB, lipirea plăcii PCB completate, inclusiv circuitul INDICATOR, va funcționa corect.

Pasul 4: Pregătirea testării

Pregătirea testării
Pregătirea testării

Înainte de conexiunea RPI, circuitul terminat necesită testare.

Deoarece pot exista greșeli de lipire, furnizorul de curent continuu este utilizat pentru prevenirea daunelor atunci când apar scurte sau cabluri greșite.

Pentru testarea INDICATORULUI, două cabluri suplimentare de alimentare sunt conectate la conectorul de alimentare de 5V al circuitului.

Pasul 5: Testare (temperatura CPU este la nivel mediu)

Testare (temperatura CPU este de nivel mediu)
Testare (temperatura CPU este de nivel mediu)

Atunci când nu este aplicată nicio intrare de 5V, atunci intrarea de decodare 74LS139 și activarea ieșirii Y0 ca LOW (LED verde aprins).

Dar 5V s-au aplicat la intrarea A, ieșirea Y1 din 74LS139 activându-se (LOW).

Prin urmare, LED-ul galben este aprins așa cum se arată în imaginea de mai sus.

Pasul 6: Testare (CPU are nevoie de nivel de răcire)

Testare (CPU are nevoie de nivel de răcire)
Testare (CPU are nevoie de nivel de răcire)

Când 5V au aplicat ambele intrări (A și B) ale 74LS139, al 4-lea LED roșu clipește.

Rata de clipire poate fi modificată ajustând 100K VR așa cum se arată în imaginea de mai sus.

Când testarea este finalizată, două cabluri femele Molex cu 3 pini pot fi îndepărtate.

Pasul 7: Alimentare la circuitul INDICATOR

Sursa de alimentare a circuitului INDICATOR
Sursa de alimentare a circuitului INDICATOR

Pentru alimentarea circuitului INDICATOR, folosesc un încărcător comun pentru telefonul manual, cu ieșire de 5V și adaptor USB de tip B, așa cum se arată în imaginea de mai sus.

Pentru a evita problemele cu RPI prin conectarea circuitului INDICATOR alimentat de 3,3V GPIO și 5V, interfața de semnal și sursa de alimentare sunt complet izolate.

Pasul 8: Cablare RPI

Cablare RPI
Cablare RPI

Pentru interfața circuitului INDICATOR cu RPI, ar trebui dedicați doi pini GPIO împreună cu doi pini de masă.

Nu există o cerință specifică pentru alegerea pinilor GPIO.

Puteți utiliza orice pini GPIO pentru conectarea INDICATORULUI.

Dar pinii cu fir ar trebui să fie desemnați ca intrări la 74LS139 (de exemplu, A, B) în programul python.

Pasul 9: Program Python

Programul Python
Programul Python

Pe măsură ce circuitul este finalizat, este necesară realizarea unui program python pentru a utiliza funcția INDICATOR.

Vă rugăm să consultați diagrama de mai sus pentru mai multe detalii despre logica programului.

# - * - codare: utf-8 - * -

import subproces, semnal, sistem

timp de import, re

import RPi. GPIO ca 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 („Ați apăsat Ctrl + C!”)

g. ieșire (A, fals)

g. ieșire (B, fals)

f.close ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

în timp ce este adevărat:

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 (codificare = 'UTF-8', erori = 'strict')

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

# extragerea temperaturii curente a procesorului

current_temp = float (CPU_temp [0])

dacă current_temp> 30 și current_temp <40:

# temperatura scăzută A = 0, B = 0

g. ieșire (A, fals)

g. ieșire (B, fals)

time.sleep (5)

elif current_temp> = 40 și current_temp <45:

# mediu de temperatură A = 0, B = 1

g. ieșire (A, fals)

g. ieșire (B, adevărat)

time.sleep (5)

elif current_temp> = 45 și current_temp <50:

# temperatura ridicată A = 1, B = 0

g. ieșire (A, Adevărat)

g. ieșire (B, fals)

time.sleep (5)

elif current_temp> = 50:

# Răcirea procesorului este necesară A = 1, B = 1

g. ieșire (A, Adevărat)

g. ieșire (B, adevărat)

time.sleep (5)

ora_curenta = ora. ora ()

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

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

f.close ()

Funcția principală a programului python este ca mai jos.

- Mai întâi setarea GPIO 12, 16 ca port de ieșire

- Definirea controlerului de întreruperi Ctrl + C pentru închiderea fișierului jurnal și dezactivarea GPIO 12, 16

- Când intrați în buclă infinită, deschideți fișierul jurnal ca mod de adăugare

- Citiți temperatura procesorului executând comanda „/ opt / vc / bin / vcgencmd measure_temp”

- Când temperatura este în intervalul 30 ~ 39, ieșire 00 pentru a porni LED-ul verde

- Când temperatura este în intervalul 40 ~ 44, ieșire 01 pentru a porni LED-ul galben

- Când temperatura este în intervalul 45 ~ 49, ieșiți 10 pentru a porni LED-ul roșu

- Când temperatura este mai mare de 50, ieșire 11 pentru a face LED-ul roșu să clipească

- Scrieți ștampila și datele de temperatură în fișierul jurnal

Pasul 10: Funcționare INDICATOR

FUNCȚIONARE INDICATOR
FUNCȚIONARE INDICATOR

Când totul este în regulă, puteți vedea că fiecare LED este aprins sau clipește în funcție de temperatura procesorului.

Nu trebuie să introduceți comanda shell pentru a verifica temperatura curentă.

După colectarea datelor în fișierul jurnal și redarea datelor text în grafic utilizând Excel, rezultatul este afișat în imaginea de mai sus.

Când aplicați încărcări mari (Rularea a două browser-uri Midori și redarea videoclipurilor de pe YouTube), temperatura procesorului crește până la 57,9C.

Pasul 11: Realizarea alternativă (utilizarea tranzistorului NPN) și dezvoltarea ulterioară

Realizarea alternativă (utilizarea tranzistorului NPN) și dezvoltarea ulterioară
Realizarea alternativă (utilizarea tranzistorului NPN) și dezvoltarea ulterioară

Acesta este exemplul anterior de proiect INDICATOR care utilizează tranzistoare NPN (2N3904 și BD139).

După cum puteți vedea, încă un IC (74HC04, invertoare Quad) este necesar pentru a acționa tranzistorul NPN, deoarece tensiunea de nivel înalt ar trebui aplicată la baza NPN pentru a porni tranzistorul.

Ca rezumat, utilizarea tranzistorului NPN adaugă o complexitate inutilă pentru a face circuitul INDICATOR.

Pentru dezvoltarea în continuare a acestui proiect, voi adăuga un ventilator de răcire așa cum se arată în imaginea de mai sus pentru a face circuitul INDICATOR mai util.

Recomandat: