电子烟开发【恒压、恒有效算法】
恒压算法
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(A910001000B9)

恒有效算法
//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;}
}
相关文章:
电子烟开发【恒压、恒有效算法】
恒压算法 pwm是通过软件模拟的 pwm满值运行是250全占空比 #define D_TARGET_AVERAGE_VOLTAGE 3500 //R_ADC1_Vout :发热丝两端AD值 //R_ADC_FVR :电池电压AD值 //FVR_VOLTAGE :电池AD参考电压 满电值AD //R_Smk1Duty :最后…...
基于Open3D的点云处理22-非阻塞可视化/动态可视化
官网测试用例:examples/python/visualization/non_blocking_visualization.py 非阻塞可视化,即实时更新点云数据; 如下,动态可视化ICP的匹配过程: import open3d as o3d import numpy as npif __name__ == "__main__":o3d.utility.set_verbosity_level(o3d.ut…...
C++面试题其一
C和C的区别 C和C都是广泛使用的编程语言,但它们有显著的区别: 语言范式: C:是一种过程化编程语言,强调过程和函数的使用。C:是一种多范式编程语言,支持面向对象编程、泛型编程和过程化编程。 …...
CentOS7某天的samba服务搭建操作记录(还没成功)
#CentOS7 yum软件仓库阿里云 samba服务器配置失败 sensors成功了 (花了200元组装H61测试机,75元的主板只有一块能用,垃圾板但又不完全能用) 2024.5月的某天记录如下: https://blog.csdn.net/dszgf5717/article/details/53732182 …...
Qt Demo:基于TCP协议的视频传输Demo
目录 1.设计思路 2.Pro文件配置 3.头文件引入 4.界面设计 5.初始化设备函数 6.发起视频链接函数 7.初始化定时器模块函数 8.TCP链接模块函数 9.处理接收的数据线程函数 10.实现功能展示 设计思路 基于TCP协议的视频传输Demo,设计要实现的功能主要是TCP传输还有视频&…...
内存管理【C++】
内存分布 C中的内存区域主要有以下5种 栈(堆栈):存放非静态局部变量/函数参数/函数返回值等等,栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆:用于程序运行时动态内存分配ÿ…...
D3D 顶点格式学习
之前D3D画三角形的代码中有这一句, device.VertexFormat CustomVertex.TransformedColored.Format; 这是设置顶点格式; 画出的三角形如下, 顶点格式是描述一个三维模型的顶点信息的格式;可以包含以下内容, 位置…...
gmssl vs2010编译
1、虚拟机win10 x64,离线安装vs2010和2010sp1补丁; 2、安装ActivePerl_v5.28.1.0000和nasm-2.16.03-installer-x64均是默认完整安装; nasm官网下载: Index of /pub/nasm/releasebuilds/2.16.03/win64https://www.nasm.us/pub/nas…...
容器化部署gitlab、jenkins,jenkins应用示例
一、容器化部署docker和docker conpose安装 Docker&Docker-compose的安装及部署_docker 20 使用什么版本docker-compose-CSDN博客 1.docker 安装脚本 cat >01_docker.sh<<EOF #!/bin/bash yum remove docker \docker-client \docker-client-latest \docker-co…...
基于STM32的轻量级Web服务器设计
文章目录 一、前言1.1 开发背景1.2 实现的功能1.3 硬件模块组成1.4 ENC28J60网卡介绍1.5 UIP协议栈【1】目标与特点【2】核心组件【3】应用与优势 1.6 添加UIP协议栈实现创建WEB服务器步骤1.7 ENC28J60添加UIP协议栈实现创建WEB客户端1.8 ENC28J60移植UIP协议并编写服务器测试示…...
用r语言处理 Excel数据当中的缺失值方法
以下是使用 R 编程语言处理 Excel 缺失数据的一些常见方法示例代码:(无需循环) 读取包含缺失数据的 Excel 文件 data <- read.csv(“your_file.csv”) 查看数据中是否有缺失值 sum(is.na(data)) 用平均值填充缺失值 data c o l u m …...
AWS 高防和阿里云高防深度对比
随着网络攻击的不断增加,企业对于网络安全的需求也越来越高。在这种情况下,高防护服务成为了企业网络安全的重要组成部分。AWS和阿里云作为全球领先的云计算服务提供商,都提供了高防护服务,但它们之间存在着一些差异。我们九河云一…...
ctfshow web 月饼杯II
web签到 <?php //Author:H3h3QAQ include "flag.php"; highlight_file(__FILE__); error_reporting(0); if (isset($_GET["YBB"])) {if (hash("md5", $_GET["YBB"]) $_GET["YBB"]) {echo "小伙子不错嘛ÿ…...
「前端+鸿蒙」核心技术HTML5+CSS3(二)
1、开发者文档 开发者文档通常由浏览器厂商或技术社区提供,包含有关Web技术(如HTML、CSS、JavaScript)的详细信息,API文档,以及最佳实践。例如,MDN Web Docs是一个广泛认可的开发者资源。 2、块级元素与行列元素 块级元素:在页面上占据整行的元素,如<div>、<…...
unity接入live2d
在bilibili上找到一个教程,首先注意一点,你直接导入那个sdk,并且打开示例,显示的模型是有问题的,你需要调整模型上脚本的一个枚举值,调整它的渲染顺序是front z to我看教程时候,很多老师都没有提…...
练习题-17
以下题目来自2024年5月清华大学“丘成桐数学科学领军计划数学水平考试”。第11题本人参考了网友Fiddie (数学兔的极大理想)的解答,原网址是 https://mp.weixin.qq.com/s/q9slRWL4iO_TcSdkmbfbbw. 第10题:在10维列向量构成的内积空间 V V V中…...
乐高小人分类项目
数据来源 LEGO Minifigures | Kaggle 建立文件目录 BASE_DIR lego/star-wars-images/ names [YODA, LUKE SKYWALKER, R2-D2, MACE WINDU, GENERAL GRIEVOUS ] tf.random.set_seed(1)# Read information about dataset if not os.path.isdir(BASE_DIR train/):for name in …...
个人关于ChatGPT的用法及建议
概述 这里只是个人常用的几个软件,做一下汇总,希望对各位有用。 如果有更高认知的朋友,请留下你的工具名称,提醒我一下,谢谢~ 常用的chatgpt模型工具: 以下是一些知名的例子: 文…...
神经网络的工程基础(二)——随机梯度下降法|文末送书
相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下:regression2chatgpt/ch06_optimizer/stochastic_gradient_descent.ipynb 本文将讨论利用…...
常见的几种编码方式
常见的编码方式及其特点: 编码方式的设计是为了适应不同的字符集和应用需求,因此它们在表示字符时使用的位数和字节数各不相同 常见编码方式及其位数和字节数 ASCII(American Standard Code for Information Interchange)&#x…...
Intv_AI_MK11嵌入式开发实战:在WSL2中部署AI模型并集成Keil5
Intv_AI_MK11嵌入式开发实战:在WSL2中部署AI模型并集成Keil5 1. 为什么选择WSL2进行嵌入式AI开发 对于嵌入式开发者来说,传统AI模型开发面临一个典型困境:训练环境通常基于Linux系统,而嵌入式开发工具链(如Keil MDK&…...
新手避坑指南:PX4飞控连接TFmini、LIDAR Lite V3等定高雷达的完整接线与参数配置(QGC实操)
PX4飞控与定高雷达实战:从接线到参数配置的避坑指南 刚拿到PX4飞控和一堆传感器的新手们,面对密密麻麻的接口和参数设置,是不是有种无从下手的感觉?特别是当你需要连接定高雷达时,不同品牌(北醒TFmini、LID…...
DASD-4B-Thinking应用场景:科研人员用Chainlit调用长链思维模型写论文推导
DASD-4B-Thinking应用场景:科研人员用Chainlit调用长链思维模型写论文推导 安全声明:本文仅讨论技术实现与应用,所有内容均符合技术交流规范,不涉及任何敏感或违规内容。 1. 科研写作的新助手:当AI遇到学术研究 作为一…...
技能大赛备赛避坑指南:搞定软件测试五大任务(功能/自动化/性能/单元/接口)的常见错误与调试技巧
技能大赛备赛避坑指南:软件测试五大任务实战排错手册 参加职业院校技能大赛软件测试赛项的师生们,往往在备赛过程中遇到各种"坑":脚本突然报错、环境配置冲突、报告格式被扣分…这些问题看似琐碎,却可能直接影响比赛成绩…...
STM32CubeIDE工程复制粘贴保姆级教程:告别重复配置,5分钟搞定新项目
STM32CubeIDE工程复制粘贴保姆级教程:告别重复配置,5分钟搞定新项目 每次启动新项目时,你是否还在重复那些繁琐的初始化步骤?从零开始配置时钟树、外设参数、中断优先级,不仅耗时费力,还容易出错。对于经验…...
PyTorch 2.8镜像部署教程:RTX 4090D配置htop实时监控GPU/CPU/内存使用
PyTorch 2.8镜像部署教程:RTX 4090D配置htop实时监控GPU/CPU/内存使用 1. 环境准备与快速部署 在开始之前,请确保您的硬件配置满足以下要求: 显卡:RTX 4090D 24GB显存内存:120GB及以上存储:系统盘50GB …...
SpringBoot+Redis实现高并发短信登录:双拦截器设计背后的架构思考
SpringBootRedis高并发短信登录架构深度解析:双拦截器设计与性能优化实战 1. 高并发场景下的登录架构挑战 在当今互联网应用中,短信验证码登录已成为主流的身份验证方式之一。但当系统面临高并发请求时,传统的Session-based方案会暴露出诸多瓶…...
Rust DLL注入技术深度解析:Rust-for-Malware-Development完整实现指南
Rust DLL注入技术深度解析:Rust-for-Malware-Development完整实现指南 【免费下载链接】Rust-for-Malware-Development Rust for malware Development is a repository for advanced Red Team techniques and offensive malwares & Ransomwares, focused on Rus…...
ClawdBot代码实例:修改clawdbot.json实现模型热切换实操
ClawdBot代码实例:修改clawdbot.json实现模型热切换实操 1. 引言:你的个人AI助手,想换模型就换模型 想象一下,你有一个24小时在线的AI助手,它能帮你写代码、回答问题、整理文档。但用久了,你可能会想&…...
OpenClaw人人养虾:配置Anthropic (Claude)
Anthropic 是 Claude 系列模型的开发者。Claude 以出色的指令遵循能力、深度推理和长文本处理著称。OpenClaw 支持通过 API Key 或 Claude Code CLI OAuth 接入。 认证方式 方式一:API Key(推荐) 前往 Anthropic Console 创建 API Key在 O…...
