b3950热敏电阻的(二分查找)查表法实现

本文介绍了在开发环境中,通过热敏电阻采集温度时采用查表法而非公式计算法的原因,主要是因为MCU计算能力有限。详细阐述了一种基于二分查找的查表法实现,该算法适用于处理浮点数和不连续阻值的问题。文章提供了avr-gcc平台的实现代码,并指出该算法可移植到其他平台,只需调整与平台相关的部分。
摘要由CSDN通过智能技术生成

开发环境

本文的基于如下开发环境,若开发环境不同可能不能达到预期效果。

IDE:AtmelStudio 7
toochain:avr-gcc 
MCU  :atmega128A

通过热敏电阻采集温度有两种方法:

1.公式计算法,根据转换公式直接通过测量得到的阻值计算出温度;
2.查表法,也是本例采用的算法,使用
由于嵌入式式设备MCU的计算能力比较弱(浮点运算比较慢),所以通常采用查表法。

这个算法的功能:根据电阻阻值获取对应的温度。
这个算法可以归类在二分算法下。
难点:查找和比较的对象是浮点数,并且阻值不连续,所以要考虑阻值在两个典型阻值之间的问题。

一种查表法的完整实现

如下编码在avr-gcc中实现,测试。

#include "b3950.h"
#include <avr/pgmspace.h>

typedef struct 
{
   
	int16 t;
	float r;
}sToR;

const sToR tr_array[] PROGMEM = 
{
   
{
   -20,97.8396f},
{
   -19,92.3020},
{
   -18,87.1124},
{
   -17,82.2471},
{
   -16,77.6837},
{
   -15,73.4018},
{
   -14,69.3823},
{
   -13,65.6077},
{
   -12,62.0616},
{
   -11,58.7288},
{
   -10,55.5953},
{
   -9	,52.6480},
{
   -8	,49.8747},
{
   -7	,47.2643},
{
   -6	,44.8062},
{
   -5	,42.4906},
{
   -4	,40.3086},
{
   -3	,38.2516},
{
   -2	,36.3117},
{
   -1	,34.4817},
{
   0	,32.7547},
{
   1	,31.1243},
{
   2	,29.5847},
{
   3	,28.1301},
{
   4	,26.7556},
{
   5	,25.4562},
{
   6	,24.2274},
{
   7	,23.0650},
{
   8	,21.9650},
{
   9	,20.9239},
{
   10	,19.9380},
{
   11	,19.0041},
{
   12	,18.1193},
{
   13	,17.2807},
{
   14	,16.4857},
{
   15	,15.7317},
{
   16	,15.0164},
{
   17	,14.3376},
{
   18	,13.6933},
{
   19	,13.0816},
{
   20	,12.5005},
{
   21	,11.9485},
{
   22	,11.4239},
{
   23	,10.9252},
{
   24	,10.4510},
{
   25	,10.0000},
{
   26	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值