温控见到的I2C 类型的,还ADC 类型的。两种类型获取数据的通道及工作原理不一样。I2C data 获取到的数据根据协议转换成温度即可, 而ADC 类型的温控一般指热敏电阻,连接在主芯片的SAR 口,主芯片通过sar 的电压值,得到热敏电阻的阻值,再通过阻值计算当前的温度。从流程上看要掺一点。

热敏电阻连接


上图是为了兼容多颗料绘制的原理图,根据实际上料情况简化如下:

热敏电阻RT 与 R665 的1k 电阻串联,对3.3 V 进行分压,然后接入芯片的SAR口。

temp_sens pin 接入主芯片的E4 (sar3),当外接温度变化时,主芯片通过sar 口采集到的adc 也是变化的。通常产品也是通过采集到的adc 反推出当前的温度。

SAR 口配置

mboot\MBoot\sboot\inc\mooney\board\chip\MSD95WLXM8.h

  1. E4 的pin 脚定义
#define BALL_E4 PAD_SAR3
#define PAD_SAR3 34
#define GPIO_PAD_34 GPIO33
#ifndef BALL_E4_IS_GPIO
#define BALL_E4_IS_GPIO 0
#endif
#ifndef PAD_SAR3_IS_GPIO
#define PAD_SAR3_IS_GPIO BALL_E4_IS_GPIO
#endif
  1. SAR3 口定义

mboot\MBoot\sboot\inc\mooney\board\BD_MST142B_10A_MOONEY.h

#define PAD_SAR3_IS_GPIO                        GPIO_IN

mboot 定义好sar3口之后,就可以直接获取adc 值了。

//-------------------------------------------------------------------------------------------------
/// Set SAR as ADC channel.
/// @ingroup G_SAR_COMMON
/// @param u8Channel: sar ADC channel 0~7
/// @param bEnable: 1: configured as ADC, 0: configured as GPIO input
/// @return E_SAR_ADC_OK: Success
/// @return E_SAR_ADC_FAIL or other values: Failure
//-------------------------------------------------------------------------------------------------
SAR_AdcResult MDrv_SAR_Adc_Config(MS_U8 u8Channel,MS_BOOL bEnable);//-------------------------------------------------------------------------------------------------
/// Get ADC value function for each SAR channel.
/// @ingroup G_SAR_COMMON
/// @param u8Channel: sar ADC channel 0~7
/// @return MS_U8: ADC value
//-------------------------------------------------------------------------------------------------
MS_U8 MDrv_SAR_Adc_GetValue(MS_U8 u8Channel);

对于SAR 3 ,就是直接使用MDrv_SAR_Adc_GetValue(3)来多去ADC值。
有了ADC 值下一步就需要建立和温度的函数关系。

RT的阻值与温度

adc 值和RT电阻值 的关系基本上时线性的,比较好找到规律。但是RT阻值和温度的关系是非线性就有点麻烦。我们先看一下温控的几个参数,特性。NTCG103JF103FT为例

从datasheet 中,我们可以看到一个公式,在25摄氏度 到 85 摄氏度之间,一个变化常量的计算公式,这个常量就是曲线(电阻与温度关系曲线)
的斜率,也即导数。根据型号我们找到这个常量所在的区间

由上面数据可知,B的取值范围在3401 ~ 3450 之间。

原厂根据前面变化规律变化,提供了一组值就是约25℃时,电阻为10k 欧姆,此时B 值为3435.

推到上面的公式可以得到一个RT 电阻值和开氏温度 之间的关系。其中RT1为温度T1 时零功率电阻值,RT2 为温度T2时零功率电阻值。代入RT1 ,T1 ,也即10k 欧姆,25+273 开尔文及B值(3435) 就会得到一个 RT 与T的一元方程函数。 另外在测试几组adc 值,RT阻值得到两者的关系,最终可以得到adc 与 T 之间的关系。

ADC 与 温度之间的估算

上面根据datasheet 提供的参数 和公式 做的一个比较精确,但是很复杂的计算方法。在此有一个估算的方法,直接把RT电压 与 温度T 当成一种线性关系来使用。根据datasheet 提供的数据,温度变化区间在25℃ ~ 85℃,电阻的值 10k ~ 0k那么电压为3000mv ~ 0mv 代入公式 ax + b = y, 则有
a3000 + b = 25 , b = 85 。计算得到 a = -0.02, b = 85,那么y = 85 - 0.02 x . 其中y 为温度(单位℃),x 为电压(单位mv)。 热敏电阻的电压值为
x = adc
3300 / 255. 最终计算得出

y = 85 - (adc*3300/255)*0.02

然后通过红外仪验证,通过offset进行些许校正。

y = 85 - (adc*3300/255)*0.02 + offset

code 如下:

float convertToVoltage(U8 channel)
{return 3300*(((float)MDrv_SAR_Adc_GetValue(chanel))/255);
}S16 voltageToTemperature(U8 channel)
{return  85 -  0.02 * convertToVoltage(channel) + offset ;   // offset 做微调用
}

参考:https://wenku.baidu.com/view/e2f53c4c2f3f5727a5e9856a561252d380eb2092.html
https://baijiahao.baidu.com/s?id=1620021463882312794&wfr=spider&for=pc

资源链接:https://download.csdn.net/download/kehyuanyu/11988500

Mstar温控(热敏电阻)调试笔记相关推荐

  1. 调试笔记--jlink 变量转实时波形小技巧

    调试笔记–jlink 变量转实时波形小技巧 上篇讲了jlink RTT组件在RAM中开辟一段内存,将printf字符串存入然后通过jlink调试接口读取RAM,将printf字符串在jlink-RTT ...

  2. 调试笔记--keil 测量周期小技巧

    调试笔记–keil 测量周期小技巧 本文参考安富莱专题教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&ext ...

  3. 调试笔记--keil 断点调试小技巧

    调试笔记–keil 断点调试小技巧 给变量打断点 调试不熟悉的项目时,卧槽!怎么这么多全局变量?这玩意又在那修改了??这个时候会给变量打断点就能省好多事. 将要监视的全局变量添加到watch窗口 选中 ...

  4. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  5. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...

    之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...

  6. RK3399 GT1X触摸屏驱动调试笔记

    硬件环境 1.Firefly AIO-3399(AI)开发版: 2.恒智的5寸电容触摸屏800X480,I2C驱动支持GT5688. 操作系统 Android 7.2 for rockship Ste ...

  7. Rockchip基于RK3566/RK3568 WiFi AP6256调试笔记

    1.开发平台 CPU:RK3566 编译环境:Ubuntu18.04 内核版本:kernel 4.19 2.目的 因为RK3566/RK3568支持SDIO3.0并且向下兼有SDIO2.0接口,由于核 ...

  8. 雅马哈四轴机器人调试笔记

    雅马哈四轴机器人调试笔记 1.0 先简单说下硬件,如下图对着插就行,雅马哈四轴主要硬件有控制器跟机械手,机械手到控制器主要有4跟电机接口电缆,每2个轴有一个编码器接口电缆,每根轴有一个配置的数据备份电 ...

  9. OMAP3530-mini调试笔记(2)

    PS:USB不能正常工作的根本原因参见调试笔记(3) 各个版本的x-loader和u-boot对kernel的支持情况: U-Boot 2011.12-00010-ga3eb89c (Jan 29 2 ...

最新文章

  1. 学生的新增mySQL文档_MySQL增删改查
  2. 字节跳动的敌人,只有时间
  3. Linux系统上怎么安装服务器管理软件Cockpit?
  4. Laravel 有哪些核心的内容?
  5. 使用docker快速启动jetlinks
  6. Spark获取某个手机号在某个基站下停留的时间和当前手机所在的位置的案例
  7. 直接用自己服务器做图床可以吗_我花 9 块钱搭了一个“私人图床”
  8. JS Event事件
  9. java学习(175):method类反射机制
  10. 65 SD配置-交货凭证配置-定义相关项目类别的拣配相关
  11. 2021江苏淮安高考成绩查询,2021江苏公务员考试成绩查询入口(淮安)
  12. 手把手·教你用 Echarts 画 ChinaMap
  13. 系统发育树构建算法和软件
  14. LGame-0 3 Android与JavaSE游戏引擎 正式发布,新增SRPG制作模块
  15. 国际象棋渲染测试软件,多线程运算效能Fritz国际象棋测试_CPUCPU评测-中关村在线...
  16. java实现发送短信和邮箱
  17. 06 (补充)初始化sdram代码
  18. linux firefox体验,Firefox插件 让你在桌面浏览器体验Firefox OS(附安装教程)
  19. 制造业数字化转型内涵和过程
  20. 论珊瑚虫并不光彩的历史

热门文章

  1. カスタムボタン 一括削除
  2. gmm中隐变量是什么的_互助问答第163期:GMM和二值变量问题
  3. ajax java 图片加载_如何用Ajax加载服务器的图片
  4. 【Delphi练习】简易计算器(升级版)
  5. 数据库应用设计学生宿舍管理系统java+SQL
  6. 0001.Latex中中文双引号和单引号的写法
  7. [C++]《Windows核心编程》读书笔记
  8. 51单片机入门——矩阵按键
  9. 关于为什么gateway网关用webflux
  10. 手机/平板电脑作为pc电脑扩展屏——Splashtop Wired XDisplay使用教程