สารบัญ:
- ขั้นตอนที่ 1: การเตรียมแผนผัง
- ขั้นตอนที่ 2: การสร้าง PCB Drawing
- ขั้นตอนที่ 3: การบัดกรี
- ขั้นตอนที่ 4: การเตรียมการทดสอบ
- ขั้นตอนที่ 5: การทดสอบ (อุณหภูมิ CPU อยู่ในระดับปานกลาง)
- ขั้นตอนที่ 6: การทดสอบ (CPU ต้องการระดับการระบายความร้อน)
- ขั้นตอนที่ 7: แหล่งจ่ายไฟไปยังวงจร INDICATOR
- ขั้นตอนที่ 8: การเดินสาย RPI
- ขั้นตอนที่ 9: โปรแกรม Python
- ขั้นตอนที่ 10: การทำงานของตัวบ่งชี้
- ขั้นตอนที่ 11: การสร้างทางเลือก (โดยใช้ทรานซิสเตอร์ NPN) และการพัฒนาเพิ่มเติม
วีดีโอ: ตัวบ่งชี้อุณหภูมิ CPU Raspberry Pi: 11 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
ก่อนหน้านี้ฉันได้แนะนำวงจรตัวบ่งชี้สถานะการทำงานของราสเบอร์รี่ pi อย่างง่าย (ต่อไปนี้เป็น RPI)
คราวนี้ฉันจะอธิบายวงจรตัวบ่งชี้ที่มีประโยชน์มากขึ้นสำหรับ RPI ที่ทำงานในลักษณะหัวขาด (ไม่มีจอภาพ)
วงจรด้านบนแสดงอุณหภูมิของ CPU ออกเป็น 4 ระดับที่แตกต่างกัน เช่น
- ไฟ LED สีเขียวจะเปิดขึ้นเมื่ออุณหภูมิ CPU อยู่ภายใน 30 ~ 39 องศา
- ไฟ LED สีเหลืองแสดงว่าอุณหภูมิเพิ่มขึ้นในช่วง 40 ถึง 45 องศา
- ไฟ LED สีแดงดวงที่ 3 แสดงว่า CPU ร้อนขึ้นเล็กน้อยเมื่อถึง 46 ~ 49 องศา
- ไฟ LED สีแดงอีกดวงจะกะพริบเมื่ออุณหภูมิสูงกว่า 50 องศา
ช่วงอุณหภูมิ CPU ข้างต้นเป็นแนวคิดการออกแบบส่วนตัวของฉัน (ช่วงอุณหภูมิอื่นๆ สามารถกำหนดค่าได้โดยการเปลี่ยนเงื่อนไขการทดสอบของโปรแกรม python ที่ควบคุมวงจรนี้)
เมื่อใช้วงจรนี้ คุณไม่จำเป็นต้องดำเนินการคำสั่ง "vcgencmd วัด_temp" บ่อยๆ บนคอนโซลเทอร์มินัล
วงจรนี้จะแจ้งอุณหภูมิ CPU ปัจจุบันอย่างต่อเนื่องและสะดวก
ขั้นตอนที่ 1: การเตรียมแผนผัง
แม้ว่าคุณจะสามารถควบคุม LED 4 ดวงได้โดยตรงโดยใช้รหัสไพ ธ อนเท่านั้น แต่ลอจิกควบคุมของโปรแกรมจะโหลด RPI ส่งผลให้อุณหภูมิของ CPU เพิ่มขึ้นเนื่องจากคุณควรเรียกใช้โค้ดหลามที่ซับซ้อนเล็กน้อยอย่างต่อเนื่อง
ดังนั้นฉันจึงลดความซับซ้อนของโค้ด python ให้น้อยที่สุดเท่าที่จะทำได้ และปิดลอจิกควบคุม LED ลงในวงจรฮาร์ดแวร์ภายนอก
วงจรตัวบ่งชี้อุณหภูมิ CPU (ต่อไปนี้จะเรียกว่า INICATOR) ประกอบด้วยส่วนสำคัญๆ ดังต่อไปนี้
- ออปโตคัปเปลอร์สองตัวเชื่อมต่อกับพิน RPI GPIO เพื่อรับข้อมูลระดับอุณหภูมิ เช่น 00->LOW, 01->Medium, 10->High, 11->Need cooling.
- 74LS139 (หรือ 74HC139, 2-to-4 decoder และ de-multiplexer) เอาต์พุตควบคุม (Y0, Y1, Y2, Y3) ตามอินพุต (A, B)
- เมื่ออุณหภูมิอยู่ภายใน 30 ~ 39 องศา รหัสหลามจะส่งออก 00 ไปยังพิน GPIO ดังนั้น 74LS139 รับข้อมูลอินพุต 00 (A->0, B->0)
- เมื่อป้อน 00 เอาต์พุต Y0 จะกลายเป็น LOW (โปรดอ้างอิงตารางความจริงของ 74LS139)
- เมื่อเอาต์พุต Y0 ต่ำ จะเปิดใช้งานทรานซิสเตอร์ 2N3906 PNP ส่งผลให้ LED สีเขียวติดสว่าง
- ในทำนองเดียวกัน Y1 (01 -> ตัวกลางอุณหภูมิ CPU) จะเปิดไฟ LED สีเหลืองเป็นต้น
- เมื่อ Y3 ต่ำ DB140 เปิดใช้งาน NE555 LED กระพริบวงจร (ซึ่งเป็นเรื่องปกติ 555 ไฟ LED กระพริบตาม IC) ซึ่งเป็นโหลดของทรานซิสเตอร์ BD140 PNP
องค์ประกอบที่สำคัญที่สุดของวงจรนี้คือ 74LS139 ซึ่งถอดรหัสอินพุต 2 หลักออกเป็นเอาต์พุตเดี่ยวที่แตกต่างกัน 4 รายการดังแสดงในตารางความจริงด้านล่าง
อินพุต | เอาท์พุต
G (เปิดใช้งาน) | ข | 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 |
เนื่องจากเอาต์พุต 74LS139 กลายเป็น LOW ทรานซิสเตอร์ชนิด PNP สามารถทำให้วงจรโดยรวมง่ายขึ้น เนื่องจากทรานซิสเตอร์ PNP จะเปิดขึ้นเมื่อขั้วฐานกลายเป็น LOW (ผมจะแสดงเวอร์ชัน NPN ท้ายเรื่องนี้)
เนื่องจากโพเทนชิออมิเตอร์ 100K รวมอยู่ในวงจรไฟกระพริบ LED NE555 เวลาเปิด/ปิด LED สีแดงจึงสามารถปรับได้อย่างอิสระตามความต้องการ
ขั้นตอนที่ 2: การสร้าง PCB Drawing
ตามที่อธิบายรูปแบบการทำงานของ INDICATOR เรามาเริ่มสร้างวงจรกัน
ก่อนทำการบัดกรีบางอย่างบนบอร์ดอเนกประสงค์ การเตรียมแบบ PCB ที่แสดงด้านบนนั้นมีประโยชน์ในการลดข้อผิดพลาดให้เหลือน้อยที่สุด
ภาพวาดถูกสร้างขึ้นโดยใช้จุดจ่ายไฟเพื่อระบุตำแหน่งแต่ละส่วนบนกระดานสากล และสร้างรูปแบบการเดินสายระหว่างชิ้นส่วนต่างๆ ด้วยสายไฟ
เนื่องจากอิมเมจพินเอาต์ของ IC และทรานซิสเตอร์ถูกจัดวางร่วมกับรูปแบบการเดินสาย PCB การบัดกรีสามารถทำได้โดยใช้ภาพวาดนี้
ขั้นตอนที่ 3: การบัดกรี
แม้ว่าการวาด PCB ดั้งเดิมจะไม่ใช้สายเดี่ยวในการเชื่อมต่อส่วนประกอบบน PCB แต่ฉันก็บัดกรีแตกต่างกันบ้าง
โดยใช้ตัวนำเส้นเดียว (ไม่ใช่ลวดดีบุก) ฉันกำลังพยายามลดขนาด PCB สากลที่มีวงจร INDICATOR
แต่อย่างที่คุณเห็นด้านบัดกรีของ PCB ฉันใช้ลวดดีบุกตามรูปแบบที่แสดงในรูปวาด PCB
เมื่อแต่ละส่วนประกอบเชื่อมต่อกันตามแบบต้นฉบับของการเขียนแบบ PCB การบัดกรีบอร์ด PCB ที่เสร็จสมบูรณ์รวมถึงวงจร INDICATOR จะทำงานอย่างถูกต้อง
ขั้นตอนที่ 4: การเตรียมการทดสอบ
ก่อนเชื่อมต่อ RPI วงจรที่เสร็จแล้วต้องมีการทดสอบ
เนื่องจากความผิดพลาดในการบัดกรีอาจเกิดขึ้นได้ ตัวจ่ายไฟ DC จึงถูกใช้เพื่อป้องกันความเสียหายเมื่อเกิดการลัดวงจรหรือการเดินสายผิดพลาด
สำหรับการทดสอบ INDICATOR จะมีการต่อสายไฟเพิ่มเติม 2 เส้นเข้ากับขั้วต่อแหล่งจ่ายไฟ 5V ของวงจร
ขั้นตอนที่ 5: การทดสอบ (อุณหภูมิ CPU อยู่ในระดับปานกลาง)
เมื่อไม่มีอินพุต 5V แล้ว 74LS139 ถอดรหัสอินพุตและเปิดใช้งานเอาต์พุต Y0 เป็น LOW (เปิด LED สีเขียว)
แต่ใช้ 5V กับอินพุต A, เอาต์พุต Y1 ของการเปิดใช้งาน 74LS139 (ต่ำ)
ดังนั้นไฟ LED สีเหลืองจึงติดดังแสดงในภาพด้านบน
ขั้นตอนที่ 6: การทดสอบ (CPU ต้องการระดับการระบายความร้อน)
เมื่อ 5V ใช้อินพุตทั้งสอง (A และ B) ของ 74LS139 ไฟ LED สีแดงดวงที่ 4 จะกะพริบ
อัตราการกะพริบสามารถเปลี่ยนได้โดยการปรับ 100K VR ตามที่แสดงในภาพด้านบน
เมื่อการทดสอบเสร็จสิ้น สามารถถอดสายเคเบิลตัวเมีย Molex 3 พินได้ 2 เส้น
ขั้นตอนที่ 7: แหล่งจ่ายไฟไปยังวงจร INDICATOR
สำหรับการจ่ายไฟให้กับวงจร INDICATOR ฉันใช้ที่ชาร์จโทรศัพท์มือทั่วไปซึ่งมีเอาต์พุตอะแดปเตอร์ 5V และ USB Type-B ตามที่แสดงในภาพด้านบน
เพื่อหลีกเลี่ยงปัญหา RPI โดยการเชื่อมต่อ 3.3V GPIO และวงจร INDICATOR ที่ใช้พลังงาน 5V อินเทอร์เฟซสัญญาณและแหล่งจ่ายไฟจะถูกแยกจากกันโดยสิ้นเชิง
ขั้นตอนที่ 8: การเดินสาย RPI
สำหรับการเชื่อมต่อวงจร INDICATOR กับ RPI ควรใช้หมุด GPIO สองตัวพร้อมกับหมุดกราวด์สองตัว
ไม่มีข้อกำหนดเฉพาะสำหรับการเลือกพิน GPIO
คุณสามารถใช้พิน GPIO สำหรับเชื่อมต่อ INDICATOR
แต่พินแบบมีสายควรกำหนดเป็นอินพุตสำหรับ 74LS139 (เช่น A, B) ในโปรแกรม python
ขั้นตอนที่ 9: โปรแกรม Python
เมื่อวงจรเสร็จสมบูรณ์ จำเป็นต้องสร้างโปรแกรม python เพื่อใช้ฟังก์ชัน INDICATOR
โปรดดูแผนผังลำดับงานด้านบนสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับตรรกะของโปรแกรม
#-*- การเข้ารหัส:utf-8 -*-
นำเข้ากระบวนการย่อย สัญญาณ sys
เวลานำเข้าอีกครั้ง
นำเข้า RPi. GPIO เป็น g
A = 12
B = 16
g.setmode(g. BCM)
g.setup(A, g. OUT)
g.setup(B, g. OUT)
##
def signal_handler (sig, เฟรม):
print('คุณกด Ctrl+C!')
g.output(A, เท็จ)
g.output(B, เท็จ)
f.close()
sys.exit(0)
สัญญาณ.สัญญาณ(สัญญาณ. SIGINT,ตัวจัดการสัญญาณ)
##
ในขณะที่จริง:
f = open('/home/pi/My_project/CPU_temperature_log.txt', 'a+')
temp_str = subprocess.check_output('/opt/vc/bin/vcgencmd วัด_temp', เชลล์=จริง)
temp_str = temp_str.decode (การเข้ารหัส = 'UTF-8' ข้อผิดพลาด = 'เข้มงวด')
CPU_temp = re.findall("\d+\.\d+", temp_str)
# แยกอุณหภูมิ CPU ปัจจุบัน
current_temp = ลอย (CPU_temp[0])
ถ้า current_temp > 30 และ current_temp < 40:
# อุณหภูมิต่ำ A=0, B=0
g.output(A, เท็จ)
g.output(B, เท็จ)
เวลานอน(5)
elif current_temp >= 40 และ current_temp < 45:
# อุณหภูมิปานกลาง A=0, B=1
g.output(A, เท็จ)
g.output(B, จริง)
เวลานอน(5)
elif current_temp >= 45 และ current_temp < 50:
# อุณหภูมิสูง A=1, B=0
g.output(A, จริง)
g.output(B, เท็จ)
เวลานอน(5)
elif current_temp >= 50:
# CPU เย็นต้องสูง A=1, B=1
g.output(A, จริง)
g.output(B, จริง)
เวลานอน(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.close()
หน้าที่หลักของโปรแกรม python มีดังนี้
- ขั้นแรกให้ตั้งค่า GPIO 12, 16 เป็นพอร์ตเอาต์พุต
- กำหนดตัวจัดการการขัดจังหวะ Ctrl+C สำหรับปิดล็อกไฟล์และปิด GPIO 12, 16
- เมื่อเข้าสู่ลูปอนันต์ ให้เปิดไฟล์บันทึกเป็นโหมดต่อท้าย
- อ่านอุณหภูมิ CPU โดยดำเนินการ “/opt/vc/bin/vcgencmd วัด_temp” คำสั่ง
- เมื่ออุณหภูมิอยู่ในช่วง 30 ~ 39 จากนั้นให้เอาต์พุต 00 เพื่อเปิดไฟ LED สีเขียว
- เมื่ออุณหภูมิอยู่ในช่วง 40 ~ 44 จากนั้นให้ส่งสัญญาณ 01 เพื่อเปิดไฟ LED สีเหลือง
- เมื่ออุณหภูมิอยู่ในช่วง 45 ~ 49 จากนั้นให้เอาต์พุต 10 เพื่อเปิดไฟ LED สีแดง
- เมื่ออุณหภูมิมากกว่า 50 แล้วให้เอาต์พุต 11 เพื่อให้ไฟ LED สีแดงกะพริบ
- เขียนข้อมูลประทับเวลาและอุณหภูมิลงในไฟล์บันทึก
ขั้นตอนที่ 10: การทำงานของตัวบ่งชี้
เมื่อทุกอย่างเรียบร้อย คุณจะเห็น LED แต่ละดวงเปิดหรือกะพริบตามอุณหภูมิของ CPU
คุณไม่จำเป็นต้องป้อนคำสั่งเชลล์เพื่อตรวจสอบอุณหภูมิปัจจุบัน
หลังจากรวบรวมข้อมูลในล็อกไฟล์และแสดงผลข้อมูลข้อความเป็นกราฟโดยใช้ Excel แล้ว ผลลัพธ์จะแสดงตามภาพด้านบน
เมื่อใช้โหลดสูง (ใช้งานเบราว์เซอร์ Midori สองตัวและเล่นวิดีโอ Youtube) อุณหภูมิของ CPU จะสูงถึง 57.9C
ขั้นตอนที่ 11: การสร้างทางเลือก (โดยใช้ทรานซิสเตอร์ NPN) และการพัฒนาเพิ่มเติม
นี่เป็นตัวอย่างโครงการ INDICATOR ก่อนหน้านี้ที่ใช้ทรานซิสเตอร์ NPN (2N3904 และ BD139)
ดังที่คุณเห็นแล้วว่าจำเป็นต้องมี IC อีกตัวหนึ่ง (74HC04, อินเวอร์เตอร์สี่ตัว) เพื่อขับเคลื่อนทรานซิสเตอร์ NPN เนื่องจากควรใช้แรงดันไฟฟ้าระดับสูงกับฐานของ NPN เพื่อเปิดทรานซิสเตอร์
โดยสรุป การใช้ทรานซิสเตอร์ NPN จะเพิ่มความซับซ้อนที่ไม่จำเป็นเพื่อสร้างวงจร INDICATOR
สำหรับการพัฒนาโครงการต่อไป ผมจะเพิ่มพัดลมระบายความร้อนตามภาพด้านบน เพื่อให้วงจร INDICATOR มีประโยชน์มากขึ้น
แนะนำ:
Raspberry Pi Box of Cooling FAN พร้อมตัวบ่งชี้อุณหภูมิ CPU: 10 ขั้นตอน (พร้อมรูปภาพ)
Raspberry Pi Box of Cooling FAN พร้อมตัวบ่งชี้อุณหภูมิของ CPU: ฉันได้แนะนำ raspberry pi (ต่อไปนี้เป็น RPI) วงจรตัวบ่งชี้อุณหภูมิ CPU ในโครงการก่อนหน้านี้ วงจรแสดง RPI 4 ระดับอุณหภูมิ CPU ที่แตกต่างกันดังนี้ - ไฟ LED สีเขียวเปิดเมื่อ อุณหภูมิ CPU อยู่ภายใน 30 ~
$ 3 คอมพิวเตอร์ CPU Intake Fan Duct: 7 ขั้นตอน (พร้อมรูปภาพ)
$3 คอมพิวเตอร์ CPU Intake Fan Duct: การมีท่อไอดีตรงจากด้านข้างของเคสคอมพิวเตอร์ของคุณไปยังพัดลม CPU จะช่วยให้คุณระบายความร้อนได้ดีกว่าตัวเลือกการระบายความร้อน (อากาศ) อื่นๆ แทนที่จะใช้ลมเข้าจากพอร์ตด้านหน้าซึ่งมีเวลาอุ่นเครื่องจากส่วนประกอบอื่นๆ
อุ่นเครื่องในฤดูหนาวนี้: CPU Hand Warmer: 4 ขั้นตอน (พร้อมรูปภาพ)
อุ่นเครื่องในฤดูหนาวนี้: เครื่องอุ่นมือ CPU: ในโครงการเล็กๆ นี้ ฉันจะแสดงให้คุณเห็นถึงวิธีที่ฉันนำ CPU AMD เก่ามาใช้ใหม่เพื่อสร้างเครื่องอุ่นมือไฟฟ้าขนาดเล็ก เบา และใช้งานง่าย ด้วยความช่วยเหลือของพาวเวอร์แบงค์แบบพกพาขนาดเล็ก Gadget นี้สามารถทำให้คุณอุ่นขึ้นได้ประมาณ 2 ชั่วโมงครึ่งและ
พัดลมควบคุม PWM ตามอุณหภูมิ CPU สำหรับ Raspberry Pi: 4 ขั้นตอน (พร้อมรูปภาพ)
พัดลมควบคุม PWM ตามอุณหภูมิของ CPU สำหรับ Raspberry Pi: หลายกรณีสำหรับ Raspberry Pi มาพร้อมกับพัดลม 5V ขนาดเล็กเพื่อช่วยระบายความร้อนของ CPU อย่างไรก็ตาม พัดลมเหล่านี้มักจะมีเสียงดังและหลายคนเสียบเข้ากับพิน 3V3 เพื่อลดเสียงรบกวน พัดลมเหล่านี้มักจะได้รับการจัดอันดับสำหรับ 200mA ซึ่งค่อนข้างเ
ตัวบ่งชี้อุณหภูมิ RGB (พร้อม XinaBox): 5 ขั้นตอน (พร้อมรูปภาพ)
RGB Temperature Indicator (พร้อม XinaBox): นี่เป็นบทความ Instructables แรกของฉันอย่างเป็นทางการ ดังนั้นฉันจะยอมรับว่าตอนนี้ฉันกำลังใช้โอกาสนี้เพื่อทดลองใช้ สัมผัสถึงวิธีการทำงานของแพลตฟอร์ม ประสบการณ์ผู้ใช้ทั้งหมด แต่ในขณะที่ฉันทำอย่างนั้น ฉันคิดว่าฉันสามารถ