当前位置: 首页 > news >正文

电子烟开发【恒压、恒有效算法】

恒压算法

pwm是通过软件模拟的 pwm满值运行是250全占空比

#define D_TARGET_AVERAGE_VOLTAGE  3500
//R_ADC1_Vout 	:发热丝两端AD值
//R_ADC_FVR 	:电池电压AD值
//FVR_VOLTAGE 	:电池AD参考电压 满电值AD
//R_Smk1Duty  	:最后得出的占空比
void CAL1_ConstantVoltage(void)
{R_Temp32 = (vu32)D_TARGET_AVERAGE_VOLTAGE * 250 * R_ADC_FVR;	//电压* duty =3.5V;		R_Temp32 = R_Temp32 / R_ADC1_Vout;R_Temp32 = R_Temp32/FVR_VOLTAGE;if(R_Temp32 > 250) R_Smk1Duty = 250;else	R_Smk1Duty = R_Temp32 & 0xff;
}

恒有效值表对应AD值

AD值 = (功率 * 负载阻值 * (电池参考电压)^2 ) 开方
=SQRT(A9988988B9)
=SQRT(A9
10001000B9)
在这里插入图片描述

恒有效算法

//VoltageTab 	:恒有效对应输出功率AD值
//R_Power_Num	:输出的功率 1-30W
//R_ADC1_Vout 	:发热丝两端AD值
//R_ADC_FVR 	:电池电压AD值
//FVR_VOLTAGE 	:电池AD参考电压 满电值AD
//R_Smk1Duty  	:最后得出的占空比
const vu16 VoltageTab[31] = {0,// 699 ,988 ,1210,1397,1562,1711,1848,1976,2096,2209,		//1-10w -0.5R// 2317,2420,2519,2614,2706,2794,2880,2964,3045,3124,		//11-20w -0.5R// 3201,3277,3350,3423,3493,3562,3630,3697,3762,3827		//21-30w -0.5R699 ,988 ,1210,1397,1562,1711,1848,1976,2096,2079,		//1-10w -0.5R2190,2300,2400,2500,2585,2664,2730,2814,2900,2985,		//11-20w -0.5R3061,3137,3210,3285,3353,3562,3630,3697,3762,3827		//21-30w -0.5R};void ConstantValidVoltage(void)
{R_Temp32 = (vu32)R_ADC_FVR * VoltageTab[R_Power_Num];R_Temp32 = R_Temp32 / R_ADC1_Vout;R_Temp32 = R_Temp32 << 8;R_Temp32 = R_Temp32 / FVR_VOLTAGE;R_Temp32 = R_Temp32 * R_Temp32;R_Temp32 = R_Temp32 >> 8;if (R_Temp32 > 250)R_Smk1Duty = 250;elseR_Smk1Duty = R_Temp32 & 0xff;
}

定时器处理

此函数8ms打开一次mos管 一个占空比周期为8ms 通过控制Timer2定时器去关mos实现调整mos管输出占空比实现调整发热丝输出

	SMOKE1_MOS_ON; 
//定时器2 通道1R_Smk1Duty_Valid = ((vu16)R_Smk1Duty + R_Smk1Duty_Valid) >> 1;	// re-initial TIMER2// re-initial TIMER2PR2H = R_Smk1Duty_Valid >> 7;PR2L = (R_Smk1Duty_Valid & 0x7F) << 1;TMR2H = 0;TMR2L = 0;TMR2IF = 0;TMR2IE = 1;

中断函数处理

//低优先级中断服务函数
void interrupt low_priority ISR_l (void)
{if(TMR2IE == 1 && TMR2IF == 1)     //一个PWM周期关MOS时间到;{                    TMR2IF = 0;CMP1IE = 0;//关比较器中断TMR2IE = 0;//禁止中断SMOKE1_MOS_OFF;}
}
http://www.lryc.cn/news/359857.html

相关文章:

  • 基于Open3D的点云处理22-非阻塞可视化/动态可视化
  • C++面试题其一
  • CentOS7某天的samba服务搭建操作记录(还没成功)
  • Qt Demo:基于TCP协议的视频传输Demo
  • 内存管理【C++】
  • D3D 顶点格式学习
  • gmssl vs2010编译
  • 容器化部署gitlab、jenkins,jenkins应用示例
  • 基于STM32的轻量级Web服务器设计
  • 用r语言处理 Excel数据当中的缺失值方法
  • AWS 高防和阿里云高防深度对比
  • ctfshow web 月饼杯II
  • 「前端+鸿蒙」核心技术HTML5+CSS3(二)
  • unity接入live2d
  • 练习题-17
  • 乐高小人分类项目
  • 个人关于ChatGPT的用法及建议
  • 神经网络的工程基础(二)——随机梯度下降法|文末送书
  • 常见的几种编码方式
  • ubuntu移动硬盘重命名
  • VUE框架前置知识总结
  • 张宇1000题80%不会?别急,这个方法肯定有用!
  • 【python】爬虫记录每小时金价
  • 一行命令将已克隆的本地Git仓库推送到内网服务器
  • Linux文本处理三剑客(详解)
  • AI在线UI代码生成,不需要敲一行代码,聊聊天,上传图片,就能生成前端页面的开发神器
  • go-zero整合单机版ClickHouse并实现增删改查
  • 行政工作如何提高效率?桌面备忘录便签软件哪个好
  • 利用向日葵和微信/腾讯会议实现LabVIEW远程开发
  • SpringBoot 单元测试 指定 环境