สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
หลายกรณีสำหรับ Raspberry Pi มาพร้อมกับพัดลม 5V ขนาดเล็กเพื่อช่วยระบายความร้อนของ CPU อย่างไรก็ตาม พัดลมเหล่านี้มักจะมีเสียงดังและหลายคนเสียบปลั๊ก 3V3 เพื่อลดเสียงรบกวน พัดลมเหล่านี้มักจะได้รับการจัดอันดับสำหรับ 200mA ซึ่งค่อนข้างสูงสำหรับตัวควบคุม 3V3 บน RPi โปรเจ็กต์นี้จะสอนวิธีควบคุมความเร็วพัดลมตามอุณหภูมิของ CPU ไม่เหมือนกับบทช่วยสอนส่วนใหญ่ที่ครอบคลุมหัวข้อนี้ เราจะไม่เพียงแค่เปิดหรือปิดพัดลมเท่านั้น แต่จะควบคุมความเร็วเหมือนที่ทำบนพีซีทั่วไปโดยใช้ Python
ขั้นตอนที่ 1: อะไหล่ที่จำเป็น
สำหรับโครงการนี้ เราจะใช้ส่วนประกอบเพียงไม่กี่อย่างที่มักจะรวมอยู่ในชุดอุปกรณ์อิเล็กทรอนิกส์สำหรับมือสมัครเล่นที่คุณสามารถหาได้ใน Amazon เช่นนี้
- Raspberry Pi ที่รัน Raspbian (แต่ควรทำงานร่วมกับ distribs อื่น ๆ)
- พัดลม 5V (แต่พัดลม 12V สามารถใช้กับทรานซิสเตอร์ที่ดัดแปลงและแหล่งจ่ายไฟ 12V ได้)
- ทรานซิสเตอร์ NPN ที่รองรับอย่างน้อย 300mA เช่น 2N2222A
- ตัวต้านทาน 1K
- 1 ไดโอด
เป็นทางเลือก ในการใส่ส่วนประกอบในเคส (แต่ยังไม่ได้ทำ):
- โปรโตบอร์ดชิ้นเล็ก ๆ เพื่อประสานส่วนประกอบ
- ความร้อนหดตัวขนาดใหญ่ เพื่อป้องกันบอร์ด.
ขั้นตอนที่ 2: การเชื่อมต่อไฟฟ้า
ตัวต้านทานสามารถเสียบได้ทั้งสองทาง แต่ระวังทิศทางของทรานซิสเตอร์และไดโอด แคโทดของไดโอดต้องเชื่อมต่อกับสาย +5V (สีแดง) และขั้วบวกต้องเชื่อมต่อกับสาย GND (สีดำ) ตรวจสอบเอกสารทรานซิสเตอร์ของคุณสำหรับพิน Emitter, Base และ Collector กราวด์ของพัดลมจะต้องเชื่อมต่อกับ Collector และกราวด์ของ Rpi จะต้องเชื่อมต่อกับ Emitter
เพื่อควบคุมพัดลม เราจำเป็นต้องใช้ทรานซิสเตอร์ที่จะใช้ในการกำหนดค่าตัวรวบรวมเปิด โดยการทำเช่นนี้ เรามีสวิตช์ที่จะเชื่อมต่อหรือถอดสายกราวด์จากพัดลมไปยังกราวด์ของราสเบอร์รี่ pi
ทรานซิสเตอร์ NPN BJT ดำเนินการขึ้นอยู่กับกระแสที่ไหลเข้าเกต กระแสที่จะอนุญาตให้ไหลจากตัวสะสม (C) ไปยังตัวปล่อย (E) คือ:
Ic = B * อิบ
Ic คือกระแสที่ไหลผ่านตัวสะสมอีซีแอล Ib คือกระแสที่ไหลผ่านฐานไปยังอีซีแอล และ B (เบต้า) เป็นค่าที่ขึ้นอยู่กับทรานซิสเตอร์แต่ละตัว เราประมาณ B = 100
เนื่องจากพัดลมของเราได้รับการจัดอันดับเป็น 200mA เราจึงต้องการอย่างน้อย 2mA ผ่านฐานของทรานซิสเตอร์ แรงตึงระหว่างฐานและตัวปล่อย (Vbe) ถือเป็นค่าคงที่ และ Vbe = 0, 7V ซึ่งหมายความว่าเมื่อเปิด GPIO เรามีตัวต้านทาน 3.3 - 0.7 = 2.6V เพื่อให้มี 2mA ผ่านตัวต้านทานนั้น เราจำเป็นต้องมีตัวต้านทาน สูงสุด 2.6 / 0.002 = 1300 โอห์ม เราใช้ตัวต้านทาน 1,000 โอห์มเพื่อลดความซับซ้อนและรักษาระยะขอบของข้อผิดพลาด เราจะมี 2.6mA ผ่านพิน GPIO ซึ่งปลอดภัยโดยสิ้นเชิง
เนื่องจากพัดลมนั้นเป็นมอเตอร์ไฟฟ้า จึงเป็นประจุไฟฟ้าเหนี่ยวนำ ซึ่งหมายความว่าเมื่อทรานซิสเตอร์หยุดนำกระแส กระแสในพัดลมจะยังคงไหลต่อไปในขณะที่ประจุอุปนัยพยายามรักษากระแสให้คงที่ ซึ่งจะส่งผลให้เกิดไฟฟ้าแรงสูงบนขากราวด์ของพัดลมและอาจทำให้ทรานซิสเตอร์เสียหายได้ นั่นเป็นเหตุผลที่เราต้องการไดโอดขนานกับพัดลมซึ่งจะทำให้กระแสไหลผ่านมอเตอร์อย่างต่อเนื่อง การตั้งค่าไดโอดประเภทนี้เรียกว่ามู่เล่ไดโอด
ขั้นตอนที่ 3: โปรแกรมควบคุมความเร็วพัดลม
ในการควบคุมความเร็วพัดลม เราใช้สัญญาณ PWM ของซอฟต์แวร์จากไลบรารี RPi. GPIO สัญญาณ PWM ได้รับการดัดแปลงมาอย่างดีเพื่อขับเคลื่อนมอเตอร์ไฟฟ้า เนื่องจากเวลาตอบสนองของสัญญาณนั้นสูงมากเมื่อเทียบกับความถี่ PWM
ใช้โปรแกรม calib_fan.py เพื่อค้นหาค่า FAN_MIN โดยเรียกใช้ในเทอร์มินัล:
หลาม calib_fan.py
ตรวจสอบค่าต่างๆ ระหว่าง 0 ถึง 100% (ควรอยู่ที่ประมาณ 20%) และดูว่าค่าต่ำสุดสำหรับพัดลมของคุณคือเท่าใด
คุณสามารถเปลี่ยนการติดต่อระหว่างอุณหภูมิและความเร็วพัดลมได้ที่จุดเริ่มต้นของรหัส ต้องมี tempSteps มากเท่ากับค่า speedSteps เป็นวิธีที่ใช้กันทั่วไปในเมนบอร์ด PC จุดเคลื่อนที่บนกราฟ 2 แกน Temp / Speed
ขั้นตอนที่ 4: เรียกใช้โปรแกรมเมื่อเริ่มต้น
ในการเรียกใช้โปรแกรมโดยอัตโนมัติเมื่อเริ่มต้น ฉันสร้างสคริปต์ทุบตีโดยใส่โปรแกรมทั้งหมดที่ฉันต้องการเปิดใช้ จากนั้นจึงเปิดสคริปต์ทุบตีนี้เมื่อเริ่มต้นด้วย rc.locale
- สร้างไดเร็กทอรี /home/pi/Scripts/ และวางไฟล์ fan_ctrl.py ไว้ในไดเร็กทอรีนั้น
- ในไดเร็กทอรีเดียวกัน ให้สร้างไฟล์ชื่อ launcher.sh และคัดลอกสคริปต์ด้านล่าง
- แก้ไขไฟล์ /etc/rc.locale และเพิ่มบรรทัดใหม่ก่อน "exit 0": sudo sh '/home/pi/Scripts/launcher.sh'
สคริปต์ launcher.sh:
#!/bin/sh#launcher.sh # ไปที่โฮมไดเร็กทอรี จากนั้นไปที่ไดเร็กทอรีนี้ จากนั้นรันสคริปต์ python จากนั้นย้อนกลับ homelocalecd /cd /home/pi/Scripts/sudo python3./fan_ctrl.py &cd /
ตัวอย่างเช่น หากคุณต้องการใช้กับ OSMC คุณต้องเริ่มต้นเป็นบริการด้วย systemd
- ดาวน์โหลดไฟล์ fanctrl.service
- ตรวจสอบเส้นทางไปยังไฟล์ python ของคุณ
- วาง fanctrl.service ใน /lib/systemd/system.
- สุดท้าย เปิดใช้บริการด้วย sudo systemctl enable fanctrl.service
วิธีนี้ปลอดภัยกว่า เนื่องจากโปรแกรมจะรีสตาร์ทโดยอัตโนมัติหากผู้ใช้หรือระบบฆ่า