STM32电偶测温实现

标准测温曲线LUT二分查表实现





const struct TempLut gStarndCoupleLUT[]=
{
{	-2739	,	-2479	},
{	-2478	,	-2218	},
{	-2217	,	-1957	},
{	-1956	,	-1696	},
{	-1695	,	-1435	},
{	-1434	,	-1174	},
{	-1173	,	-913	},
{	-912	,	-652	},
{	-651	,	-391	},
{	-390	,	-130	},  // above is the negative ...
{	-131	,	131	},
{	132	,	393	},
{	394	,	654	},
{	655	,	916	},
{	917	,	1178	},
{	1179	,	1440	},
{	1441	,	1701	},
{	1702	,	1963	},
{	1964	,	2228	},
{	2229	,	2493	},
{	2494	,	2758	},
{	2759	,	3023	},
{	3024	,	3289	},
{	3290	,	3554	},
{	3555	,	3819	},
{	3820	,	4087	},
{	4088	,	4356	},
{	4357	,	4624	},
{	4625	,	4892	},
{	4893	,	5164	},
{	5165	,	5436	},
{	5437	,	5704	},
{	5705	,	5976	},
{	5977	,	6248	},
{	6249	,	6520	},
{	6521	,	6795	},
{	6796	,	7070	},
{	7071	,	7342	},
{	7343	,	7614	},
{	7615	,	7889	},
{	7890	,	8167	},
{	8168	,	8446	},
{	8447	,	8721	},
{	8722	,	8999	},
{	9000	,	9278	},
{	9279	,	9556	},
{	9557	,	9835	},
{	9836	,	10113	},
{	10114	,	10395	},
{	10396	,	10677	},
{	10678	,	10959	},
{	10960	,	11241	},
{	11242	,	11523	},
{	11524	,	11805	},
{	11806	,	12090	},
{	12091	,	12375	},
{	12376	,	12660	},
{	12661	,	12945	},
{	12946	,	13231	},
{	13232	,	13519	},
{	13520	,	13808	},
{	13809	,	14097	},
{	14098	,	14385	},
{	14386	,	14674	},
{	14675	,	14962	},
{	14963	,	15251	},
{	15252	,	15543	},
{	15544	,	15835	},
{	15836	,	16127	},
{	16128	,	16418	},
{	16419	,	16710	},
{	16711	,	17006	},
{	17007	,	17301	},
{	17302	,	17593	},
{	17594	,	17885	},
{	17886	,	18183	},
{	18184	,	18482	},
{	18483	,	18777	},
{	18778	,	19073	},
{	19074	,	19371	},
{	19372	,	19670	},
{	19671	,	19968	},
{	19969	,	20270	},
{	20271	,	20569	},
{	20570	,	20868	},
{	20869	,	21169	},
{	21170	,	21471	},
{	21472	,	21773	},
{	21774	,	22075	},
{	22076	,	22381	},
{	22382	,	22686	},
{	22687	,	22988	},
{	22989	,	23294	},
{	23295	,	23599	},
{	23600	,	23905	},
{	23906	,	24213	},
{	24214	,	24522	},
{	24523	,	24827	},
{	24828	,	25133	},
{	25134	,	25441	},
{	25442	,	25750	},
{	25751	,	26062	},
{	26063	,	26374	},
{	26375	,	26683	},
{	26684	,	26995	},
{	26996	,	27307	},
{	27308	,	27616	},
{	27617	,	27928	},
{	27929	,	28243	},
{	28244	,	28558	},
{	28559	,	28871	},
{	28872	,	29183	},
{	29184	,	29498	},
{	29499	,	29813	},
{	29814	,	30129	},
{	30130	,	30447	},
{	30448	,	30766	},
{	30767	,	31082	},
{	31083	,	31397	},
{	31398	,	31716	},
{	31717	,	32038	},
{	32039	,	32357	},
{	32358	,	32675	},
{	32676	,	32997	},
{	32998	,	33316	},
{	33317	,	33635	},
{	33636	,	33957	},
{	33958	,	34279	},
{	34280	,	34601	},
{	34602	,	34924	},
{	34925	,	35249	},
{	35250	,	35574	},
{	35575	,	35897	},
{	35898	,	36222	},
{	36223	,	36548	},
{	36549	,	36873	},
{	36874	,	37199	},
{	37200	,	37524	},
{	37525	,	37853	},
{	37854	,	38182	},
{	38183	,	38511	},
{	38512	,	38840	},
{	38841	,	39169	},
{	39170	,	39497	},
{	39498	,	39826	},
{	39827	,	40155	},
{	40156	,	40484	},
{	40485	,	40816	},
{	40817	,	41148	},
{	41149	,	41480	},
{	41481	,	41813	},
{	41814	,	42145	},
{	42146	,	42480	},
{	42481	,	42813	},
{	42814	,	43145	},
{	43146	,	43480	},
{	43481	,	43816	},
{	43817	,	44151	},
{	44152	,	44487	},
{	44488	,	44822	},
{	44823	,	45158	},
{	45159	,	45497	},
{	45498	,	45836	},
{	45837	,	46171	},
{	46172	,	46510	},
{	46511	,	46849	},
{	46850	,	47188	},
{	47189	,	47527	},
{	47528	,	47866	},
{	47867	,	48208	},
{	48209	,	48550	},
{	48551	,	48889	},
{	48890	,	49228	},
{	49229	,	49570	},
{	49571	,	49912	},
{	49913	,	50258	},
{	50259	,	50604	},
{	50605	,	50946	},
{	50947	,	51288	},
{	51289	,	51634	},
{	51635	,	51979	},
{	51980	,	52325	},
{	52326	,	52671	},
{	52672	,	53016	},
{	53017	,	53362	},
{	53363	,	53708	},
{	53709	,	54057	},
{	54058	,	54406	},
{	54407	,	54755	},
{	54756	,	55104	},
{	55105	,	55453	},
{	55454	,	55802	},
{	55803	,	56150	},
{	56151	,	56499	},
{	56500	,	56848	},
{	56849	,	57200	},
{	57201	,	57553	},
{	57554	,	57902	},
{	57903	,	58254	},
{	58255	,	58607	},
{	58608	,	58959	},
{	58960	,	59314	},
{	59315	,	59667	},
{	59668	,	60019	},
{	60020	,	60375	},
{	60376	,	60730	},
{	60731	,	61086	},
{	61087	,	61442	},
{	61443	,	61797	},
{	61798	,	62153	},
{	62154	,	62509	},
{	62510	,	62868	},
{	62869	,	63227	},
{	63228	,	63582	},
{	63583	,	63942	},
{	63943	,	64301	},
{	64302	,	64660	},
{	64661	,	65019	},
{	65020	,	65378	},
{	65379	,	65737	},
{	65738	,	66096	},
{	66097	,	66458	},
{	66459	,	66820	},
{	66821	,	67183	},
{	67184	,	67545	},
{	67546	,	67908	},
{	67909	,	68270	},
{	68271	,	68632	},
{	68633	,	68995	},
{	68996	,	69357	},
{	69358	,	69723	},
{	69724	,	70089	},
{	70090	,	70451	},
{	70452	,	70817	},
{	70818	,	71183	},
{	71184	,	71549	},
{	71550	,	71914	},
{	71915	,	72280	},
{	72281	,	72649	},
{	72650	,	73015	},
{	73016	,	73381	},
{	73382	,	73750	},
{	73751	,	74119	},
{	74120	,	74488	},
{	74489	,	74857	},
{	74858	,	75226	},
{	75227	,	75595	},
{	75596	,	75964	},
{	75965	,	76336	},
{	76337	,	76709	},
{	76710	,	77078	},
{	77079	,	77450	},
{	77451	,	77823	},
{	77824	,	78195	},
{	78196	,	78568	},
{	78569	,	78940	},
{	78941	,	79313	},
{	79314	,	79685	},
{	79686	,	80061	},
{	80062	,	80434	},
{	80435	,	80806	},
{	80807	,	81182	},
{	81183	,	81557	},
{	81558	,	81933	},
{	81934	,	82309	},
{	82310	,	82685	},
{	82686	,	83061	},
{	83062	,	83437	},
{	83438	,	83816	},
{	83817	,	84195	},
{	84196	,	84571	},
{	84572	,	84950	},
{	84951	,	85329	},
{	85330	,	85705	},
{	85706	,	86084	},
{	86085	,	86463	},
{	86464	,	86842	},
{	86843	,	87225	},
{	87226	,	87604	},
{	87605	,	87983	},
{	87984	,	88366	},
{	88367	,	88748	},
{	88749	,	89131	},
{	89132	,	89510	},
{	89511	,	89889	},
{	89890	,	90272	},
{	90273	,	90654	},
{	90655	,	91040	},
{	91041	,	91426	},
{	91427	,	91809	},
{	91810	,	92191	},
{	92192	,	92574	},
{	92575	,	92960	},
{	92961	,	93345	},
{	93346	,	93728	},
{	93729	,	94114	},
{	94115	,	94500	},
{	94501	,	94886	},
{	94887	,	95275	},
{	95276	,	95661	},
{	95662	,	96047	},
{	96048	,	96436	},
{	96437	,	96822	},
{	96823	,	97208	},
{	97209	,	97597	},
{	97598	,	97986	},
{	97987	,	98375	},
{	98376	,	98764	},
{	98765	,	99154	},
{	99155	,	99543	},
{	99544	,	99932	},
{	99933	,	100321	},
{	100322	,	100711	},
{	100712	,	101103	},
{	101104	,	101496	},
{	101497	,	101885	},
{	101886	,	102277	},
{	102278	,	102670	},
{	102671	,	103059	},
{	103060	,	103452	},
{	103453	,	103845	},
{	103846	,	104237	},
{	104238	,	104633	},
{	104634	,	105026	},
{	105027	,	105418	},
{	105419	,	105814	},
{	105815	,	106210	},
{	106211	,	106603	},
{	106604	,	106995	},
{	106996	,	107391	},
{	107392	,	107787	},
{	107788	,	108183	},
{	108184	,	108579	},
{	108580	,	108975	},
{	108976	,	109371	},
{	109372	,	109770	},
{	109771	,	110169	},
{	110170	,	110565	},
{	110566	,	110961	},
{	110962	,	111361	},
{	111362	,	111760	},
{	111761	,	112156	},
{	112157	,	112555	},
{	112556	,	112954	},
{	112955	,	113354	},
{	113355	,	113753	},
{	113754	,	114153	},
{	114154	,	114555	},
{	114556	,	114954	},
{	114955	,	115354	},
{	115355	,	115756	},
{	115757	,	116159	},
{	116160	,	116562	},
{	116563	,	116961	},
{	116962	,	117360	},
{	117361	,	117763	},
{	117764	,	118166	},
{	118167	,	118568	},
{	118569	,	118974	},
{	118975	,	119380	},
{	119381	,	119783	},
{	119784	,	120186	},
{	120187	,	120588	},
{	120589	,	120994	},
{	120995	,	121400	},
{	121401	,	121803	},
{	121804	,	122209	},
{	122210	,	122615	},
{	122616	,	123021	},
{	123022	,	123427	},
{	123428	,	123833	},
{	123834	,	124239	},
{	124240	,	124645	},
{	124646	,	125054	},
{	125055	,	125460	},
{	125461	,	125866	},
{	125867	,	126276	},
{	126277	,	126685	},
{	126686	,	127094	},
{	127095	,	127504	},
{	127505	,	127913	},
{	127914	,	128323	},
{	128324	,	128732	},
{	128733	,	129141	},
{	129142	,	129551	},
{	129552	,	129960	},
{	129961	,	130369	},
{	130370	,	130779	},
{	130780	,	131188	},
{	131189	,	131601	},
{	131602	,	132014	},
{	132015	,	132423	},
{	132424	,	132835	},
{	132836	,	133248	},
{	133249	,	133658	},
{	133659	,	134070	},
{	134071	,	134483	},
{	134484	,	134896	},
{	134897	,	135309	},
{	135310	,	135721	},
{	135722	,	136137	},
{	136138	,	136550	},
{	136551	,	136963	},
{	136964	,	137379	},
{	137380	,	137792	},
{	137793	,	138204	},
{	138205	,	138620	},
{	138621	,	139033	},
{	139034	,	139446	},
{	139447	,	139862	},
{	139863	,	140277	}
};


const int gLutlen= sizeof(gStarndCoupleLUT)/sizeof(struct TempLut);



int lookUpTemp(int adv)
{
    int low=0,high=gLutlen-1,mid;



    // if mid hit

    while(low<=high)
    {
      mid=(low+high)/2;

     // printf(" low %d high %d ; mid %d %d %d\n",low , high , mid, gTempLut[mid].high, gTempLut[mid].low); // 4 test
      if(gStarndCoupleLUT[mid].high<adv)
      {
    	  low=mid+1;

      } else if(gStarndCoupleLUT[mid].low>adv)
      {
    	  high=mid-1;
      } else {

    	  return mid;
      }
    }

    return -1;

}

/*

void main(int argc,char* argv[])
{

//	 if(argv[1])

    int  index=0, key=0;

//    key=str2int(argv[1]);
//    key=strtoi(argv[1],10);

//    sscanf(argv[1],"%d",&key);
//    printf("gTempLut len %d %d %d\n",gLutlen, argc, key);


    for(key=-800;key<200000;key++){

    index=lookUpTemp(key);


    if(index!=-1)
        printf("find the value %d in [%d, %d] \n", key, gStarndCoupleLUT[index].low,  gStarndCoupleLUT[index].high );
    else
    	printf("can't find the value %d in LUT \n", key );

    }
}
*/ 

头文件

#ifndef TEMPLUT_H_
#define TEMPLUT_H_

#define UNIT_LEN 2  // 2 degree per unit...
#define LUT_OFFSET 10 // units under 0 degree...


struct  TempLut{

	int low;
	int high;
};



extern int lookUpTemp(int adv);
extern const struct TempLut gTempLut[];

#endif /* TEMPLUT_H_ */
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值