我的树莓派的Pico测评进入最后一个测试了。在前几个测评中,我单独测试了IO,LCD1602,四线风扇,DS18B20温度传感器,现在我要将这几个分立的功能连接起来,Pico连接LCD1602显示片内温度,然后输出PWM信号控制风扇转数。做一个简单的温度控制系统。
硬件连接:
四线风扇的PWM引脚接到Pico的GP15。
LCD1602的R/W直接接GND。LCD驱动电压连接10K可调电阻后接GND。其他的管脚在程序中定义就可以。
图片:
软件:
import machine
import utime
from machine import Pin, PWM
#PWM
pwm = PWM(Pin(15))
# Set the PWM frequency to 25Khz.
pwm.freq(25000)
#CPU TEMP
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)
reading = sensor_temp.read_u16() * conversion_factor
temperature = 27 - (reading - 0.706)/0.001721
print('%
#LCD1602
rs = machine.Pin(0,machine.Pin.OUT)
e = machine.Pin(1,machine.Pin.OUT)
d4 = machine.Pin(2,machine.Pin.OUT)
d5 = machine.Pin(3,machine.Pin.OUT)
d6 = machine.Pin(4,machine.Pin.OUT)
d7 = machine.Pin(5,machine.Pin.OUT)
def pulseE():
e.value(1)
utime.sleep_us(40)
e.value(0)
utime.sleep_us(40)
def send2LCD4(BinNum):
d4.value((BinNum & 0b00000001) >>0)
d5.value((BinNum & 0b00000010) >>1)
d6.value((BinNum & 0b00000100) >>2)
d7.value((BinNum & 0b00001000) >>3)
pulseE()
def send2LCD8(BinNum):
d4.value((BinNum & 0b00010000) >>4)
d5.value((BinNum & 0b00100000) >>5)
d6.value((BinNum & 0b01000000) >>6)
d7.value((BinNum & 0b10000000) >>7)
pulseE()
d4.value((BinNum & 0b00000001) >>0)
d5.value((BinNum & 0b00000010) >>1)
d6.value((BinNum & 0b00000100) >>2)
d7.value((BinNum & 0b00001000) >>3)
pulseE()
def setUpLCD():
rs.value(0)
send2LCD4(0b0011)#8 bit
send2LCD4(0b0011)#8 bit
send2LCD4(0b0011)#8 bit
send2LCD4(0b0010)#4 bit
send2LCD8(0b00101000)
send2LCD8(0b00001100)
send2LCD8(0b00000110)
send2LCD8(0b00000001)
utime.sleep_ms(2)
while True:
setUpLCD()
rs.value(1)
for x in 'CPU TEMP:':
send2LCD8(ord(x))
for x in '%
send2LCD8(ord(x))
if temperature>20:
pwm.duty_u16(30000)
utime.sleep(2)
总结:
感谢EE给我们网友提供这次测评的机会,让我们第一时间体验了树莓派Pico的各个功能和特性,希望以后EE可以给我们提供更多的测评机会。希望EE以后越办越好。
引用: soso 发表于 2021-4-25 14:15 给个总结性发言呗,总体使用感受啥的 ,嘿嘿
好的,我总结一下。然后新发一个贴子。
引用: LeoMe 发表于 2021-4-26 17:02 看标题以为要做PID
风扇控制散热,阈值判断就可以了。不用PID吧?
引用: freebsder 发表于 2021-4-26 17:19 风扇看起来直接从IO出来的?
我以前的测评有PICO驱动四线风扇的详细说明,是PICO的IO连接四线风扇的PWM控制管脚。