İçindekiler:
- Adım 1: Şemaların Hazırlanması
- Adım 2: PCB Çizimi Yapma
- Adım 3: Lehimleme
- Adım 4: Test Hazırlığı
- Adım 5: Test Etme (CPU Sıcaklığı Orta Düzeyde)
- Adım 6: Test Etme (CPU'nun Soğutma Seviyesine İhtiyacı Var)
- Adım 7: GÖSTERGE Devresine Güç Kaynağı
- Adım 8: RPI Kablolaması
- Adım 9: Python Programı
- Adım 10: GÖSTERGE Çalışması
- Adım 11: Alternatif Üretim (NPN Transistör Kullanarak) ve Daha Fazla Geliştirme
Video: Raspberry Pi CPU Sıcaklık Göstergesi: 11 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
Daha önce basit ahududu pi (Bundan sonra RPI olarak anılacaktır) operasyonel durum gösterge devresini tanıtmıştım.
Bu sefer başsız (monitörsüz) şekilde çalışan RPI için daha kullanışlı bir gösterge devresini anlatacağım.
Yukarıdaki devre, CPU sıcaklığını aşağıdaki gibi 4 farklı seviyede gösterir:
- CPU sıcaklığı 30~39 derece arasında olduğunda yeşil LED yanar
- Sarı LED, sıcaklığın 40 ila 45 derece arasında arttığını gösterir
- 3. Kırmızı LED, CPU'nun 46 ~ 49 dereceye ulaşarak biraz ısındığını gösterir
- Sıcaklık 50 dereceden fazla olduğunda başka bir Kırmızı LED yanıp söner
Yukarıdaki CPU sıcaklık aralıkları benim kişisel tasarım konseptimdir (Diğer sıcaklık aralıkları, bu devreyi kontrol eden python programının test koşulları değiştirilerek yapılandırılabilir).
Bu devreyi kullanarak konsol terminalinde mutlaka “vcgencmd Measure_temp” komutunu sık sık çalıştırmazsınız.
Bu devre, mevcut CPU sıcaklığını sürekli ve uygun bir şekilde bildirecektir.
Adım 1: Şemaların Hazırlanması
Sadece python kodlarını kullanarak 4 led'i direkt olarak kontrol edebilmenize rağmen, programın kontrol mantığı RPI yükleyecektir ve bunun sonucunda sürekli biraz karmaşık python kodu çalıştırmanız gerektiğinden CPU sıcaklığı daha fazla yükselecektir.
Bu nedenle, python kod karmaşıklığını olabildiğince basit ve yüksüz LED kontrol mantığını harici donanım devresine yükleyerek en aza indiriyorum.
CPU sıcaklık göstergesi (Bundan sonra INICATOR olarak anılacaktır) devresi aşağıdaki ana parçalardan oluşur.
- 00->DÜŞÜK, 01->Orta, 10->Yüksek, 11->Soğutma ihtiyacı gibi sıcaklık seviyesi verilerini almak için RPI GPIO pinlerine iki opto-kuplör bağlanır.
- Girişlere (A, B) göre 74LS139 (veya 74HC139, 2'den 4'e kod çözücü ve çoğullayıcı) kontrol çıkışları (Y0, Y1, Y2, Y3)
- Sıcaklık 30 ~ 39 derece arasında olduğunda, python kodu 00'dan GPIO pinlerine çıkar. Bu nedenle, 74LS139, 00 (A->0, B->0) giriş verilerini alır.
- 00 girildiğinde Y0 çıkışı DÜŞÜK olur. (Lütfen 74LS139 doğruluk tablosuna bakınız)
- Y0 çıkışı DÜŞÜK olduğunda 2N3906 PNP transistörünü aktive eder ve bunun sonucunda Yeşil LED yanar.
- Aynı şekilde Y1 (01 -> CPU sıcaklık ortamı) Sarı LED'i yakacaktır vb.
- Y3 DÜŞÜK olduğunda, DB140, BD140 PNP transistör yükü olan NE555 LED yanıp sönme devresini (bu ortak 555 IC tabanlı LED yanıp söner) etkinleştirir
Bu devrenin en önemli bileşeni, aşağıdaki doğruluk tablosunda gösterildiği gibi 2 haneli girişi 4 farklı tek çıkışa deşifre eden 74LS139'dur.
Giriş | Çıktı
G (Etkinleştir) | B | bir | 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 |
74LS139 çıkışı DÜŞÜK olduğunda, PNP tipi transistör, taban terminali DÜŞÜK olduğunda PNP transistörü açıldığından genel devreyi basitleştirebilir. (Bu hikayenin sonunda NPN versiyonunu göstereceğim)
NE555 LED flaşör devresine 100K potansiyometre dahil olduğundan, Kırmızı LED ON/OFF süresi ihtiyaca göre serbestçe ayarlanabilir.
Adım 2: PCB Çizimi Yapma
GÖSTERGE'nin çalışma şeması anlatıldığına göre devreyi yapmaya başlayalım.
Üniversal kart üzerinde bir şeyi lehimlemeden önce, yukarıda gösterilen PCB çizimini hazırlamak, hataları en aza indirmeye yardımcı olur.
Çizim, her bir parçayı evrensel kart üzerine yerleştirmek için power-point kullanılarak ve teller ile parçalar arasında kablolama desenleri yapılarak yapılır.
IC ve transistör pin-out görüntüleri PCB kablolama modeli ile birlikte konumlandırıldığından, bu çizim kullanılarak lehimleme yapılabilir.
Adım 3: Lehimleme
Orijinal PCB çizimi, bileşenleri PCB'ye bağlamak için tek teller kullanılmadan yapılsa da, biraz farklı lehimliyorum.
Tek iletkenli teller (kalay tel değil) kullanarak, GÖSTERGE devresini içeren evrensel PCB boyutunu küçültmeye çalışıyorum.
Ama PCB'nin lehimleme tarafında da görebileceğiniz gibi, PCB çiziminde gösterilen desenlere göre de kalay tel kullanıyorum.
Her bir bileşen PCB çiziminin orijinal tasarımına göre bağlandığında, GÖSTERGE devresi dahil olmak üzere lehimleme tamamlanmış PCB kartı doğru şekilde çalışacaktır.
Adım 4: Test Hazırlığı
RPI bağlantısından önce, bitmiş devrenin test edilmesi gerekir.
Herhangi bir lehimleme hatası olabileceğinden, kısa devre veya yanlış kablolama meydana geldiğinde hasarları önlemek için DC güç tedarikçisi kullanılır.
GÖSTERGE testi için devrenin 5V güç kaynağı konektörüne iki ek güç kaynağı kablosu bağlanır.
Adım 5: Test Etme (CPU Sıcaklığı Orta Düzeyde)
5V girişi uygulanmadığında, 74LS139 kod çözme girişi ve Y0 çıkışını DÜŞÜK olarak etkinleştirir (Yeşil LED yanar).
Ancak A girişine 5V uygulandı, 74LS139'un Y1 çıkışı etkinleştiriliyor (DÜŞÜK).
Bu nedenle Sarı LED yukarıdaki resimde görüldüğü gibi yanmaktadır.
Adım 6: Test Etme (CPU'nun Soğutma Seviyesine İhtiyacı Var)
74LS139'un her iki girişine (A ve B) 5V uygulandığında, 4. Kırmızı LED yanıp söner.
Yanıp sönme hızı, yukarıdaki resimde gösterildiği gibi 100K VR ayarlanarak değiştirilebilir.
Test tamamlandığında iki adet Molex 3 pin dişi kablo çıkarılabilir.
Adım 7: GÖSTERGE Devresine Güç Kaynağı
GÖSTERGE devresine güç vermek için yukarıdaki resimde gösterildiği gibi 5V çıkışlı ve USB tip B adaptörlü ortak el telefonu şarj cihazı kullanıyorum.
3.3V GPIO ve 5V beslemeli GÖSTERGE devresi bağlanarak RPI ile sorun yaşamamak için sinyal arayüzü ve güç kaynağı birbirinden tamamen izole edilmiştir.
Adım 8: RPI Kablolaması
GÖSTERGE devresini RPI ile arayüzlemek için, iki topraklama pimi ile birlikte iki GPIO pimi tahsis edilmelidir.
GPIO pinlerini seçmek için özel bir gereklilik yoktur.
INDICATOR'u bağlamak için herhangi bir GPIO pinini kullanabilirsiniz.
Ancak kablolu pinler python programında 74LS139'a (örneğin A, B) giriş olarak atanmalıdır.
Adım 9: Python Programı
Devre tamamlandığında, GÖSTERGE fonksiyonunu kullanmak için python programı yapılması gerekmektedir.
Program mantığı hakkında daha fazla ayrıntı için lütfen yukarıdaki akış şemasına bakın.
#-*- kodlama:utf-8 -*-
içe aktarma alt işlemi, sinyal, sys
ithalat zamanı, yeniden
RPi. GPIO'yu g olarak içe aktar
bir = 12
B = 16
g.setmode(g. BCM)
g.kurulum(A, g. OUT)
g.kurulum(B, g. OUT)
##
def sinyal_işleyici(sig, çerçeve):
print('Ctrl+C'ye bastınız!')
g.output(A, Yanlış)
g.output(B, Yanlış)
f.kapat()
sistem.çıkış(0)
sinyal.sinyal(sinyal. SIGINT, sinyal_işleyici)
##
Doğru iken:
f = open('/home/pi/My_project/CPU_temperature_log.txt', 'a+')
temp_str = subprocess.check_output('/opt/vc/bin/vcgencmd Measure_temp', kabuk=Doğru)
temp_str = temp_str.decode(kodlama = 'UTF-8', hatalar = 'katı')
CPU_temp = yeniden.findall("\d+\.\d+", temp_str)
# mevcut CPU sıcaklığının çıkarılması
current_temp = kayan(CPU_temp[0])
current_temp > 30 ve current_temp < 40 ise:
# sıcaklık düşük A=0, B=0
g.output(A, Yanlış)
g.output(B, Yanlış)
zaman.uyku(5)
elif current_temp >= 40 ve current_temp < 45:
# sıcaklık ortamı A=0, B=1
g.output(A, Yanlış)
g.output(B, Doğru)
zaman.uyku(5)
elif current_temp >= 45 ve current_temp < 50:
# sıcaklık yüksek A=1, B=0
g.output(A, Doğru)
g.output(B, Yanlış)
zaman.uyku(5)
elif current_temp >= 50:
# CPU soğutması gerekli yüksek A=1, B=1
g.output(A, Doğru)
g.output(B, Doğru)
zaman.uyku(5)
geçerli_zaman = zaman.zaman()
formated_time = time.strftime("%H:%M:%S", time.gmtime(current_time))
f.write(str(formated_time)+'\t'+str(current_temp)+'\n')
f.kapat()
Python programının ana işlevi aşağıdaki gibidir.
- İlk olarak GPIO 12, 16'yı çıkış portu olarak ayarlama
- Günlük dosyasını kapatmak ve GPIO 12, 16'yı kapatmak için Ctrl+C kesme işleyicisini tanımlama
- Sonsuz döngüye girildiğinde, günlük dosyasını ekleme modu olarak açın
- “/opt/vc/bin/vcgencmd Measure_temp” komutunu çalıştırarak CPU sıcaklığını okuyun
- Sıcaklık 30 ~ 39 aralığında olduğunda, Yeşil LED'i açmak için 00 çıkışı
- Sıcaklık 40 ~ 44 aralığında olduğunda, Sarı LED'i açmak için 01 çıkışı
- Sıcaklık 45 ~ 49 aralığında olduğunda, Kırmızı LED'i açmak için çıkış 10
- Sıcaklık 50'den fazla olduğunda, Kırmızı LED'in yanıp sönmesi için çıkış 11
- Günlük dosyasına zaman damgası ve sıcaklık verilerini yazın
Adım 10: GÖSTERGE Çalışması
Her şey yolunda olduğunda, her bir LED'in CPU sıcaklığına göre yandığını veya yanıp söndüğünü görebilirsiniz.
Mevcut sıcaklığı kontrol etmek için kabuk komutu girmenize gerek yoktur.
Log dosyasındaki verileri toplayıp, Excel kullanarak metin verilerini grafiğe dönüştürdükten sonra, sonuç yukarıdaki resim gösterilir.
Yüksek yükler uygularken (İki Midori Tarayıcı çalıştırırken ve Youtube videosu oynatırken), CPU sıcaklığı 57.9C'ye çıkıyor.
Adım 11: Alternatif Üretim (NPN Transistör Kullanarak) ve Daha Fazla Geliştirme
Bu, NPN transistörlerini (2N3904 ve BD139) kullanan önceki INDICATOR proje örneğidir.
Gördüğünüz gibi, NPN transistörünü sürmek için bir IC (74HC04, Dörtlü invertör) daha gereklidir, çünkü transistörü açmak için NPN tabanına YÜKSEK düzeyde voltaj uygulanmalıdır.
Özet olarak, NPN transistör kullanmak, GÖSTERGE devresini yapmak için gereksiz karmaşıklık katar.
Bu projenin daha da geliştirilmesi için, GÖSTERGE devresini daha kullanışlı hale getirmek için yukarıdaki resimde gösterildiği gibi soğutma fanı ekleyeceğim.
Önerilen:
Arduino ile Sıcaklık ve Nem Göstergesi: 7 Adım (Resimli)
Arduino ile Sıcaklık ve Nem Göstergesi: Bu talimat Arduino ile sıcaklık ve nem gösterebilen bir kutunun nasıl yapıldığını gösterecektir. sıkıştırılmış f
Termokromik Sıcaklık ve Nem Göstergesi: 10 Adım (Resimli)
Termokromik Sıcaklık ve Nem Göstergesi: Bir süredir bu proje üzerinde çalışıyorum. Orijinal fikir, bir ticaret fuarı için işyerinde bir TEC kontrol cihazı göstericisi yaptıktan sonra aklıma geldi. GEM'lerin ısıtma ve soğutma yeteneklerini göstermek için termokromik boya kullanıyorduk
Arduino 24 Saat Sıcaklık Nem Göstergesi: 3 Adım (Resimli)
Arduino 24 Saat Sıcaklık Nem Göstergesi: DHT11, başlamak için harika bir sensördür. Arduino'ya bağlanmak ucuz ve kolaydır. Sıcaklık ve nemi yaklaşık %2 doğrulukla bildirir ve bu talimat, 24 saatlik geçmişi gösteren grafiksel bir ekran olarak bir Gameduino 3 kullanır.W
ESP32 NTP Sıcaklık Problu Steinhart-Hart Düzeltmeli ve Sıcaklık Alarmlı Pişirme Termometresi: 7 Adım (Resimli)
ESP32 NTP Sıcaklık Probu Steinhart-Hart Düzeltme ve Sıcaklık Alarmı ile Pişirme Termometresi.: "Yaklaşan bir projeyi" tamamlama yolculuğunda, "Steinhart-Hart Düzeltme ve Sıcaklık Alarmlı ESP32 NTP Sıcaklık Probu Pişirme Termometresi"; bir NTP sıcaklık probunu nasıl eklediğimi gösteren bir Eğitilebilirliktir, piezo b
Arduino İle Sıcaklık ve Nem Göstergesi ve Veri Toplama ve İşleme: 13 Adım (Resimli)
Arduino ve İşleme ile Sıcaklık ve Nem Görüntüleme ve Veri Toplama: Giriş: Bu, bir Arduino kartı, bir Sensör (DHT11), bir Windows bilgisayar ve Sıcaklık, Nem verilerini dijital olarak görüntülemek için bir İşleme (ücretsiz indirilebilir) programı kullanan bir projedir. çubuk grafik formu, saati ve tarihi görüntüleyin ve bir sayım süresi çalıştırın