สารบัญ:

การควบคุมอุณหภูมิที่แม่นยำบน Raspberry Pi 4: 3 ขั้นตอน
การควบคุมอุณหภูมิที่แม่นยำบน Raspberry Pi 4: 3 ขั้นตอน

วีดีโอ: การควบคุมอุณหภูมิที่แม่นยำบน Raspberry Pi 4: 3 ขั้นตอน

วีดีโอ: การควบคุมอุณหภูมิที่แม่นยำบน Raspberry Pi 4: 3 ขั้นตอน
วีดีโอ: Raspberry Pi EP.44 วัดอุณหภูมิด้วย DHT Sensor ใน Raspberry Pi 3 2024, พฤศจิกายน
Anonim
การควบคุมอุณหภูมิที่แม่นยำบน Raspberry Pi 4
การควบคุมอุณหภูมิที่แม่นยำบน Raspberry Pi 4

Pimoroni Fan Shim เป็นวิธีแก้ปัญหาที่ยอดเยี่ยมในการลดอุณหภูมิของ Pi ของคุณเมื่อมันร้อน ผู้ผลิตยังจัดหาซอฟต์แวร์ที่กระตุ้นพัดลมเมื่ออุณหภูมิของ CPU สูงกว่าเกณฑ์ที่กำหนด (เช่น 65 องศา) อุณหภูมิจะลดลงอย่างรวดเร็วต่ำกว่าเกณฑ์ที่ต่ำกว่าและปิดพัดลม วิธีนี้ดีมากแต่ทำให้อุณหภูมิเพิ่มขึ้นและลดลงภายใต้โหลดปานกลาง และสร้างเสียงรบกวนจากพัดลม คำแนะนำนี้จะช่วยลดเสียงรบกวนของพัดลมในขณะที่แก้ไขอุณหภูมิ CPU เป็นค่าเฉพาะโดยใช้สิ่งที่เรียกว่าตัวควบคุม PID เกณฑ์ที่สูงขึ้น (เช่น 65 องศา) จะส่งผลให้พัดลมเงียบกว่ามาก ในขณะที่เกณฑ์ที่ต่ำกว่า (เช่น 50 องศา) จะส่งผลให้พัดลมดังขึ้นแต่ควบคุมอุณหภูมิได้ดีกว่า

ตัวอย่างข้างต้นแสดงผลของฉันจากการเรียกใช้ตัวควบคุม PID และเปลี่ยนอุณหภูมิเป้าหมายทุกๆ 500 วินาที ความแม่นยำคือ +/- 1 องศาโดยมีการโอเวอร์โหลดเมื่ออุณหภูมิเปลี่ยนแปลงอย่างกะทันหัน

ที่สำคัญ การทดสอบนี้ดำเนินการภายใต้ภาระเดียวกันสำหรับเวลาทดสอบทั้งหมด (ดู BBC iPlayer)

เสบียง

  • ราสเบอร์รี่ Pi 4
  • พิโมโรนี ฟาน ชิม

ขั้นตอนที่ 1: ตั้งค่าพัดลมของคุณ

ตั้งค่าพัดลมของคุณ
ตั้งค่าพัดลมของคุณ

ขั้นตอนแรกคือการตั้งค่าพัดลมของคุณ บทช่วยสอนของ Pimorini นั้นยอดเยี่ยมมาก!

จากนั้นเปิดเทอร์มินัลบน Pi ของคุณ (ctrl alt t)

และติดตั้งโค้ดจาก Pimoroni

โคลน git https://github.com/pimoroni/fanshim-pythoncd fanshim-python sudo./install.sh

ขั้นตอนที่ 2: สร้างตัวควบคุม PI(D)

สร้างตัวควบคุม PI(D)
สร้างตัวควบคุม PI(D)

ตัวควบคุม Proportional Integral Derivative (PID) คือระบบที่ใช้ในการควบคุมค่าของกระบวนการบางอย่าง (อุณหภูมิ CPU) โดยจัดการอุปกรณ์ทางกายภาพบางอย่าง (ความเร็วพัดลม) เราสามารถจัดการ 'ความเร็ว' และเสียงรบกวนของพัดลมได้โดยการเปิดและปิดเป็นระยะ (Pulse Wave Modulation) ระยะเวลาที่เปิดไว้ในช่วงเวลาที่กำหนด (เช่น 1 วินาที) กำหนดว่าพัดลมจะดังและเร็วแค่ไหน (900ms = ดังและเร็ว 100ms = เงียบและช้า) เราจะใช้ PID เพื่อควบคุมความเร็วของพัดลมและควบคุมอุณหภูมิ

เราสามารถแบ่งการใช้ PID ออกเป็นหลายขั้นตอนได้

  1. ตัดสินใจเลือกค่าของตัวแปรกระบวนการที่คุณต้องการบรรลุ (เช่น อุณหภูมิ CPU = 55) นี่เรียกว่าจุดตั้งค่าของคุณ
  2. คำนวณข้อผิดพลาด PID หากค่าที่ตั้งไว้ของคุณคือ 55 องศา และอุณหภูมิจริงคือ 60 องศา ข้อผิดพลาดของคุณคือ 5 องศา (อุณหภูมิ - ค่าที่ตั้งไว้)
  3. เปลี่ยนการตรงเวลาของพัดลมตามสัดส่วนของข้อผิดพลาด (ข้อผิดพลาดใหญ่ส่งผลให้ความเร็วพัดลมเปลี่ยนแปลงอย่างมาก ข้อผิดพลาดเล็กน้อยทำให้ความเร็วพัดลมเปลี่ยนแปลงเล็กน้อย)
  4. ปรับพัดลมให้เหมาะสมกับค่าในอดีต (Integral/ผลรวมของข้อผิดพลาดก่อนหน้าทั้งหมด)
  5. คุณสามารถเลือกปรับความเร็วพัดลมตามอัตราการเปลี่ยนแปลงของข้อผิดพลาด (อนุพันธ์) แต่เราจะไม่ทำที่นี่

ตอนนี้คุณมีทฤษฎีแล้วให้รันโค้ดด้านล่างใน Thonny IDE (หรือ python IDE อื่นๆ) เปลี่ยนค่าของ 'เป้าหมาย' ในโค้ดด้านล่างเพื่อเปลี่ยนขอบเขตที่คุณต้องการรักษา Pi ของคุณไว้ ฉันได้กำหนดเงื่อนไข 'P' และ 'I' ด้วยค่าที่ไม่แน่นอน คุณสามารถปรับเปลี่ยนสิ่งเหล่านี้ได้หากไม่ได้ผลสำหรับคุณ การทำให้ 'P' ใหญ่ขึ้นหมายความว่าคอนโทรลเลอร์จะตอบสนองต่อข้อผิดพลาดใหม่อย่างรวดเร็ว (แต่อาจไม่เสถียร) การเปลี่ยน 'I' จะทำให้ตัวควบคุมมีน้ำหนัก ซึ่งตอบสนองต่อค่าที่ผ่านมามากกว่า ฉันจะไม่พยายามทำให้คำเหล่านี้ใหญ่เกินไปเพราะการเปลี่ยนความเร็วพัดลมอย่างรวดเร็วจะไม่เปลี่ยนอุณหภูมิอย่างรวดเร็ว นอกจากนี้ หากคุณใช้งาน Pi อย่างหนักอย่างเหลือเชื่อ คุณอาจไม่ได้อุณหภูมิที่ต้องการ (ขีดจำกัดของพัดลมยังคงมีผล)

จากfanshimนำเข้าFanShim

จาก time import sleep, time import os import math # ส่งคืนอุณหภูมิ CPU เป็นสตริงอักขระ def getCPUtemperature(): res = os.popen('vcgencmd measure_temp').readline() return(res.replace("temp=", " ").replace("'C\n", "")) fanshim = FanShim() target = 55 # อุณหภูมิที่ต้องการ (เล่นกับสิ่งนี้และดูว่าเกิดอะไรขึ้น) period=1 # PWM period on=.1 # initialise to 0 % รอบการทำงานปิด = เปิดตามช่วงเวลา # เริ่มต้นเป็น 0% รอบการทำงาน P=.01 # ระยะเกนตามสัดส่วน (เล่นกับสิ่งนี้และดูว่าเกิดอะไรขึ้น) intErr = 0 # ข้อผิดพลาดที่สำคัญ I =.0001 # ระยะกำไรระหว่างกัน (เล่นกับสิ่งนี้ และดูว่าเกิดอะไรขึ้น) ในขณะที่ True: # get temperaute temp=int(float(getCPUtemperature())) # คำนวณข้อผิดพลาดและ smooth err = temp-target # คำนวณ integra lerror และ จำกัด intErr=intErr+err ถ้า intErr>10: intErr =10 if intErr=period: on=period off=0 else: on=on off = period-on # ตั้งรอบการทำงานขั้นต่ำหากเปิด<.09: on=.09 else: on=on # PWM บนพินแฟนชิมถ้า on ==period: fanshim.set_fan(True) sleep(on) else: fanshim.set_fan(True) s leep(on) fanshim.set_fan(False) นอนหลับ(ปิด)

ขั้นตอนที่ 3: เรียกใช้สคริปต์ควบคุมเมื่อเริ่มต้น

เรียกใช้สคริปต์ควบคุมเมื่อเริ่มต้น
เรียกใช้สคริปต์ควบคุมเมื่อเริ่มต้น

คุณสามารถเรียกใช้สคริปต์นี้ทุกครั้งที่คุณเริ่ม pi หรือคุณอาจเรียกใช้สคริปต์นี้โดยอัตโนมัติเมื่อรีบูต มันง่ายมากที่จะทำกับ crontab

  1. เปิดเทอร์มินัล
  2. พิมพ์ crontab-e ลงในเทอร์มินัล
  3. เพิ่มบรรทัดต่อไปนี้ของโค้ดลงในไฟล์ '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. ออกและรีบูต

ฉันใส่สคริปต์ (fanControl.py) ไว้ใน floder ชื่อ bootScripts แต่คุณสามารถวางไว้ที่ใดก็ได้ เพียงตรวจสอบให้แน่ใจว่าคุณระบุเส้นทางที่ถูกต้องใน crontab

ทุกอย่างเสร็จเรียบร้อย! ตอนนี้พัดลมของคุณจะควบคุมอุณหภูมิของ CPU ของคุณเป็นค่าที่กำหนด ในขณะที่ลดเสียงรบกวนที่ได้ยิน

แนะนำ: