類比實作Part5 –負溫度係數熱敏電阻(NTC)感測器
模組簡介
KY-013 Analog temperature sensor module
(參考https://easyeda.com/adrirobot/KY-013-Analog-temperature-sensor-module)
電路圖
程式列表
Blockly
Python
"""
ePy_ADC_NTC.py
# execfile("ePy_ADC_NTC.py")
EPY NTC(KY-013 Temperature-Sensor module)
-----------------
P0 S
3V3 VCC
GND GND
"""
from machine import KEY #獲取按鍵KEY庫
from machine import ADC
from machine import LED
# import needed modules
import math
import utime
# initialise variables
BALANCE_RESISTOR = 10000.0; # Measured value of on-board divider resistor
AbsoluteZero = 273.15
MAX_ADC = 4095.0
delayTime = 50 # in Sekunden
ADCVal = None
ledRgb = None
sensor = None
key_c = None
# temperature calculation function
def calcTemp(voltage):
temperature = math.log(BALANCE_RESISTOR * ((MAX_ADC / voltage - 1)));
temperature = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * temperature * temperature)) * temperature);
temperature = temperature - AbsoluteZero; # convert kelvin to celsius
return temperature
# Start Function
if __name__ == '__main__':
ledRgb = LED(LED.RGB)
sensor = ADC(0) #創建ADC物件
key_c = KEY(KEY.KEYC) #創建按鍵C
temp0=0
count=0
ADCValSum=0
while True:
ADCVal = sensor.read()
ADCValSum=ADCValSum+ADCVal
count=count+1
if(count>=16):
ADCValAvg=ADCValSum>>2
#read voltage-value and calculate temperature
temp0 = round(calcTemp(MAX_ADC-ADCValAvg), 1)
# print to console
print ("Current temperature is:", temp0, "'C")
if temp0 > 30:
ledRgb.rgb_write(1,255,0,0)
elif temp0 < 20:
ledRgb.rgb_write(1,0,0,255)
else:
ledRgb.rgb_write(1,0,255,0)
count=0
ADCValSum=0
if (key_c.value()) == 0:
break
utime.sleep_ms(delayTime)
sensor.deinit()
key_c.deinit()
ledRgb.off()
執行結果
常溫
高溫