基于STM32单片机的智能电烤箱温度控制器(加定时)原理图PCB

STM32单片机智能电烤箱烤炉温度控制K型热电偶温度 STM32单片机智能电烤箱烤炉温度控制K型热电偶温度 关键词:STM32 k型热电偶 STM32 k型热电偶 MAX6675 STM32 智能电烤箱烤炉 阅读详情

功能介绍:
0.本系统采用STM32F103C8T6作为单片机
1.采用LCD1602可以实时显示烤箱的温度和时间
2.蜂鸣器和LED组成的声光报警系统,当烤箱时间达到时作为报警提示装置
3.设计WiFi模块作为无线通信,可与手机进行数据传输
4.温度检测模块采用的是max6675+热电偶,测量温度可达几百度
5.继电器+功率电阻来模拟烤箱加热的过程
6.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:
在这里插入图片描述

PCB:
在这里插入图片描述

主程序:

#define __MIAN_C
#include "main.h"

// 局部变量,用于保存转换计算后的电压值
CreatByte Flag;
enum _MODE_DF_ dispMode;

char dis[16];
uint16_t tempBuf = 0;
float f_temp = 0;
volatile uint16_t setIndex = 0;
volatile uint16_t setTemp = 50;
volatile int16_t timeLimit[2] = {5, 0}; //默认5分钟
volatile int16_t timeLimitBuf[2] = {5, 0}; //用于缓存上次的定时时间
PID_Calibration_Def PID_Calibration;
PID_State_Def PID_State;

int main(void)
{
    setFlag = 0;

    // 使用HSI,SYSCLK = 4M * RCC_PLLMul_x, x:[2,3,...16],最高是64MH
    HSI_SetSysClock(RCC_PLLMul_2); //使用内部8MHz晶振,并设置PLL输出为8MHz

    // 端口初始化
    GPIO_Config();
    GENERAL_TIM_Init();
    USART_Config();
    MAX6675_GPIO_Init();

    DelayMs(1000);
	printf("AT+CIPMUX=1\r\n"); //打开多连接
	DelayMs(1000);
	printf("AT+CIPSERVER=1,8080\r\n"); //建立服务 端口号为8080
	DelayMs(1000);

    Key_GPIO_Config();
    DelayMs(200);

    LCD_GPIO_Init();
    LCD_Init();
    LCD_Clear();
    DelayMs(200);

    Set_PID_Parameter();

    while (1)
    {

        if (refreshFlag == 1)
        {
            refreshFlag = 0;
            
            if (startFlag == 1) //开启加热
            {
                PID_State.actual = f_temp;  //当前温度
                PID_State.target = setTemp; //目标温度
                PID_State = PID_Iterate(PID_Calibration, PID_State);
                
                if ((f_temp > setTemp - 5) && (f_temp < setTemp + 5)) //在范围内
                {
                    BUZZER_OFF;
                }
                else
                {
                    BUZZER_ON;
                }
            }
            else
            {
                PID_State.output = 0;
                BUZZER_OFF;
            }
            
            if (setFlag == 0)
            {
                RefreshData();
                DispSet(setIndex);
            }
            
        }

        if (sendFlag == 1)
        {
            sendFlag = 0;
            TIM_ITConfig(GENERAL_TIM2, TIM_IT_Update, DISABLE);
            SendData();
            TIM_ITConfig(GENERAL_TIM2, TIM_IT_Update, ENABLE);
        }
        KeyProcess();
    }
}

void Set_PID_Parameter(void)
{
    PID_Calibration.kp = 20;
    PID_Calibration.ki = 2;
    PID_Calibration.kd = 10;

    PID_State.actual = 0;
    PID_State.target = 50;
    PID_State.integral = 0;
    PID_State.last_error = 0;
    PID_State.previous_error = 0;
    PID_State.output = 0;
}  

void RefreshData(void)
{
    uint8_t i;

    for (i = 0; i < 10; i++) //采集10次数据
    {
        //获取温度
        do
        {
            tempBuf = ReadMAX6675();
        } while (GetCurrentTemp(tempBuf));

        tempBuf &= 0x7ff8;
        tempBuf >>= 3;                                         //取D14~D3有效数据
        f_temp = f_temp + (float)tempBuf * 1023.75 / 4096 - 0; //减去合适的环境温度
        DelayMs(2);
    }
    f_temp = f_temp / 10;
    
    sprintf(dis, "Temp: %6.1f", f_temp);
    LCD_DispStr(0, 1, dis);
    LCD_DispOneChar(12, 1, 0xdf);
    LCD_DispOneChar(13, 1, 'C');
}

void SendData(void)
{
    printf("AT+CIPSEND=0,29\r\n"); //发送32位数据
    DelayMs(100);
    printf("SetTemp:%4d'C Temp:%6.1f'C\r\n", setTemp, f_temp); //串口发送
    DelayMs(100);
}

void DispSet(uint8_t setIndex)
{
    sprintf(dis, "S:%4d", setTemp);
    LCD_DispStr(0, 0, dis);
    LCD_DispOneChar(6, 0, 0xdf);
    LCD_DispOneChar(7, 0, 'C');

    sprintf(dis, "%02d:%02d", timeLimit[0], timeLimit[1]); 
    LCD_DispStr(9, 0, dis); //显示定时时间

    if (startFlag == 1) //开启状态
    {
        LCD_DispOneChar(15, 0, 'O');
    }
    else //关闭状态
    {
        LCD_DispOneChar(15, 0, 'C');
    }

    if (setIndex == 1)
    {
        LCD_SetCursor(10, 0, 1);
    }
    else if (setIndex == 2)
    {
        LCD_SetCursor(13, 0, 1);
    }
}
/*********************************************END OF FILE**********************/

实物演示视频:
https://www.bilibili.com/video/BV1D54y1Z793/

单片机毕业设计 这一期为大家整理了最近比较火爆的毕业设计的大全,其中包含了附参考文章+源码+PCB+原理图+实物,让你轻轻松松,一周搞定毕业设计或者课程设计!想要获取免费的参考资料,对其他单片机硬件设计感兴趣、有不明白的,可以徽biyezhan007 阅读详情

相关推荐

STM32微控制器在热电偶传感器应用中的性能评估

在实际应用中,我们将热电偶的一端连接到要测量的物体上,另一端连接到STM32微控制器上进行温度读取和处理。通过适当的硬件连接和软件编程,我们可以使用STM32来读取热电偶传感器的数据,并进行相应的温度计算和处理。通过比较STM32读取的热电偶温度和参考温度的差异来评估精度和准确度。通过测量热电偶产生的电压,可以计算出温度。在编写软件的过程中,我们需要使用STM32的库函数来配置和读取ADC,以及进行温度计算和处理。我们将涵盖STM32的特性、热电偶传感器的原理、硬件连接、软件编程以及性能评估的方法和指标。

weixin_66608063的博客 1842

STM32F103CBT6热电偶温度控制仪AD原理图+PCB文件.zip

STM32F103CBT6热电偶温度控制仪AD原理图+PCB文件,基于STM32F103方案的PID+PWM+OLED+K型热电偶温度控制仪,ALTIUM AD09设计的工程文件,2层板,包括完整的原理图PCB文件,可以做为你的产品设计参考。

基于STM32G030炉温控制器

STM32单片机实时采集锅炉温度,利用PID算法进行精确的炉温控制。 系统包括DS18B20温度传感器模块、热片(使用MOS管模块驱动)、按键模块、OLED显示模块;按钮设置温度,开始热维持在指定温度。核心的控制算法为PID算法,可以达到优于0.5°C的精确度。

基于STM32热电偶的仿真0-1000摄氏度,将一只灵敏度为0.3mv,°C的热电偶,C,C++

基于stm32的热电偶仿真程序,测温范围在0-1000摄氏度,精度1.0。

利用STM32G030单片机实现温湿度采集,并自动控制风机、热片,制冷片工作

利用STM32G030单片机实现温湿度采集,并自动控制风机、热片,制冷片工作

基于单片机电烤箱控温系统设计

*单片机设计介绍,基于单片机电烤箱控温系统设计

QQ2193276455的博客 2151

Stm32 Max6675 K型热电偶 采集温度值(代码+相关方法)

K型热电偶采集温度是新项目中的一个小需求,本来是用NTC热敏电阻的但是温度最高只能到200多,而且到两百多之后不是很灵敏了,所以改用了热电偶的办法,前面的部分是我搞热电偶的一些知识积累,和思路和遇到的问题可以给你们参考。 一、热电偶简介 热电偶是测量温度的一种元件,是一种无源传感器,测量时不需要外接电源。 常见的有上面几种,热电偶是两种不同的导体组成回路,两端相连接的温度不同,一端温度为T,称为热端;一端温度为T0,称为冷端。两种不同成分的导体两端接合形成回路,当两个接合点的温度不同时,回路中.

那可真是太开心了的博客 3万+

STM32 调试TM7711驱动原理图驱动代码

片内数字滤波器处理调制器的输出信号,通过通信口发命令可调节滤波器的截止点和输出更新速率,从而对数字滤波器的第一个陷波进行编程。项目主要是使用TM7711测量热电偶的温度,温度范围要求比较大-99-999读,这里就对ADC的精度要求比较高。STM32的ADC精度不够,才12bit,TM7711的精度可以,可以提供单通道 24bit 高精度 ADC。这里只是针对使用到的信息,做一些切割,如果想看详细的数据手册,还是下载一份TM7711的datasheet。TM7711 是全差分模拟输入,带有一个基准输入。

大牛攻城狮的专栏 6717

基于STM32制作T12烙铁

当使用STM32来制作T12型号的烙铁,并集成LCD12864显示器时,你将进入一个令人兴奋的嵌入式系统开发领域。这个项目将涉及硬件和软件的复杂工作,以实现一个功能强大的烙铁控制器。首先,你需要正确连接STM32微控制器和LCD12864显示器。这包括连接数据线、控制线和电源线,确保硬件连接正确,以便实现数据的传输和显示的功能。接下来,你需要编写适用于STM32的底层驱动程序,以与LCD12864进行通信。这可能需要使用SPI或其他通信协议,具体取决于你的硬件和LCD的规格。

4565

使用STM32F103C8T6驱动MAX6675读取热电偶数据

1、MAX6675博主是自己焊接的,因为器件很精密,要求焊接温度建议在300℃下不超过15秒。焊接过热可能会导致芯片损坏。spi的部分不知道为什么使用硬件读不出来数据,这里我用的软件模拟,也就是说你可以吧管脚设置到任何一个你需要的管脚上。博主在网上找到了一些代码支持,但是或多或少的存在一些问题,博主在这里直接上代码了,需要的自己研究就可以了,亲测可用。3、一定要对准6675的时钟来,频率不能超过2M,只能慢不能快。欢迎在文章下讨论分享问题,博主虽然也是小白,但也会尽力的帮助解决问题的~~

m0_73001789的博客 5895

基于STM32单片机的K型热电偶测温(Proteus仿真+程序)

17、基于STM32单片机的K型热电偶测温

bxy415655001的博客 5535

基于STM32的高精度温度测控系统-原理图设计

一款24位高精度AD温度采集电路,基于STM32,运行UCOS,LabView上位机通信,采集PT100温度

嵌入式学习记录站点 3万+

STM32新手入门教程:T型贴片式热电偶温度传感器的使用

本例程采用开发板、温度传感器使用T型贴片式热电偶温度传感器热电偶型温度变送器模块电流转电压模块;STM32F103C8T6:在模拟数字转换方面有2路12位ADC转换单元(ADC1、ADC2),ADC1和ADC2分别有10个转换头通道,分别为ADC12_IN1-ADC12_IN9,分别对应单片机上的PA0-PA7、PB0-PB1共10个引脚。模拟量输入为0-3.3V电压信号,对应的数字转换范围是0-4095(2的12次方)。T型贴片式热电偶温度传感器:输出0-几十mV。

weixin_47658879的博客 2198

STM32电偶测温实现

标准热电偶测温曲线实现

alone4together的博客 549

111-基于stm32单片机高低温恒温恒湿试验箱自动控制系统Proteus仿真+程序源码

资料编号:111一:功能介绍1、采用stm32单片机+LCD1602+DHT11温湿度传感器+按键+电机,制作一个单片机高低温恒温恒湿试验箱自动控制系统;2、通过按键设置温度和湿度的阈值,通过DHT11传感器采集温湿度;3、当采集温度大于阈值,开启制冷模式,当温度小于设置温度,开启热模式,当采集湿度大于阈值,开启排气模式,当湿度小于设置湿度,开启湿模式;4、LCD1602显示实时温湿度和按键设...

STM32_C51的博客 1505
上一篇: 基于51单片机的温室大棚土壤湿度检测智能语音灌溉通风系统proteus仿真原理图PCB
下一篇: 基于51单片机的高速汽车列车汽车速度测量及报警装置proteus仿真原理图PCB
极寒钛科技
博客等级 码龄6年 826粉丝 161原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值