问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32 51单片机设计半导体制冷片温控系统详解

创作时间:
作者:
@小白创作中心

STM32 51单片机设计半导体制冷片温控系统详解

引用
CSDN
1.
https://blog.csdn.net/qq_38295600/article/details/143760827

随着现代工业、医疗和科研领域对温度控制精度的要求日益提高,基于STM32与51单片机的半导体制冷片温控设计应运而生。本文将探讨如何通过PID控制算法和模糊自适应控制方法,实现对TEC的精确温度控制。

前言

基于STM32与51单片机的半导体制冷片温控设计,旨在为相关领域提供一种高效、可靠的解决方案。半导体制冷片(TEC)以其独特的帕尔贴效应原理,能够实现制冷和加热的双重功能。然而,TEC的温控系统在设计上存在一定的挑战,如温度调节过程中的惯性大、环境温度影响显著等。为了克服这些挑战,本文将采用PID控制算法,并结合模糊自适应控制方法,实现对TEC的精确温度控制。

硬件设计部分将包括温度传感器选型、STM32和51单片机的电路设计、TEC驱动电路设计等;软件设计部分则将重点介绍PID控制算法和模糊自适应控制方法的实现,以及温度采集、控制输出和通信等模块的软件编程。

一、本设计主要实现哪些很“开门”功能?

  1. 大功率供电,实现零度以下制冷
  2. 实时温控检测,PID温控算法程序
  3. 蓝牙APP调节温度控制发送指令执行
  4. 多模式控制,手动模式与自动模式
  5. PID温控算法实现实时温控
  6. 半导体制冷器设计,与散热设计

二、电路设计原理图

  1. 通过STM32F103C8T6单片机作为系统主控,最小系统电路是整个电路的核心。
  2. 设计了大功率稳定制冷机系统
  3. 使用无线蓝牙模块,模块与单片机进行通讯解析串口连接。
  4. 通过DS18B20防水模块采集温度数据,模块与单片机采样单总线通讯连接
  5. 使用PID算法,程序内部运行
  6. 通过继电器做电源保护设置,模块与单片机使用数据总线控制连接
  7. 使用风扇进行散热,模块与单片机通过MOS管控制连接

三、实物设计图

四、程序源代码设计

#include "stm32f10x.h"  
#include "delay.h"  
#include "sys.h"  
#include "usart.h"  
#include "LED.h"  
#include "ds18b20.h"  

int main(void)  
{  
    u16 t = 0;//时间  
    u8 i = 0;  
    u8 F_mode = 1;//默认自动模式  
    u8 maxtemp = 0,mintemp = 0;  
    u8 tempdate[] = {30,20};//默认温度达到30度开启制冷,20度关闭制冷  
    u16 len = 0;  
    float temperature;  
    float Temp = 0;  

    delay_init(); //延时函数初始化  
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级  
    uart_init(9600); //串口初始化为9600,语音播报  
    Relay_Init();  
    LED_Init();  
    DS18B20_Init(); //温度采集初始化  
    delay_ms(800);  
    temperature = DS18B20_Get_Temp();//读取温度值  
    delay_ms(800);  

    while(1)  
    {  
        if(USART_RX_STA&0x8000)  
        {  
            len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度  
            if(len>3)  
            {  
                maxtemp = (USART_RX_BUF[0]-'0')*10 + (USART_RX_BUF[1]-'0');  
                mintemp = (USART_RX_BUF[2]-'0')*10 + (USART_RX_BUF[3]-'0');  
                tempdate[0] = maxtemp;  
                tempdate[1] = mintemp;  
                USART_RX_STA=0;  
            }  
        }  

        temperature = DS18B20_Get_Temp();//读取温度值  
        Temp = temperature/10;//计算温度值,准备蓝牙传输数据  

        //自动模式  
        if(Temp>=tempdate[0]&&F_mode)  
        {  
            RelayContro = 1;//当温度高达30度开启制冷  
        }  
        else if(Temp<=tempdate[1]&&F_mode)  
        {  
            RelayContro = 0;//关闭制冷  
        }  

        if(F_receive == 1)  
        {  
            F_receive = 0;  

            //默认自动模式  
            if(Res == 0xff)  
            {  
                i++;  

                //手动模式  
                if(i == 1){F_mode = 0;LED = 1;}  

                //自动模式  
                else if(i == 2){i= 0;F_mode = 1;LED = 0;}  
            }  

            else if(Res == 0xfe)//手动开启制冷  
            {  
                if(F_mode == 0){ RelayContro = 1;}  
            }  

            else if(Res == 0xfc)//手动关闭制冷  
            {  
                if(F_mode == 0){ RelayContro =0;}  
            }  
        }  

        if(t==200)  
        {  
            t = 0;  
            printf("Temp:%.1f---maxtemp:%d mintemp:%d\r\n",Temp,tempdate[0],tempdate[1]);  
        }  

        delay_ms(5);  
        t++;  
    }  
}  

五、获取资料内容

资料获取链接:https://pan.baidu.com/s/1hv8MSqt4AmWzFdYzM_D7Eg
提取码:u2n9

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号