考试结束之后在家,终于觉得有必要把之前鸽了很久得ESP32驱动墨水屏的项目提上日程。

但是俗话说的好,工欲善其事,必先利其器,我加工好了PCB,在某宝买焊锡浆的时候瞥到一个220V某仙子的加热台,10块钱不到,我一寻思,这小别致,长得还挺东西,于是打包带了一块儿,觉得这个可以回来做个恒温的 小焊台,小巧又有灵性(给自己挖个坑)!
初步设想利用STM32+热敏电阻+继电器+PID实现恒定温度
利用0.96寸OLED+电位器设定温度 ~~实现100300℃温度可调~ 后来发现发热板最高温度在260左右

除了编码器是刚买的,其他的东西都是家里破烂儿箱里面找出来的

后来发现屏幕是个坏的,网上下单了几块儿

郁闷的是,当时还不知道STM32的这个最小开发板如今已经涨到快50一块儿了,我去年4月初买的 特意去看了一下订单,不过才17块,19年咸鱼买的103ZET6的开发板不过也不到50。唉 放这么个东西在里面,我的心忽然变得好痛。

热敏电阻测温

热敏电阻测温这就没啥好说的了
热敏电阻的用法参照了另外一位博主的帖子 NTC温度检测程序
我手上有一块儿,STM32F103C8最小系统板,查看芯片手册发现ADC是12位精度,量程0~3.6V,我选了MF-58-50K-3950的热敏电阻,选取了一个20K的定值电阻,这样的话中间量程大概在150℃,不过大概粗略计算了一下,12位ADC就算定值电阻取50K在300℃的时候,热敏电阻的阻值应该也是能测出来的。
会用STM32的ADC加上看懂那个NTC测温的程序,实现热敏电阻的温度测定了,不过那个博主有一个地方没说清楚

#define RN 10// 额定阻值(绝对温度时的电阻值10k)
在定义完RN之后 应该再定义一个R16 写清楚R16是定值电阻阻值比较好
RN之后说明添加热敏电阻 再绝对温度时的阻值比较好

刚开始没搞清楚R16的意义(也不能怪别人还是自己学习马马虎虎,没看清楚)错误的把R16当成RN了,导致20℃的室温,算出来的值为4℃多,后来回去又仔细检查了一下,发现是R16设置错了
修改完了之后,就得到了正确的温度了

在室温下得到准确温度之后,我向试试这东西最大能测到多少度,我看网上有人整理出了MF-58在0-300℃的阻值,于是我直接大力出奇迹,上火烧了一下电阻,发现烧了一会儿给它烧傻了,还是不可逆的

在温度大概超过450℃之后可以看到adc的测量值已经从5变成了4000+已经接近12位量程最大值4096了,说明热敏电阻已经坏了,取下来用表量一下,果然200M欧挡位下已经显示为开路,经过这个实验感觉最大温度在300℃一下,应该能够正常工作

ADC调试部分代码

#define BaseVol 3.33 //ADC基准电压(理论为3.3V 实际测得为3.33v)
#define B 3950.0//温度系数
#define TN 298.15//额定温度(绝对温度加常温:273.15+25)
#define RN 50// 定值电阻 额定阻值(绝对温度时的电阻值19.77k)
#define R0 19.77   // 热敏电阻 额定阻值(绝对温度时的电阻值50k)//原博主这里没有申明定值电阻,这里的R0与他的R16相同//色环电阻阻值为20k,经过我的测量发现阻值为19.77k//希望这样能进一步提高精确度吧,尽管温度的精度并不需要那么高int main(void){     u16 adcx;               //ACD采集数值float RV;               //测量出的 热敏电阻电压float RT;               //计算出的 热敏电阻阻值float RT;float Tmp;              //计算出的温度值delay_init();          //延时函数初始化   LED_Init();             //LED初始化  Adc_Init();               //ADC初始化NVIC_Configuration();   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级SystemInit();uart_init(9600);    //串口初始化为9600while(1){adcx=Get_Adc_Average(ADC_Channel_1,10);    //获取ADC1  10次采样的平均值RV=(float)adcx*(BaseVol/4096);                 //热敏电阻电压值RT=(float)RV*R0/(BaseVol-RV);//求出当前温度阻值 (BaseVoltage-RV)/R16=RV/RT;Tmp=(float)1/(1/TN+(log((float)RT/RN)/B))-273.15;//%RT = RN exp*B(1/T-1/TN)%printf("adc:%d \n",adcx);   //显示adc测量值printf("RV:%f \n",RV);      //热敏电阻电压printf("RT:%f \n",RT);        //计算出的热敏电阻阻值printf("Tmp:%f \n\n",Tmp);    //计算出的温度//每一步都打印出来主要是为了方便找出错误是在哪一步  (lll¬ω¬)printf("\n");delay_ms(1000);LED=!LED;}}

Qt绘制温度曲线

既然要进行PID调参,那当然得有基于温度的曲线了

要么在407的板子上用TFT屏幕显示温度曲线,要么编写上位机软件用Qt绘制温度曲线

我选择后者,正好借着这个机会学习一下Qt,另外在上位机中直接修改PID的三个参数,至于串口数据的传输,准备用json格式实现,这就又涉及到C语言的json字符串解析了,想想不禁觉得,下个冬天我的头可能会更冷了

[STM32]PID恒温加热台(DIY回流焊)相关推荐

  1. STM32——PID恒温控制

    原理 元件    stm32f103核心板.L298N模块(当然用MOS管更好).led一个.NPN三极管一个.蜂鸣器一个.DHT11一个.LCD1602一个.电阻200欧两个.可调电阻10K一个.加 ...

  2. 基于西门子200smart系列化工反应釜程序 系统进行两路PID恒温升压调节

    基于西门子200smart系列化工反应釜程序,该程序仅用于学习探讨. 功能: 1.系统进行两路PID恒温升压调节 : 2.两路PID手自动切换: 3.压力.温度等检测. 具有如下控制: 参数设置.报警 ...

  3. 全新STM32 PID温控‘包括‘PID源码‘PCB‘源理图 全新自整定PID温控 STM32温控源码 … 资料参考价值较高,内含PCB+原理图+程序,内容完整。

    全新STM32 PID温控'包括'PID源码'PCB'源理图 全新自整定PID温控 STM32温控源码 - 资料参考价值较高,内含PCB+原理图+程序,内容完整. 注:STM32程序使用IAR打开 注 ...

  4. 单片机毕业设计-02:PID恒温算法之温控器及原理讲解

    上一篇文章提到 单片机毕业设计-01:基于涂鸦APP控制的无线控制灯 可以扩展为涂鸦APP + 风扇,空气净化器,宠物用品相关等等,都是比较简单的项目.项目虽小,五脏俱全,完全可以扩展成一个毕业设计. ...

  5. 毕业设计 stm32智能恒温水杯 - 单片机 物联网 嵌入式

    文章目录 0 简介 1 项目介绍 2 系统设计 3 恒温控制实现 3.1 功能描述 3.2 PID算法原理 3.2.1 P:比例 3.2.2 I:积分 3.2.3 D:微分 3.3 温控代码实现 4 ...

  6. (转)安富莱stm32 pid介绍以例子

    第15章 ControllerFunctions的使用(PID控制) 本期教程主要讲解控制函数中PID部分,PID的应用十分广泛,希望初学的同学认真学习这部分知识. 15.1 PID介绍 15.2 P ...

  7. 基于RK3399+STM32+PID的四轴飞行器跟踪与控制系统设计

    系统硬件的总体方案设计 要设计一款具有跟踪功能且飞行稳定的四轴飞行器跟踪系统,首先要保证系 统硬件平台的功能稳定.系统各模块具有不同功能,所以需要根据各模块功能与 性能,进行芯片的选取与硬件电路设计, ...

  8. stm32 薄膜键盘原理_stm32 diy 机械键盘

    但是HHKB的空格键很长,Fn组合键不好按,上下左右与vim不统一.受minila的启发,我决定自己做一个机械键盘. minila键盘图片: 自制机械键盘使用59键布局,以小为美(便宜)采用短空格,充 ...

  9. STM32—PID控制在直流电机中的应用

    文章目录 一.PID控制算法 1.什么是PID 2.PID系数的理解 Ⅰ.比例(P)部分 Ⅱ.积分(I)部分 Ⅲ.微分(D)部分 3.PID的数字化处理 二.位置闭环控制 三.速度闭环控制 一.PID ...

最新文章

  1. WSE 3.0 文档翻译:安装WSE3.0
  2. RHCE课程-RH131Linux管理笔记五-Linux远程登陆telnet及ssh服务
  3. unique函数详解
  4. 园区医保和其他地方的医保的区别
  5. 【免费下载】“后红海”时代,独家揭秘当下大数据体系
  6. Shell练习题(持续更新)
  7. PHP | 检查字符串中是否存在特定的单词/子字符串
  8. sparkstreaming 读取mysql_SparkStreaming读取Kafka的两种方式
  9. C# 4.0 的 Visual Studio 2010 官方示例
  10. 纳尼?我的Gradle build编译只要1s
  11. kafka 集群_Kafka集群搭建
  12. Google发布中文名称“谷歌”
  13. Java基础之如何修改字符串?
  14. 1111: 多个整数的逆序输出(函数专题)
  15. chrome插件开发基础以及如何防止劫持
  16. 大数据分析系统创新平台与生态建设
  17. 浅谈ERP数据的重要性
  18. STM32上电以后GPIO默认是Floating input
  19. 编译tensorflow1.15.4,使其支持AVX2 和 FMA
  20. Cocos2d-x + Android + Eclipse + Windows 8

热门文章

  1. NLP:FastText
  2. 火爆全球的ChatGPT到底能够帮助大学生什么??
  3. PhotoShop高级应用
  4. 全闪存时代真的来了吗?反正紫光华山是认真了
  5. Linux大神进阶十五:磁盘管理
  6. MATLAB中果蝇味道浓度判定函数,果蝇优化算法的加权策略研究
  7. 用definemacro的方式检查信号的glitch毛刺
  8. 参加计算机俱乐部英语作文,关于计算机的英语作文
  9. API战略中台的正确落地方式:构建高效的“API管理平台”
  10. plex 乱码_如何优化电影和电视节目以流畅地播放Plex