比如 值/10位满值0X3FF=电压比
AD转换设置
设置通道,启动,读取结果 配置转换器,包括启用转换器,通道选择,时钟 启用中断 启动转换 中断处理 对读取值多次相加然后求平均值 对获得的值进行映射
如何做映射
纯电位器:电阻-电压-数值 温度传感器:温度-电阻-电压-数值(最终可能是正比例映射也可能是反比例映射) 映射表格,所需的值和数字值之间的对应关系,表中为数字值,位序为将要取出的意义值 进行比较取序列号 超过最大期望或者小于最小期望舍弃 配置 对于ADC模块的电压参考源,你可以直接使用芯片的电压VDD,但是需要保证此电压的稳定,否则可能会影响转换结果的正确性,或者可以 使用外接的电压基准,对于电压参考源的输入范围最大不能超过VDD,而最小不能小于2.2-2.5V之间(不同的芯片,其参数会有不同,请参看相应的 数据手册中的电气规格)。 当你使用相应的口作为模拟输入口的时候,你首先应该设置口方向寄存器将其设置为输入口,然后选择相应的配置寄存器,根据功能的不同,将其 配置为数字I/O或模拟输入口(在ADCON1或ANSEL寄存器中),设置相应的A/D转换时钟,该时钟可以选择由系统主振荡器提供,或使用片内ADC 模块自带的RC振荡器,当你需要其在休眠状态下进行转化,你就应该选择内部自带的RC振荡器来作为转换时钟。AD转换的时钟选择必须满足一个Tad周期, 其最小值不能小于1.6uS. 接着你需要选择相应的通道,对于有些器件你还可以选择参考源的接入和转换结果的对齐方式,例如10位结果你可以选择左对齐或右对齐,然后打开ADC模块 (例如将ADON置1),插入适当的采样时间,这一点非常重要,如果采样时间过短,会将导致转换的结果可能发生错误,对于采样时间的计算方法,数据手册上 有具体的公式计算,如果你有时发现转换的结果有所偏差的时候,你可以检查一下是否插入了足够的采样时间, 充足采样结束后你就可进行转换了(例如将GO/DONE置一),然后用轮巡的方式来检测GO/DONE或ADIF位是否请零,你也可以用中断的方式来判断 转换是否结束,然后到相应的寄存器去读取转换的结果,一次AD转化操作结束,如果你使用多通道ADC输入,你可以接着切换到相应的通道再重新进行这样的循 环。 ==== 选择温度范围 比如0到50度 选择合适的热敏电阻 建立分压电阻网络,选择精密电阻 映射转换后的值
如上图所示 NTC 热敏电阻 Rv 和测量电阻 Rm(精密电阻)组成一个简单的串联分压电路,参考电压 VCC_Ref 经过分压可以得到一个电压值随着温度值变化而变化的数值,这个电压的大小将反映出 NTC 电阻的大小,从而也就是相应温度值的反映。 通过欧姆定律可以得到输出电压值 Vadc 和 NTC 电阻值的一个关系表达式: Vadc = Vref*Rm/(Rv+Rm) (1) 那幺接下来的数据处理将基于式(1)展开:SPMC75F2413A 的 ADC 为 10-Bit 的精度,其参考电 压为 5V,因此这里可以选择 Vref=5V。各温度点对应的 ADC 转换后的数字量可以计算。 Dadc = 1024*Vadc/5V (2) 式(1) 、 (2)结合可以得到: Dadc = 1024*Rm/(Rv+Rm) (3) 如果这里取测量电阻 Rm 选择 4.7KΩ,那幺可以计算出在-55℃时所对应的 Dadc = 1024*1000/(250062+1000) = 4; 在 125℃时所对应的 Dadc = 1024*1000/(242.64+1000) = 824。根据这样的对应关系对数据进行预处理,得到如下处理结果如表 1-2 所示: tatic const Int16 NTCTAB2[181] = { 19,20,21,22,23,24,26,27,29,30,32,34, 36,38,40,42,44,47,49,52,55,57,61,64, 67,71,74,78,82,86,90,95,99,104,109,114, 120,150,156,161,168,172,180,187,194,201,208,215, 222,230,238,247,255,264,272,280,291,302,310,319, 328,338,347,357,367,376,384,395,405,414,424,434, 444,453,464,474,484,494,502,512,522,531,540,551, 560,569,579,586,595,604,613,624,633,642,650,658, 666,673,680,688,696,704,712,719,726,733,741,749, 755,760,767,774,780,785,791,798,804,811,816,821, 827,832,837,842,847,851,856,862,868,873,856,860, 864,868,872,876,879,883,886,890,893,896,899,902, 905,908,911,914,917,919,922,924,927,929,931,934, 936,938,940,942,944,946,947,949,951,953,954,956, 958,959,961,962,964,965,966,968,969,970,971,973, 974 };//4.7K 在 ADC 进行数据采集的过程中不可能每一个数值都在整温度所对应的 ADC 数值上, 所以如果在 个数据的中间一段就要对其进行进一步的精确定位。 这样就必须知道采集到的数据在表 1-2中的 体位置,因此要对数据表进行搜索、查找。线性表的查找(也称检索) ,可以有比较常见的顺序查 、折半查找及分块查找等方法,分析线性表 1-2 可以得到折半查找的算法是比较高效的。