Turinys:

„Raspberry Pi“procesoriaus temperatūros indikatorius: 11 žingsnių (su paveikslėliais)
„Raspberry Pi“procesoriaus temperatūros indikatorius: 11 žingsnių (su paveikslėliais)

Video: „Raspberry Pi“procesoriaus temperatūros indikatorius: 11 žingsnių (su paveikslėliais)

Video: „Raspberry Pi“procesoriaus temperatūros indikatorius: 11 žingsnių (su paveikslėliais)
Video: Объяснение прошивки Marlin 2.0.x 2024, Liepa
Anonim
„Raspberry Pi“procesoriaus temperatūros indikatorius
„Raspberry Pi“procesoriaus temperatūros indikatorius

Anksčiau buvau pristatęs paprastą aviečių pi (toliau RPI) veikimo būsenos indikatoriaus grandinę.

Šį kartą paaiškinsiu naudingesnę RPI indikatoriaus grandinę, veikiančią be galvos (be monitoriaus).

Aukščiau pateikta grandinė rodo CPU temperatūrą į 4 skirtingus lygius, tokius kaip:

- Žalias šviesos diodas įsijungia, kai procesoriaus temperatūra yra 30–39 laipsnių

- Geltonas šviesos diodas rodo, kad temperatūra pakyla nuo 40 iki 45 laipsnių

- Trečiasis raudonas šviesos diodas rodo, kad procesorius šiek tiek įkaista, pasiekdamas 46–49 laipsnius

- Kitas raudonas šviesos diodas mirksi, kai temperatūra viršija 50 laipsnių

Aukščiau nurodyti procesoriaus temperatūros diapazonai yra mano asmeninė dizaino koncepcija (kitus temperatūros diapazonus galima sukonfigūruoti keičiant šią grandinę valdančių „python“programos bandymo sąlygas).

Naudodamiesi šia grandine, nebūtinai dažnai vykdote komandą „vcgencmd intézkedés_temp“konsolės terminale.

Ši grandinė nuolat ir patogiai informuoja esamą procesoriaus temperatūrą.

1 žingsnis: schemų paruošimas

Schemų paruošimas
Schemų paruošimas

Nors galite tiesiogiai valdyti 4 šviesos diodus naudodami tik „python“kodus, programos valdymo logika įkelia RPI, todėl CPU temperatūra bus labiau pakelta, nes turėtumėte nuolat paleisti šiek tiek sudėtingą „Python“kodą.

Todėl aš kuo labiau sumažinu python kodo sudėtingumą ir išjungiu LED valdymo logiką į išorinę aparatūros grandinę.

CPU temperatūros indikatoriaus (toliau INICATOR) grandinę sudaro šios pagrindinės dalys.

-Prie RPI GPIO kaiščių yra prijungtos dvi opto jungtys, kad būtų gauti temperatūros lygio duomenys, tokie kaip 00-> LOW, 01-> Medium, 10-> High, 11-> Reikia aušinimo.

-74LS139 (arba 74HC139, nuo 2 iki 4 dekoderis ir demultiplekseris) valdymo išėjimai (Y0, Y1, Y2, Y3) pagal įėjimus (A, B)

- Kai temperatūra yra 30–39 laipsnių, python kodas išveskite 00 į GPIO kaiščius. Todėl 74LS139 gauna įvesties duomenis 00 (A-> 0, B-> 0)

- Įvedus 00, Y0 išvestis tampa LOW. (Žr. 74LS139 tiesos lentelę)

- Kai Y0 išėjimas tampa LOW, jis suaktyvina 2N3906 PNP tranzistorių ir dėl to įjungiamas žalias šviesos diodas

- Taip pat Y1 (01 -> procesoriaus temperatūros terpė) turi įjungti geltoną šviesos diodą ir pan

- Kai Y3 tampa žemas, DB140 suaktyvina NE555 LED mirksėjimo grandinę (tai yra įprasta 555 IC pagrįsta LED mirksėjimo lemputė), kuri yra BD140 PNP tranzistoriaus apkrova

Svarbiausias šios grandinės komponentas yra 74LS139, kuris dekoduoja 2 skaitmenų įvestį į 4 skirtingus atskirus išėjimus, kaip parodyta žemiau esančioje tiesos lentelėje.

Įvestis | Išvestis

G (Įjungti) | 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 |

Kadangi 74LS139 išėjimas tampa LOW, PNP tipo tranzistorius gali supaprastinti bendrą grandinę, nes PNP tranzistorius įjungiamas, kai bazinis terminalas tampa LOW. (Šios istorijos pabaigoje parodysiu NPN versiją)

Kadangi 100K potenciometras yra įtrauktas į NE555 LED mirksėjimo grandinę, raudonos šviesos diodų įjungimo/išjungimo laiką galima laisvai reguliuoti pagal poreikius.

2 žingsnis: PCB piešimo padarymas

PCB brėžinys
PCB brėžinys

Kaip paaiškinta indikatoriaus veikimo schema, pradėkime kurti grandinę.

Prieš lituodami kažką ant universalios plokštės, paruoškite aukščiau pateiktą PCB brėžinį, kad sumažintumėte klaidas.

Brėžinys sudarytas naudojant „power-point“, kad būtų galima rasti kiekvieną universalios plokštės dalį ir sudaryti laidų schemas tarp dalių su laidais.

Kadangi IC ir tranzistorių kištukiniai vaizdai yra kartu su PCB laidų schema, litavimą galima atlikti naudojant šį brėžinį.

3 žingsnis: litavimas

Litavimas
Litavimas

Nors originalus PCB brėžinys sudarytas nenaudojant atskirų laidų PCB komponentams prijungti, aš lituoju šiek tiek kitaip.

Naudodamas vieną laidų laidininką (ne alavo vielą), aš stengiuosi sumažinti universalų PCB dydį, kuriame yra indikatoriaus grandinė.

Bet kaip matote PCB litavimo pusėje, aš naudoju alavo vielą taip pat pagal schemas, pavaizduotas PCB brėžinyje.

Kai kiekvienas komponentas prijungiamas pagal pradinę PCB brėžinio schemą, pilnai suvirinta PCB plokštė, įskaitant indikatoriaus grandinę, lituos tinkamai.

4 žingsnis: bandymo paruošimas

Pasirengimas bandymams
Pasirengimas bandymams

Prieš prijungiant RPI, baigtą grandinę reikia išbandyti.

Kadangi gali būti bet kokių litavimo klaidų, nuolatinės srovės maitinimo šaltinis naudojamas apsaugoti nuo pažeidimų, kai įvyksta trumpas jungimas ar netinkama elektros instaliacija.

INDIKATORIUS tikrinimui prie grandinės 5 V maitinimo jungties prijungiami du papildomi maitinimo kabeliai.

5 veiksmas: bandymas (procesoriaus temperatūra yra vidutinio lygio)

Testavimas (procesoriaus temperatūra yra vidutinio lygio)
Testavimas (procesoriaus temperatūra yra vidutinio lygio)

Kai nenaudojamas 5V įėjimas, 74LS139 dekodavimo įvestis ir Y0 aktyvavimas kaip LOW (žalias šviesos diodas įjungtas).

Bet 5V buvo taikomas įėjimui A, 74LS139 išėjimo Y1 išjungimui (LOW).

Todėl geltonas šviesos diodas įsijungia, kaip parodyta aukščiau esančiame paveikslėlyje.

6 veiksmas: bandymas (procesoriui reikia aušinimo lygio)

Testavimas (procesoriui reikia aušinimo lygio)
Testavimas (procesoriui reikia aušinimo lygio)

Kai 5V įvedė abu 74LS139 įėjimus (A ir B), mirksi 4 -asis raudonas šviesos diodas.

Mirksėjimo dažnį galima pakeisti sureguliavus 100K VR, kaip parodyta aukščiau esančiame paveikslėlyje.

Baigus bandymą, galima nuimti du „Molex“3 kontaktų kabelius.

7 žingsnis: Maitinimas į indikatoriaus grandinę

Maitinimo šaltinis į indikatoriaus grandinę
Maitinimo šaltinis į indikatoriaus grandinę

Maitindamas indikatoriaus grandinę, naudoju įprastą rankinio telefono įkroviklį, išvestį 5V, ir B tipo USB adapterį, kaip parodyta aukščiau esančiame paveikslėlyje.

Siekiant išvengti problemų su RPI prijungus 3.3V GPIO ir 5V maitinamą INDICATOR grandinę, signalo sąsaja ir maitinimo šaltinis yra visiškai izoliuoti.

8 žingsnis: RPI laidai

RPI laidai
RPI laidai

Norint sujungti indikatoriaus grandinę su RPI, du GPIO kaiščiai turi būti skirti kartu su dviem įžeminimo kaiščiais.

Nėra jokių specialių reikalavimų renkantis GPIO kaiščius.

INDIKATORIUI prijungti galite naudoti bet kokius GPIO kaiščius.

Tačiau laidiniai kaiščiai python programoje turėtų būti nurodyti kaip 74LS139 (pvz., A, B) įėjimai.

9 veiksmas: „Python“programa

Python programa
Python programa

Kai grandinė baigta, norint sukurti funkciją „INDICATOR“, reikia sukurti „python“programą.

Daugiau informacijos apie programos logiką rasite aukščiau esančioje schemoje.

#-*-kodavimas: utf-8-*-

importuoti papildomą procesą, signalą, sistemą

importo laikas, pakart

importuoti RPi. GPIO kaip g

A = 12

B = 16

g.setmode (g. BCM)

g. sąranka (A, g. OUT)

g. nustatymas (B, g. OUT)

##

def signal_handler (sig, frame):

spausdinti ('Paspaudėte Ctrl+C!')

g. išvestis (A, klaidinga)

g. išvestis (B, klaidinga)

f. uždaryti ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

nors tiesa:

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

temp_str = subprocess.check_output ('/opt/vc/bin/vcgencmd meet_temp', apvalkalas = tiesa)

temp_str = temp_str.decode (kodavimas = 'UTF-8', klaidos = 'griežta')

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

# išgaunama dabartinė procesoriaus temperatūra

current_temp = plūdė (CPU_temp [0])

jei dabartinis_tempas> 30 ir dabartinis_tempas <40:

# žema temperatūra A = 0, B = 0

g. išvestis (A, klaidinga)

g. išvestis (B, klaidinga)

laikas miegoti (5)

elif current_temp> = 40 ir current_temp <45:

# temperatūros terpė A = 0, B = 1

g. išvestis (A, klaidinga)

g. išvestis (B, tiesa)

laikas miegoti (5)

elif current_temp> = 45 ir current_temp <50:

# aukšta temperatūra A = 1, B = 0

g. išvestis (A, tiesa)

g. išvestis (B, klaidinga)

laikas miegoti (5)

elif current_temp> = 50:

# CPU aušinimas reikalingas aukštas A = 1, B = 1

g. išvestis (A, tiesa)

g. išvestis (B, tiesa)

laikas miegoti (5)

current_time = time.time ()

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

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

f. uždaryti ()

Pagrindinė „python“programos funkcija yra tokia, kaip nurodyta žemiau.

- Pirmiausia nustatykite GPIO 12, 16 kaip išvesties prievadą

- Ctrl+C pertraukimo tvarkyklės apibrėžimas, skirtas uždaryti žurnalo failą ir išjungti GPIO 12, 16

- Įėję į begalinę kilpą, atidarykite žurnalo failą kaip pridėjimo režimą

- Skaitykite procesoriaus temperatūrą vykdydami komandą „/opt/vc/bin/vcgencmd meet_temp“

- Kai temperatūra yra 30–39 diapazone, išveskite 00, kad įjungtumėte žalią šviesos diodą

- Kai temperatūra yra 40–44, tada išveskite 01, kad įjungtumėte geltoną šviesos diodą

- Kai temperatūra yra 45–49 diapazone, išveskite 10, kad įjungtumėte raudoną šviesos diodą

- Kai temperatūra aukštesnė nei 50, išveskite 11, kad raudonas šviesos diodas mirksėtų

- Į žurnalo failą įrašykite laiko žymos ir temperatūros duomenis

10 veiksmas: indikatoriaus veikimas

RODIKLIO veikimas
RODIKLIO veikimas

Kai viskas gerai, galite matyti, kad kiekvienas šviesos diodas dega arba mirksi pagal procesoriaus temperatūrą.

Norėdami patikrinti esamą temperatūrą, jums nereikia įvesti apvalkalo komandos.

Surinkus duomenis žurnalo faile ir teksto duomenis paverčiant grafiku naudojant „Excel“, rezultatas parodomas aukščiau esančiame paveikslėlyje.

Taikant dideles apkrovas (naudojant dvi „Midori“naršykles ir leidžiant „Youtube“vaizdo įrašus), procesoriaus temperatūra pakyla iki 57,9 ° C.

11 veiksmas: alternatyvus kūrimas (naudojant NPN tranzistorių) ir tolesnis tobulinimas

Alternatyvus kūrimas (naudojant NPN tranzistorių) ir tolesnis tobulinimas
Alternatyvus kūrimas (naudojant NPN tranzistorių) ir tolesnis tobulinimas

Tai ankstesnis INDICATOR projekto pavyzdys, naudojant NPN tranzistorius (2N3904 ir BD139).

Kaip matote, dar vienas IC (74HC04, keturių dažnių keitikliai) yra būtinas norint valdyti NPN tranzistorių, nes norint įjungti tranzistorių, NPN pagrindui turėtų būti taikoma aukšto lygio įtampa.

Apibendrinant galima pasakyti, kad naudojant NPN tranzistorių, INDIKATORIŲ grandinei sukurti reikia papildomo sudėtingumo.

Norėdami toliau plėtoti šį projektą, pridėsiu aušinimo ventiliatorių, kaip parodyta aukščiau esančiame paveikslėlyje, kad INDICATOR grandinė būtų naudingesnė.

Rekomenduojamas: