İçindekiler:
- Gereçler
- 1. Adım: Hayranınızı Kurun
- Adım 2: Bir PI(D) Denetleyicisi Oluşturun
- 3. Adım: Başlangıçta Kontrol Komut Dosyasını Çalıştırın
Video: Raspberry Pi 4: 3 Adımda Hassas Sıcaklık Kontrolü
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Pimoroni Fan Shim, Pi'niz ısındığında sıcaklığını düşürmek için harika bir çözümdür. Üreticiler, CPU sıcaklığı belirli bir eşiğin üzerine çıktığında (örneğin 65 derece) fanı tetikleyen bir yazılım bile sağlıyor. Sıcaklık, daha düşük bir eşiğin altına hızla düşer ve fanı kapatır. Bu harikadır ancak orta dereceli yükler altında sıcaklığın yükselmesine ve düşmesine neden olur ve duyulabilir fan gürültüsü oluşturur. Bu talimat, PID denetleyici adı verilen bir şey kullanarak CPU sıcaklığını belirli bir değere sabitlerken fanın sesini azaltacaktır. Daha yüksek eşikler (örn. 65 derece) çok daha sessiz bir fan sağlarken, daha düşük eşikler (örn. 50 derece) daha yüksek bir fan ancak daha iyi sıcaklık kontrolü sağlar.
Yukarıdaki örnek, PID denetleyicisini çalıştırma ve her 500 saniyede bir hedef sıcaklığı değiştirme sonuçlarımı göstermektedir. Sıcaklıktaki ani değişikliklerde bir miktar aşırılık ile doğruluk +/- 1 derecedir.
Daha da önemlisi, bu test toplam test süresi boyunca (BBC iPlayer izlerken) aynı yük altında gerçekleştirilmiştir.
Gereçler
- Ahududu Pi 4
- Pimoroni Fan Şimi
1. Adım: Hayranınızı Kurun
İlk adım, fanınızı kurmaktır. Pimorini öğreticisi harika!
Ardından Pi'nizdeki terminali açın (ctrl alt t)
Ve Pimoroni tarafından sağlanan kodu yükleyin
git klon https://github.com/pimoroni/fanshim-pythoncd fanshim-python sudo./install.sh
Adım 2: Bir PI(D) Denetleyicisi Oluşturun
Orantılı İntegral Türev (PID) denetleyicisi, bazı fiziksel aygıtları (Fan Hızı) manipüle ederek belirli bir işlemin (CPU sıcaklığı) değerini kontrol etmek için kullanılan bir sistemdir. Periyodik olarak açıp kapatarak fanın 'hızını' ve gürültüsünü değiştirebiliriz (Darbe Dalga Modülasyonu). Belirli bir periyotta (örn. 1 saniye) açık kaldığı süre, fanın ne kadar hızlı ve ne kadar gürültülü olduğunu belirler (900ms = sesli ve hızlı, 100ms = sessiz ve yavaş). Fanın hızını değiştirmek ve böylece sıcaklığı kontrol etmek için PID'yi kullanacağız.
Bir PID kullanımını adım sayısına bölebiliriz.
- Ulaşmak istediğiniz proses değişkeninin değerine karar verin (örn. CPU sıcaklığı = 55). Buna ayar noktanız denir.
- PID hatasını hesaplayın. Ayar noktanız 55 derece ve gerçek sıcaklık 60 derece ise hatanız 5 derecedir (Sıcaklık - ayar noktası)
- Fanın çalışma süresini hatayla orantılı olarak değiştirin (Büyük hatalar fan hızında büyük değişikliklere, küçük hatalar fan hızında küçük değişikliklere neden olur).
- Fanı geçmiş değerlere göre ayarlayın (İntegral/önceki tüm hataların toplamı)
- İsteğe bağlı olarak hatanın (türev) değişim hızına göre fan hızını ayarlarsınız ama biz burada bunu yapmayacağız.
Artık teoriye sahip olduğunuza göre, Thonny IDE'de (veya başka bir python IDE'de) aşağıdaki kodu çalıştırın. Pi'nizi hangi sıcaklıkta tutmak istediğinizi değiştirmek için aşağıdaki koddaki 'hedef' değerini değiştirin. 'P' ve 'I' terimlerini biraz keyfi değerlere ayarladım. Sizin için işe yaramazlarsa, bunları ayarlamaktan çekinmeyin. 'P'yi büyütmek, denetleyicinin yeni hatalara hızla yanıt vereceği anlamına gelir (ancak kararlı olmayabilir). 'I'yi değiştirmek, denetleyicinin yanıtını geçmiş değerlere daha fazla ağırlıklandırmasına neden olur. Fan hızını hızlı bir şekilde değiştirmek sıcaklığı hızla değiştirmeyeceğinden bu terimleri çok büyük yapmaya çalışmazdım. Ayrıca, Pi'niz üzerinde inanılmaz derecede ağır işler yapıyorsanız, istediğiniz sıcaklığa ulaşamayabilirsiniz (fanın sınırları hala geçerlidir).
fanshim'den FanShim'i içe aktar
zamandan içe aktarma uyku, zaman içe aktarma os içe aktarma matematiği # CPU sıcaklığını karakter dizesi olarak döndürme def getCPUtemperature(): res = os.popen('vcgencmd Measure_temp').readline() return(res.replace("temp=", ") ").replace("'C\n", "")) fanshim = FanShim() target = 55 # istenen sıcaklık (bununla oynayın ve ne olduğunu görün) period=1 # PWM period on=.1 # 0'a başlangıç % görev döngüsü kapalı=dönem açık # %0 görev döngüsüne başlat P=.01 # orantılı Kazanç terimi (bununla oynayın ve ne olduğunu görün) intErr=0 # integral hatası I=.0001 # intergral kazanç terimi (bununla oynayın ve ne olduğunu görün) while True: # get temperaute temp=int(float(getCPUtemperature())) # hatayı hesaplayın ve düzgün err = temp-target # integral lerror'u hesaplayın ve intErr>10 ise onu kısıtlayın intErr=intErr+err: intErr =10 if intErr=dönem: açık=dönem kapalı=0 else: açık=açık kapalı = dönem-açık # eğer açıksa minimum görev döngüsünü ayarla<.09: açık=.09 else: açık=açık # eğer fanshim pininde PWM on ==period: fanhim.set_fan(True) sleep(on) else: fanhim.set_fan(True) s leep(açık) fanhim.set_fan(Yanlış) uyku(kapalı)
3. Adım: Başlangıçta Kontrol Komut Dosyasını Çalıştırın
Pi'nizi her başlattığınızda bu betiği çalıştırabilir veya yeniden başlatma sırasında otomatik olarak tetiklenmesini sağlayabilirsiniz. Bunu crontab ile yapmak çok basit.
- terminali aç
- terminale crontab-e yazın
- aşağıdaki kod satırını '@reboot python /home/pi/bootScripts/fanControl.py &' dosyasına ekleyin
- çık ve yeniden başlat
Komut dosyasını (fanControl.py) bootScripts adlı bir floder içine koydum, ancak herhangi bir yere koyabilirsiniz, sadece crontab'da doğru yolu belirttiğinizden emin olun.
Hepsi tamam! Artık fanınız, ürettiği duyulabilir gürültüyü en aza indirirken CPU'nuzun sıcaklığını belirli bir değere kadar kontrol edecektir.
Önerilen:
5 Kolay Adımda Doom'u iPod'unuzda Oynayın!: 5 Adımda
5 Kolay Adımda Doom'u iPod'unuzda Oynayın!: Rockbox'ı iPod'unuzda Doom ve düzinelerce başka oyunu oynamak için nasıl çift önyükleme yapacağınıza dair adım adım kılavuz. Yapması gerçekten kolay bir şey, ancak birçok insan iPod'umda doom oynadığımı görünce şaşırıyor ve talimatla karıştırılıyor
6 Ucuz ve Kolay Adımda Arduino Uno Balık Besleyici!: 6 Adımda
6 Ucuz ve Kolay Adımda Arduino Uno Balık Besleyici!: Yani bu proje için biraz arka plan gerekli olabilir. Evcil balıkları olan insanlara muhtemelen benimle aynı sorunla karşılaşıldı: tatiller ve unutkanlık. Balığımı beslemeyi sürekli unutuyordum ve balıklar suya girmeden önce bunu yapmak için uğraşıyordum
4 Adımda 3D Baskılı Protez El!: 4 Adımda
4 Adımda 3D Baskı Protez El!: Bu proje benim tarafımdan basılmış bir protez eldir, protez ve 3D baskı hakkında biraz daha bilgi edinmek istiyorum. Bu en iyi proje olmasa da, biraz deneyim sahibi olmanın ve nasıl oluşturulacağını öğrenmenin harika bir yolu
Roomba'dan Rover'a Sadece 5 Adımda!: 5 Adımda
Roomba'dan Rover'a Sadece 5 Adımda!: Roomba robotları, robot dünyasına parmaklarınızı sokmanın eğlenceli ve kolay bir yoludur. Bu Eğitilebilir Kitapta, basit bir Roomba'nın çevresini aynı anda analiz eden kontrol edilebilir bir geziciye nasıl dönüştürüleceğini detaylandıracağız. Parça Listesi1.) MATLAB2.) Roomb
TV için Daha Hassas Ses Kontrolü: 3 Adım
T.v. için Daha İnce Ses Kontrolü: Sorun: yeni televizyonum. oldukça titrek bir dijital ses kontrolüne sahip, ya YÜKSEK ya da KAPALI Çözüm: ikincil bir analog ses kontrolü ekleme Malzemeler: 1. tel 2. lehim 3. büzülme borusu 4. potansiyometre (benim için iyi 1 Mohm kullandım