首页 > 其他分享 >单片机 温度调控 大功率设备调整PWM输出

单片机 温度调控 大功率设备调整PWM输出

时间:2022-10-31 21:02:56浏览次数:46  
标签:Management old AD Temp 单片机 xdata 大功率 PWM 温度


计算式:PWM_Out=100-(75-50)/0.223=10;//50–>正常温度 75–当前温度 通过计算75°时,PWM调整为10%

/*热敏管理任务*/
xdata uint8_t CoefficientVaue = 100; //温度调节值%
HeatValue = AD_to_TEMP(Config_GMTemp_CH); //读取温度值
Temperture_Management(HeatValue, &CoefficientVaue); //温度管理
#include "GM_Temp.h"
#include "math.h"

xdata uint8_t CoefficientVaue = 100; //温度调节值%
xdata float Management_old = 0; //上次温度值
xdata float HeatValue = 30; //温度控制

/*********************************************
函数名:Temperture_Management
功 能:温度管理 根据对应温度控制PWM总体百分比
形 参:Management--当前温度 CoefficientVaue--温度调整值
返回值:
备 注:
作 者:薛建强
时 间:2019/06/06
**********************************************/
void Temperture_Management(const float Management, uint8_t *pCoefficientVaue)
{
static uint8_t tiaozheng = 0;
if (Management >= MAX_Temp_AD || Management <= RT_Temp_AD) //温度到80°极限了 || 热敏电阻开路
{
*pCoefficientVaue = 5; //占空比*0.05
Management_old = Management;
return;
}
if (Management <= Normal_Temp_AD) //<50°恢复正常
{
*pCoefficientVaue = 100;
Management_old = Management;
return;
}
else if (Management > High_Temp_AD) //>75°
{
*pCoefficientVaue = 10; //占空比*0.1
Management_old = Management;
}
else if (Management >= Median_Temp_AD) //判断是否达到50°
{
if (Management_old == 0) //第一次上电,温度过高
{
*pCoefficientVaue = 100 - (fabs(Management - Median_Temp_AD) / 0.223);
Management_old = Management;
return;
}
else if (Management_old != Management && fabs(Management - Management_old) >= 0.2)
{
tiaozheng = 1; //开始动态调节温度
}
}
/*动态调整温度 100-(75-50)/0.278*/
if (tiaozheng == 1)
{
if (Management <= High_Temp_AD && Management >= Normal_Temp_AD) //假设在50-75度之间
{
*pCoefficientVaue = 100 - (fabs(Management - Median_Temp_AD) / 0.223);
// printf("T-%2.2f° Co-%d old-%2.2f\n", HeatValue, (uint16_t)CoefficientVaue, Management_old);
Management_old = Management;
tiaozheng = 0;
}
}
}
#ifndef __TEMPGM_H
#define __TEMPGM_H
/* -----------------------------------------头文件-----------------------------------------*/
#include "main.h"

/* -----------------------------------------宏定义-----------------------------------------*/
// <o> 极限高温值(单位:℃)
#define MAX_Temp_AD 80
// <o> 高温临界值(单位:℃)
#define High_Temp_AD (75)
// <o> 高温中间值(单位:℃)触发值
#define Median_Temp_AD 55
// <o> 正常临界值(单位:℃)
#define Normal_Temp_AD 54
// <s.3> 热敏电阻开路值(单位:℃)
#define RT_Temp_AD atoi("-40")
/* -----------------------------------------结构体定义-------------------------------------*/

/* -----------------------------------------全局变量定义-----------------------------------*/
extern xdata uint8_t CoefficientVaue;
extern xdata float Management_old;
extern xdata float HeatValue;

/* -----------------------------------------应用程序---------------------------------------*/

void Temperture_Management(const float Management,uint8_t *pCoefficientVaue);
#endif


标签:Management,old,AD,Temp,单片机,xdata,大功率,PWM,温度
From: https://blog.51cto.com/xuejianqiang/5811269

相关文章

  • [单片机框架][driver层][ioctl] MCU模拟Linux注册驱动
    概念ioctl是设备驱动程序中设备控制接口函数,一个字符设备驱动通常会实现设备打开、关闭、读、写等功能,在一些需要细分的情境下,如果需要扩展新的功能,通常以增设ioctl()命......
  • 单片机 STM32 HAL GSM通讯 SIM800L
    /*************笔记****************1、本SIM800L模块采用huart3(串口3),然后huart1(串口1)作为调试输出。2、CudeMX配置huart3:----------------------------------------......
  • 单片机 STM32 HAL PCF8574 例子代码
    #include"extgpio.h"#include"pcf8574.h"#include"74hc595.h"/******************笔记:1、X输入Y输出2、NPN(箭头向下)高电平时导通,PNP(箭头向上)低电平时导通;3、PCF8574......
  • 单片机 STM32 HAL IO扩展 74HC595 例子代码
    #include"74hc595.h"/******************功能:定义HC595的功能引脚备注:变更引脚,由MX配置完成*******************/constT_HC595_PINhc595={.sck_port=HC595_......
  • 单片机 N76E003 EC12 编码器
    sbitEC_B=P0^0;//编码器P0.0端口sbitEC_A=P1^3;//编码器P1.3端口staticuint8_tEC_A_Val=0,EC_B_Val=0;staticuint8_tEC_A_old=0,EC_B_ol......
  • N76E003 单片机 IIC 软模拟
    /*-----------------------------------------头文件-----------------------------------------*/#include"iic.h"/*-----------------------------------------宏定义-......
  • 单片机 ADXL346 IIC通讯
    ​​IIC协议链接​​/*-----------------------------------------头文件-----------------------------------------*/#include"ADXL346.h"#include"math.h"/*--------......
  • [单片机框架][os层] RTX5 中间件 公共函数
    KeilRTX5是一种免版税、确定性、全功能的实时操作系统,它实现了CMSIS-RTOSAPIv2,这是一种适用于基于Cortex-M处理器的设备的通用RTOS接口。功能包括定期激活定时器功......
  • [单片机框架][bsp层][cx32l003][bsp_tim] TIM定时器配置和使用
    TIM1简介高级控制定时器(TIM1)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输......
  • [单片机框架][bsp层][cx32l003][bsp_crc] 硬件CRC配置和使用
    循环冗余校验(CRC)计算单元是根据固定的生成多项式得到任意字节数据的CRC计算结果。在应用中,CRC技术主要应用于核实数据传输或者数据存储的正确性和完整性。本模块算法......