[原创] 【树莓派Pico测评】六,Pico做的简单温度控制

tagetage   2021-4-25 10:21 楼主

 

我的树莓派的Pico测评进入最后一个测试了。在前几个测评中,我单独测试了IO,LCD1602,四线风扇,DS18B20温度传感器,现在我要将这几个分立的功能连接起来,Pico连接LCD1602显示片内温度,然后输出PWM信号控制风扇转数。做一个简单的温度控制系统。

 

硬件连接:

四线风扇的PWM引脚接到PicoGP15

LCD1602R/W直接接GNDLCD驱动电压连接10K可调电阻后接GND。其他的管脚在程序中定义就可以。

 

图片:

image-20210425102055-1.jpeg

软件:

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('%.1f' % temperature+"")

#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 '%.1f' % temperature:

        send2LCD8(ord(x))

    if temperature>20:

        pwm.duty_u16(30000)   

    utime.sleep(2)

 

总结:

感谢EE给我们网友提供这次测评的机会,让我们第一时间体验了树莓派Pico的各个功能和特性,希望以后EE可以给我们提供更多的测评机会。希望EE以后越办越好。

 

回复评论 (8)

给个总结性发言呗,总体使用感受啥的 ,嘿嘿

加油!在电子行业默默贡献自己的力量!:)
点赞  2021-4-25 14:15
引用: soso 发表于 2021-4-25 14:15 给个总结性发言呗,总体使用感受啥的 ,嘿嘿

好的,我总结一下。然后新发一个贴子。

点赞  2021-4-25 14:46
引用: tagetage 发表于 2021-4-25 14:46 好的,我总结一下。然后新发一个贴子。

谢谢:)

加油!在电子行业默默贡献自己的力量!:)
点赞  2021-4-25 14:47

看标题以为要做PID

点赞  2021-4-26 17:02

风扇看起来直接从IO出来的?

默认摸鱼,再摸鱼。2022、9、28
点赞  2021-4-26 17:19
引用: LeoMe 发表于 2021-4-26 17:02 看标题以为要做PID

风扇控制散热,阈值判断就可以了。不用PID吧?

点赞  2021-4-29 11:26
引用: freebsder 发表于 2021-4-26 17:19 风扇看起来直接从IO出来的?

我以前的测评有PICO驱动四线风扇的详细说明,是PICO的IO连接四线风扇的PWM控制管脚。

点赞  2021-4-29 11:27
引用: tagetage 发表于 2021-4-29 11:26 风扇控制散热,阈值判断就可以了。不用PID吧?

看见风扇用pwm控制的,就联想到PID了

有温度,能调速,那这方案就冲这PID去的

点赞  2021-5-10 09:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复