樹莓派9層外殼自帶乙個散熱風扇,風扇是2針的,不能控制,插上電源後就一直全速運轉,晚上噪音很大。而且,一直執行,風扇壽命也會降低。
考慮加乙個電機驅動模組,使用pwm控制風扇電壓。cpu溫度如果低於一定程度,風扇可以直接停轉。自帶風扇標記說明5v電壓下只有0.16a電流,在**找到乙個體積小,**低的驅動模組drv8833,**育松電子電只賣2塊乙個,這家店物美價廉,商品很全。我買了乙個電烙鐵,排針,焊錫絲,乙個備用樹莓派散熱風扇,2個舵機,乙個二軸舵機雲台,乙個ad模組,幾個led模組,搖桿模組,總共只要50塊。drv8833 這是乙個雙路h橋,穩定工作電流可達1a,驅動散熱風扇綽綽有餘了。
模組預設排針是未焊接上的,需要準備乙個電烙鐵。我們不需要正反轉,所以把in3短接,這樣in4高電平時,out4輸出5v電源,out3接地,風扇轉動。絲印eep是休眠引腳(絲印標錯了,正確的是應該是ult標記,按商品頁面說明,調了半天),高電平時模組喚醒,我們的模組一直是工作狀態,所以可以通過短接j2 是休眠引腳永遠置高,節省乙個引腳。焊接好後,風扇紅線接out4,黑線接out3,反了是不轉的。vcc接樹莓派5v電源針,gnd接樹莓派gnd針。 in4接樹莓派板載12針。
配置檔案 tempconfig.ini
[config]
mintemp = 65
minduty = 50
maxtemp = 80
溫度小於65攝氏度時,12腳輸出pwm占空比為0.風扇停轉,大於65時,pwm占空比不為零,最小占空比是50%,到80度時占空比為100%,風扇全速執行。注意的是pwm只能調節電壓,電壓和轉速不是線性相關的,所以,要測試保證設定最小占空比時能夠驅動風扇轉動。太低的占空比,風扇不轉,只會造成發熱。
#!/usr/bin/env python3
import configparser
import rpi.gpio as gpio
from time import sleep
#風扇控制引腳
fanpin =
12#配置檔案路徑
configpath=
'/home/pi/program/python/tempconfig.ini'
fan =
none
#讀取配置檔案
defconfig
(m):
cf = configparser.configparser(
) cf.read(configpath)
m['mintemp']=
float
(cf.get(
'config'
,'mintemp'))
m['minduty']=
float
(cf.get(
'config'
,'minduty'))
m['maxtemp']=
float
(cf.get(
'config'
,'maxtemp'))
definit()
: gpio.setmode(gpio.board)
gpio.setup(fanpin,gpio.out)
global fan
fan=gpio.pwm(fanpin,
1000
)def
temp()
: f =
open
('/sys/class/thermal/thermal_zone0/temp')if
(not f is
none):
tempv =
float
(f.read())
return
(tempv/
1000
)else
:return
none
if __name__ ==
"__main__"
:print
('hello, world'
) init(
)#global fan
fan.start(50)
fan.changefrequency(80)
#print(temp())
m =config(m)
while
(true):
sleep(
0.5)
tempv = temp(
)#最小溫度 對應最小占空比,最大溫度對應100%占空比,占空比變化量線性相關溫度變化量
if(tempv>m[
'mintemp'])
: fan.changedutycycle(
int(m[
'minduty']+
(tempv-m[
'mintemp'])
/(m[
'maxtemp'
]-m[
'mintemp'])
*(100-m[
'minduty'])
))#小於最低溫度 風扇停轉
else
: fan.changedutycycle(
0)
設定後台服務 ,在lib/systemd/system/資料夾下sudo vim tempregulation.service
建立tempregulation.service 檔案
檔案內容
[unit]
description=tempregulation fan control server
[service]
#python指令碼絕對路徑全名稱
execstart=/home/pi/program/python/tempregulation.py
killmode=process
restart=on-failure
restartpreventexitstatus=255
type=******
[install]
wantedby=multi-user.target
命令列輸入systemctl start tempregulation.service
啟動後台服務
systemctl status tempregulation.service
檢視服務狀態,正常情況輸出
建立個死迴圈指令碼
while.py
while
true
: i=
0 i+=
1
啟動幾個程序python while.py,cpu溫度公升高,大於最小設定溫度時風扇開始轉動。功能實現。 樹莓派散熱風扇自動啟停
有張3b 的派,買了個殼子,裝了個風扇。但這風扇是不會停的一直很吵 那麼,樹莓派檢測晶元溫度實現自動啟停風扇!準備工作 1.三極體 電流能到200毫安以上 或者繼電器 不建議,太大了,又難看,三極體貼風扇上基本能看不著 2.焊接好風扇,gpio埠14。3.安裝node.js 6以上 4.編輯linu...
jetson nano 散熱風扇控制
2019.01.08修改 以下轉速控制說法不準確,jetson nano 有自己的晶元溫度與風扇轉速對應的曲線,開機時溫度未達到旋轉閾值所以不會旋轉,通過修改 sys devices pwm fan target pwm可以臨時改變目標轉速,但當溫度變化後仍然按照nano設定溫度曲線調速。如果需要強...
樹莓派風扇散熱自動控制
因為樹莓派風扇如果一直轉很吵的。在網上看到有人diy了一下,通過python 來實現風扇自動控制。我也嘗試做一下。需要新增乙個三極體。這裡就不說了。建立乙個 usr local src fan.py檔案。coding utf 8 讓風扇達到一定的溫度時再執行。import sys import ti...