Commit 8232ede4 authored by YONG-LIN SU's avatar YONG-LIN SU

NTC Contorl Test

parents
import time
import pigpio
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008
import math
SPI_PORT = 0
SPI_DEVICE = 0
SIGNAL_CHANNEL = 0
PWM_LED_PIN = 18
PWM_FREQ = 800
mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
pi = pigpio.pi()
def GetTemperature(data):
Rp=10000
T2=273.15+25
Bx=3950;
Ka=273.15
#vol = data * (3.3/4096)
vol = (data * 3.3) / float(1023)
Rt=(3.3-vol) * 1000/vol
print(Rt)
if((Rt/Rp)<0):
return -1
else:
return 1/(1/T2+math.log(Rt/Rp)/Bx)-Ka+0.5
while True:
data = mcp.read_adc(SIGNAL_CHANNEL)
#print(data)
if(data!=0 and data!= 1023):
volts = (data * 3.3) / float(1023)
temp = GetTemperature(data)
#temp = 0
print(data,volts,temp)
time.sleep(0.1)
import spidev
import time
import os
import math
# open(bus, device) : open(X,Y) will open /dev/spidev-X.Y
spi = spidev.SpiDev()
spi.open(0,1)
# Read SPI data from MCP3008, Channel must be an integer 0-7
def ReadADC(ch):
if ((ch > 7) or (ch < 0)):
return -1
adc = spi.xfer2([1,(8+ch)<<4,0])
print(adc)
#data = ((adc[1]&3)<<8) + adc[2]
data = ((adc[1]+3)<<8) + adc[2]
return data
# Convert data to voltage level
def ReadVolts(data,deci):
volts = (data * 3.3) / float(1023)
volts = round(volts,deci)
return volts
def GetTemperature(data):
Rp=10000
T2=273.15+25
Bx=3950;
Ka=273.15
vol = data * (3.3/4096)
Rt=(3.3-vol) * 10000/vol
if((Rt/Rp)<0):
return -1
else:
return 1/(1/T2+math.log(Rt/Rp)/Bx)-Ka+0.5
count = 0
while(count < 10):
data = ReadADC(0)
vol = ReadVolts(data,2)
#temp = GetTemperature(64)
#temp = 0
print(data,vol)
count+=1
time.sleep(0.5)
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_MCP3008
import math
import RPi.GPIO as GPIO
SPI_PORT = 0
SPI_DEVICE = 0
SIGNAL_CHANNEL = 0
PWM_LED_PIN = 18
PWM_FREQ = 800
mcp = Adafruit_MCP3008.MCP3008(spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE))
GPIO.setmode(GPIO.BCM)
relay_port = 21
relay = GPIO.setup(relay_port,GPIO.LOW)
def GetTemperature(data):
Rp=10000
T2=273.15+25
Bx=3950;
Ka=273.15
#vol = data * (3.3/4096)
vol = (data * 3.3) / float(1023)
Rt=(3.3-vol) * 1000/vol
print(Rt)
if((Rt/Rp)<0):
return -1
else:
return 1/(1/T2+math.log(Rt/Rp)/Bx)-Ka+0.5
while True:
data = mcp.read_adc(SIGNAL_CHANNEL)
#print(data)
if(data!=0 and data!= 1023):
volts = (data * 3.3) / float(1023)
temp = GetTemperature(data)
if(round(temp,2) >40.0):
GPIO.output(relay_port,GPIO.LOW)
elif(round(temp,2) < 39.9):
GPIO.output(relay_port,GPIO.HIGH)
#temp = 0
print(data,volts,temp)
time.sleep(0.1)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment