51单片机的PID水温控制器设计

2023-11-08

硬件方案

        PID水温控制器主要以51单片机系统进行温度采集与控制;温度信号由数字温度传感器DS18B20采集,主控器主动获取传感器温度值,通过PID算法,与设置温度进行计算,输出继电器的控制状态,并在LCD显示屏进行显示。

        整体硬件主要有51单片机及最小系统(晶振电路、复位电路)、LCD1602液晶显示模块、DS18B20温度传感器采集电路、加热继电器电路、蜂鸣器报警模块、LED指示灯电路、独立按键电路;整体原理图如下:

         本设计的设计功能为:

  • 采用PID控制算法,对水温进行实时控制;
  • 设定容器内水的温度在:水温--90°;自动平衡,容器内水温误差0.5°;
  • PID算法容器内水温上升或下降10°时间不超过10min;
  • 设有三个按键,1为复位按键,2为目标水温的加,3为目标水温的减;

软件代码

void main()//主函数
{
    init();//初始化函数
    pid_init (&temp_PID);
    InitTimer0(); 
    temp_PID.Proportion =120;              //  Set PID Coefficients 
    temp_PID.Integral   =5; 
    temp_PID.Derivative =2; 
    
    
    while(1)
    {
        temp_control();//控制按键函数
        if(time_value<PWM)      
        { heatting=1;beep=1;LED1=0;LED2=1;}else { heatting=0;beep=0;LED1=1;LED2=0;}
        
        if(time_value==30)        
        {
        
        display_real_tenp(temp_m1);
        }//显示函数    
        if(time_value==60)      
            temp_m=unnormal_proccessing(temp_m1);//温度转换函数*100
         if(time_value==100)
         {
           
           if(set_temp-temp_m>250)
           {
               PWM=PWM_MAX;
           }
           else
           {
               PWM_I=pid_calc(&temp_PID,temp_m);
               PWM  =PWM_I ;
               if( PWM>=100)
                 PWM=100;
               else if(PWM<=PWM_MIN)  
                 PWM=PWM_MIN;
               }
           
          
          }
          if(time_value==120)
          {        
                PWM_P=PWM/2;
                LcdWriteCom(0x80+0X40+0x0C);
                LcdWriteData('0'+PWM_P/100);
                 LcdWriteCom(0x80+0X40+0x0D);
                LcdWriteData('0'+PWM_P%100/10);
                LcdWriteCom(0x80+0X40+0x0E);
                LcdWriteData('0'+PWM_P%10);
         }
    }        
}

链接:https://pan.baidu.com/s/1seC-vTipz0MS47sNhVw_GA?pwd=0rgw 
提取码:0rgw

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机的PID水温控制器设计 的相关文章

随机推荐

  • STM32F103ZET6【HAL函开发】STM32CUBEMX------3.USART串口进行数据的接收的发送

    目的 1 开机后 向串口1发送 hello world 2 串口1收到字节指令 0xA1 打开LED1 发送 LED1 Open 3 串口1收到字节指令 0xA2 关闭LED1 发送 LED1 Closed 4 在串口发送过程中 打开LED
  • python3 pip ipython 安装

    1 安装Python3 6 安装准备 mkdir usr local python3 wget no check certificate https www python org ftp python 3 6 0 Python 3 6 0
  • readis windows servrer 搭建与Java客户端的连接

    1 首先下载redis redis 2 0 2 zip 32 bit 解压 从下面地址下 http code google com p servicestack wiki RedisWindowsDownload 看到下面有redis 2
  • 《SegFormer:Simple and Efficient Design for Semantic Segmentation with Transformers》论文笔记

    参考代码 SegFormer 1 概述 介绍 这篇文章提出的分割方法是基于transformer结构构建的 不过这里使用到的transformer是针对分割任务在patch merge self attention和FFN进行了改进 使其更
  • 计算机内存取证之BitLocker恢复密钥提取还原

    BitLocker是微软Windows自带的用于加密磁盘分卷的技术 通常 解开后的加密卷通过Windows自带的命令工具 manage bde 可以查看其恢复密钥串 如下图所示 如图 这里的数字密码下面的一长串字符串即是下面要提取恢复密钥
  • 华为服务器如何设置网站dns,设置为正确的DNS 服务器地址

    设置为正确的DNS 服务器地址 内容精选 换一换 域名的DNS服务器定义了域名用于解析的权威DNS服务器 通过华为云注册成功的域名默认使用华为云DNS进行解析 详细内容 请参见华为云DNS对用户提供域名服务的DNS是什么 若您选择非华为云D
  • UE4缓存路径修改

    最简单的办法就是通过Evenyting搜索 Engine Config BaseEngine ini 找到你要修改的引擎对应文件 将 ENGINEVERSIONAGNOSTICUSERDIR DerivedDataCache修改为 GAME
  • ORA-00257:archiver error解决办法*

    ORA 00257 archiver error解决办法 出现ORA 00257错误 空间不足错误 通过查找资料 绝大部分说这是由于归档日志太多 占用了全部的硬盘剩余空间导致的 通过简单删除日志或加大存储空间就能够解决 一 更改归档模式 目
  • 为什么C++有多种整型?

    C 中有多种整型是为了满足不同的需求 提供更灵活和高效的整数表示方式 不同的整型具有不同的字节大小 范围和精度 可以根据应用的需求选择合适的整型类型 以下是一些原因解释为什么C 有多种整型 内存和性能优化 不同的整型在内存中占用的空间不同
  • 【读点论文】YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors新集合体

    YOLOv7 Trainable bag of freebies sets new state of the art for real time object detectors Abstract YOLOv7在5 FPS到160 FPS的
  • 实时监控MySQL慢查询

    背景 为了优化SQL 我们首先需要发现有问题的SQL语句 网上诸多教程都在教你使用诸如mysqldumpslow pt query digest这类工具分析MySQL慢查询日志 然而这一系列的工具都存在一个致命的缺陷 无法实时监控 而说起实
  • 如何使用HuggingFace训练Transformer

    文章目录 HuggingFace Transformers Tokenizer Model 下游任务 HuggingFace Transformers 使用BERT和其他各类Transformer模型 绕不开HuggingFace提供的Tr
  • 10.高光反射Blinn

    高光反射的公式 Specular 直射光 pow cos 高光的参数 是反射光方向和视野方向的夹角 由图像看出高光参数可控制光的可视范围 逐顶点的高光反射 Upgrade NOTE replaced mul UNITY MATRIX MVP
  • 基于肌电传感器得打印断缺手指得代码讲解③ 4.2

    1 关于新增校准代码 for int i 0 i lt 5000 i sensorValue analogRead A0 delay 1 Serial println sensorValue if biggest data
  • Python在线编辑器

    Python是一种高级编程语言 可以用来编写各种类型的应用程序 包括网站 桌面应用程序 游戏 人工智能等等 在Python在线编辑器上 您可以轻松地编写 运行和共享您的Python代码 以下是一些常见的Python在线编辑器 Pythona
  • 已知空间一点到另外两点直线的距离

    转自 http www cnblogs com clarkustb archive 2008 11 04 1326500 html 已知空间一点到另外两点直线的距离 设空间中的三点为M1 M2 M3 分别用矢量a b表示方向向量M1M2和M
  • 哈希(4) - 求两个链表的交集以及并集

    目录 1 简单方法 2 使用归并排序 3 使用哈希 给定两个链表 求它们的交集 intersection 以及并集 union 用于输出的list中的元素顺序可不予考虑 例子 输入下面两个链表 list1 10 gt 15 gt 4 gt
  • Java学到什么程度才能叫精通?

    Java学到什么程度才能叫精通 全文分为 基础知识和进阶知识 下文java必会知识附答案 并为大家整理了一个pdf 所有的知识点和答案都在pdf里面 必会知识点及其答案 Java基础知识 https blog csdn net qq 166
  • Python中Tkinter解决button的command无返回值问题

    Tkinter是什么 Tkinter是Python的标准GUI库 Python使用Tkinter可以快速地创建GUI应用程序 由于Tkinter属于Python标准库 就不需要使用pip安装 直接导入使用即可 基础操作 见这篇文章 写的挺好
  • 51单片机的PID水温控制器设计

    硬件方案 PID水温控制器主要以51单片机系统进行温度采集与控制 温度信号由数字温度传感器DS18B20采集 主控器主动获取传感器温度值 通过PID算法 与设置温度进行计算 输出继电器的控制状态 并在LCD显示屏进行显示 整体硬件主要有51