Sisällysluettelo:

Raspberry Pi -suorittimen lämpötilan ilmaisin: 11 vaihetta (kuvilla)
Raspberry Pi -suorittimen lämpötilan ilmaisin: 11 vaihetta (kuvilla)

Video: Raspberry Pi -suorittimen lämpötilan ilmaisin: 11 vaihetta (kuvilla)

Video: Raspberry Pi -suorittimen lämpötilan ilmaisin: 11 vaihetta (kuvilla)
Video: Часы с температурой, давлением и влажностью на Raspberry pi 2024, Marraskuu
Anonim
Raspberry Pi -suorittimen lämpötilan ilmaisin
Raspberry Pi -suorittimen lämpötilan ilmaisin

Aiemmin olin ottanut käyttöön yksinkertaisen vadelma pi (jäljempänä RPI) -toimintatilan ilmaisinpiirin.

Tällä kertaa selitän hyödyllisemmän indikaattoripiirin RPI: lle, joka toimii ilman päätä (ilman näyttöä).

Yllä oleva piiri näyttää suorittimen lämpötilan neljälle eri tasolle, kuten:

- Vihreä LED palaa, kun suorittimen lämpötila on 30-39 astetta

- Keltainen LED osoittaa, että lämpötila on noussut 40–45 astetta

- Kolmas punainen LED osoittaa, että suoritin kuumenee hieman saavuttaen 46-49 astetta

- Toinen punainen LED vilkkuu, kun lämpötila on yli 50 astetta

Yllä olevat suorittimen lämpötila -alueet ovat henkilökohtainen suunnittelukonseptini (muut lämpötila -alueet voidaan konfiguroida muuttamalla tätä piiriä ohjaavien python -ohjelman testiolosuhteita).

Käyttämällä tätä piiriä et välttämättä suorita komentoa "vcgencmd intézkedés_temp" usein konsolin päätelaitteessa.

Tämä piiri ilmoittaa jatkuvasti ja kätevästi CPU: n nykyisen lämpötilan.

Vaihe 1: Kaavioiden valmistelu

Kaavioiden valmistelu
Kaavioiden valmistelu

Vaikka voit ohjata neljää LEDiä suoraan käyttämällä vain python -koodeja, ohjelman ohjauslogiikka lataa RPI: n ja sen seurauksena suorittimen lämpötila nousee enemmän, koska sinun pitäisi ajaa hieman monimutkaista python -koodia jatkuvasti.

Siksi minimoin python-koodin monimutkaisuuden mahdollisimman yksinkertaiseksi ja lataan LED-ohjauslogiikan ulkoiselle laitteistopiirille.

Suorittimen lämpötilan ilmaisin (jäljempänä INICATOR) -piiri koostuu seuraavista pääosista.

-Kaksi opto-liitintä on liitetty RPI GPIO-nastoihin, jotta saadaan lämpötilatietoja, kuten 00-> LOW, 01-> Medium, 10-> High, 11-> need need Cooling.

-74LS139 (tai 74HC139, 2-4 dekooderi ja multiplekseri) ohjausulostulot (Y0, Y1, Y2, Y3) tulojen (A, B) mukaan

- Kun lämpötila on 30-39 asteen sisällä, python -koodin lähtö 00 GPIO -nastoille. Siksi 74LS139 saa syöttötietoja 00 (A-> 0, B-> 0)

- Kun 00 on syötetty, Y0 -lähdöstä tulee LOW. (Katso totuustaulukko 74LS139)

- Kun Y0 -lähdöstä tulee LOW, se aktivoi 2N3906 PNP -transistorin ja sen seurauksena vihreä LED -valo syttyy

- Samoin Y1 (01 -> CPU: n lämpötila -aine) sytyttää keltaisen LED -valon ja niin edelleen

- Kun Y3 muuttuu matalaksi, DB140 aktivoi NE555 -LED -vilkkupiirin (tämä on yleinen 555 IC -pohjainen LED -vilkku), joka on BD140 PNP -transistorin kuormitus

Tämän piirin tärkein komponentti on 74LS139, joka purkaa 2 numeron tulon 4 eri yksittäiseen lähtöön alla olevan totuustaulukon mukaisesti.

Syöttö | Lähtö

G (Ota käyttöön) | 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 |

Kun 74LS139 -ulostulo muuttuu matalaksi, PNP -tyyppinen transistori voi tehdä koko piiristä yksinkertaisen, koska PNP -transistori kytketään päälle, kun tukiasemasta tulee LOW. (Näytän NPN -version tämän tarinan lopussa)

Koska 100K -potentiometri sisältyy NE555 -LED -vilkkupiiriin, punaisen LED -ON/OFF -aikaa voidaan säätää vapaasti tarpeiden mukaan.

Vaihe 2: Piirilevyn piirtäminen

Piirilevyjen piirtäminen
Piirilevyjen piirtäminen

INDIKAATTORIN toimintamalli selitetään, aloitetaan piirin tekeminen.

Ennen kuin juotat jotain yleislevylle, yllä olevan piirilevypiirustuksen valmistelu on hyödyllistä virheiden minimoimiseksi.

Piirustus on tehty käyttämällä Power-pointia jokaisen osan paikantamiseen yleislevyllä ja tekemällä johdotuskuvioita johtimien kanssa.

Koska IC- ja transistoripistokuvat sijaitsevat rinnakkain PCB-johdotuskuvion kanssa, juotos voidaan suorittaa tämän piirustuksen avulla.

Vaihe 3: Juotos

Juotos
Juotos

Vaikka alkuperäinen piirilevypiirustus ei ole tehty yhdellä johdolla PCB: n komponenttien liittämiseen, juotan hieman eri tavalla.

Käyttämällä yksittäistä johdinta (ei tinalankaa) yritän pienentää yleispiirilevyn kokoa, joka sisältää INDICATOR -piirin.

Mutta kuten PCB: n juotospuolelta näet, käytän tinalankaa myös piirilevypiirustuksessa esitettyjen kuvien mukaisesti.

Kun jokainen komponentti on kytketty PCB -piirustuksen alkuperäisen mallin mukaisesti, valmiiden juotettujen piirilevyjen, mukaan lukien INDICATOR -piiri, juottaminen toimii oikein.

Vaihe 4: Testauksen valmistelu

Testauksen valmistelu
Testauksen valmistelu

Ennen RPI -liitäntää valmis piiri vaatii testausta.

Koska juotosvirheitä voi esiintyä, tasavirtalähdettä käytetään vaurioiden estämiseen oikosulun tai väärän johdotuksen sattuessa.

INDIKAATTORIN testausta varten virtalähteen 5 V: n virtaliittimeen on kytketty kaksi ylimääräistä virtalähdekaapelia.

Vaihe 5: Testaus (suorittimen lämpötila on keskitaso)

Testaus (suorittimen lämpötila on keskitaso)
Testaus (suorittimen lämpötila on keskitaso)

Kun 5V -tuloa ei syötetä, 74LS139 -dekoodaustulo ja aktivoiva lähtö Y0 ovat LOW (vihreä LED palaa).

Mutta 5V sovellettiin tuloon A, lähtö Y1 74LS139 aktivoi (LOW).

Siksi keltainen LED -valo syttyy yllä olevan kuvan mukaisesti.

Vaihe 6: Testaus (CPU tarvitsee jäähdytystasoa)

Testaus (CPU tarvitsee jäähdytystasoa)
Testaus (CPU tarvitsee jäähdytystasoa)

Kun 5V käytti 74LS139: n molempia tuloja (A ja B), neljäs punainen LED vilkkuu.

Vilkkumisnopeutta voidaan muuttaa säätämällä 100K VR: tä yllä olevan kuvan mukaisesti.

Kun testaus on valmis, kaksi Molex 3 -napaista naaraskaapelia voidaan irrottaa.

Vaihe 7: Virtalähde INDICATOR -piiriin

Virtalähde indikaattoripiiriin
Virtalähde indikaattoripiiriin

Indikaattoripiirin virtalähteenä käytän tavallista käsipuhelinlaturia, joka lähettää 5 V: n ja USB-tyypin B sovittimen yllä olevan kuvan mukaisesti.

Välttääksesi RPI -ongelman liittämällä 3.3V GPIO: n ja 5V: n virtalähteen INDICATOR -piirin, signaaliliitäntä ja virtalähde ovat täysin erillään toisistaan.

Vaihe 8: RPI -johdotus

RPI -johdotus
RPI -johdotus

Indikaattoripiirin liittämiseksi RPI: hen kaksi GPIO -nastaa on omistettava kahden maadoitusliittimen kanssa.

GPIO -nastojen valinnassa ei ole erityisiä vaatimuksia.

INDIKAATTORIN liittämiseen voi käyttää mitä tahansa GPIO -nastaa.

Langalliset nastat on kuitenkin nimettävä 74LS139: n (esim. A, B) tuloiksi python -ohjelmassa.

Vaihe 9: Python -ohjelma

Python -ohjelma
Python -ohjelma

Kun piiri on valmis, indikaattoritoiminnon käyttäminen edellyttää python -ohjelman tekemistä.

Katso yllä olevasta vuokaaviosta lisätietoja ohjelmalogiikasta.

#-*-koodaus: utf-8-*-

tuoda aliprosessi, signaali, sys

tuonti aika, uudelleen

Tuo RPi. GPIO g

A = 12

B = 16

g.setmode (g. BCM)

g.asetukset (A, g. OUT)

g. asetus (B, g. ULOS)

##

def signal_handler (sig, frame):

tulosta ('Painoit Ctrl+C!')

g. lähtö (A, epätosi)

g. lähtö (B, epätosi)

f. sulje ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

vaikka totta:

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

temp_str = aliprosessi.check_output ('/opt/vc/bin/vcgencmd meet_temp', shell = True)

temp_str = temp_str.decode (koodaus = 'UTF-8', virheet = 'tiukka')

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

# poimimalla suorittimen nykyinen lämpötila

current_temp = kelluva (CPU_temp [0])

jos current_temp> 30 ja current_temp <40:

# matala lämpötila A = 0, B = 0

g. lähtö (A, epätosi)

g. lähtö (B, epätosi)

aika.unen (5)

elif current_temp> = 40 ja current_temp <45:

# lämpötila -aine A = 0, B = 1

g. lähtö (A, epätosi)

g. lähtö (B, True)

aika.unen (5)

elif current_temp> = 45 ja current_temp <50:

# korkein lämpötila A = 1, B = 0

g. lähtö (A, True)

g. lähtö (B, epätosi)

aika.unen (5)

elif current_temp> = 50:

# Suorittimen jäähdytys vaaditaan korkea A = 1, B = 1

g. lähtö (A, True)

g. lähtö (B, True)

aika.unen (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. sulje ()

Python -ohjelman päätoiminto on alla.

- Aseta ensin GPIO 12, 16 lähtöportiksi

- Ctrl+C -keskeytyksenkäsittelijän määrittäminen lokitiedoston sulkemiseksi ja GPIO 12, 16: n sammuttamiseksi

- Kun siirryt äärettömään silmukkaan, avaa lokitiedosto liitetilana

- Lue suorittimen lämpötila suorittamalla komento "/opt/vc/bin/vcgencmd intézkedés_temp"

- Kun lämpötila on alueella 30 ~ 39, lähetä vihreä valo sulkemalla lähtö 00

- Kun lämpötila on alueella 40 ~ 44, kytke keltainen LED -valo päälle antamalla 01

- Kun lämpötila on alueella 45 ~ 49, kytke punainen LED -valo päälle antamalla 10

- Kun lämpötila on yli 50, anna 11, jolloin punainen LED vilkkuu

- Kirjoita aikaleima- ja lämpötilatiedot lokitiedostoon

Vaihe 10: MERKKIVALON toiminta

MERKKIVALO Toiminta
MERKKIVALO Toiminta

Kun kaikki on kunnossa, näet, että jokainen LED palaa tai vilkkuu suorittimen lämpötilan mukaan.

Sinun ei tarvitse antaa shell -komentoa tarkistaaksesi nykyisen lämpötilan.

Kun olet kerännyt tiedot lokitiedostoon ja tehnyt tekstitiedoista kaavion Excelillä, tulos näkyy yllä olevassa kuvassa.

Suuria kuormia käytettäessä (kaksi Midori -selainta ja Youtube -videota toistettaessa) suorittimen lämpötila nousee jopa 57,9 asteeseen.

Vaihe 11: Vaihtoehtoinen valmistus (NPN -transistorin käyttäminen) ja edelleen kehittäminen

Vaihtoehtoinen valmistus (NPN -transistorin käyttäminen) ja edelleen kehittäminen
Vaihtoehtoinen valmistus (NPN -transistorin käyttäminen) ja edelleen kehittäminen

Tämä on edellinen esimerkki INDICATOR -projektista, jossa hyödynnetään NPN -transistoreita (2N3904 ja BD139).

Kuten näette, vielä yksi IC (74HC04, Quad -taajuusmuuttajat) on tarpeen NPN -transistorin käyttämiseksi, koska NPN: n pohjaan on kohdistettava HIGH -tason jännite transistorin kytkemiseksi päälle.

Yhteenvetona voidaan todeta, että NPN -transistorin käyttö lisää tarpeetonta monimutkaisuutta indikaattoripiirin tekemiseen.

Tämän projektin kehittämiseksi lisään tuulettimen yllä olevan kuvan mukaisesti, jotta INDICATOR -piiri olisi hyödyllisempi.

Suositeltava: