完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教各位,在做压力传感器数据处理的时候,用的电流型压力传感器,4ma~20ma对应压力0MPa~1.0MPa,数码管是3位一体共阴极,经过250欧姆电阻转换为1V~5V,显示时,百分位数字有时候会在两个数字之间来回跳动,数据处理如下:
压力传感器数据如下: 检定压力 实测输出 0 MPa 4.011ma 0.2MPa 7.205ma 0.4MPa 10.406ma 0.6MPa 13.609ma 0.8MPa 16.801ma 1.0MPa 20.008ma void adc() //AD转换程序,用的是10位AD { if(ADTRG==0) { aa=ADCRH; aa=(aa<<8)+ADCRL; ADTRG=1; //再次启动AD转换 } bb=aa; } void chuli() { if(bb<205) //这句话的含义是,当电流小于4ma时,减去4不会出现负数,从而导致单片机死机 bb=205; bb=(uint)(((((float)bb/1023)*5*1000)/245)*1000); //将bb的值转换为电流值,范围为4000~20000,其中的245为电阻值 table[0]=bb/10000; //将电流值保存到table[]数组中,通过串口发送给电脑 table[1]=bb%10000/1000; table[2]=bb%1000/100; table[3]=bb%100/10; table[4]=bb%10; table1[0]=(uint)(((float)(bb)-4000)/160+0.5)/100; //将上面的电流值转变为实际压力值,其中的0.5为四舍五入处理,并送数码管显示 table1[1]=(uint)(((float)(bb)-4000)/160+0.5)%100/10; table1[2]=(uint)(((float)(bb)-4000)/160+0.5)%10; } 实测压力检测数值还是比较准确,就是压力值的百分位有时候会在连续的两个数之间快速的闪烁,试了好几种方法都不行。 |
|
相关推荐
6个回答
|
|
自己先顶了!!!!!!!!!!!!!!!!!!!
|
|
|
|
算一焉,算到下面,我迷糊了
|
|
|
|
|
|
|
|
因为我定义的bb为uint型,计算时转为float,bb/1023,10位AD最大不就是1023嘛,乘以5变为电压值,再除以245欧姆变为电流值,因为数值太小,再乘以1000,再乘以1000,得到的数值范围在4000~20000之间。再把这个值转变为uint,分配给数组,这样得到的是不同压力下对应的电流值 对于压力的算法: 有压力参数可以得到变化1ma电流对应的压力,再乘以实际电流值就得到实际压力值。再分配给数组,送到数码管显示 |
|
|
|
是实物,就一个电流型压力传感器,输出4~20ma的电流,通过250欧姆的电阻转换为电压。没有使用电流检测芯片,因为对精度的要求没有这么高。能否详细说一下如何延长检测时间,实在AD程序里面加延时吗? |
|
|
|
沉了沉了!!!!!!!!!!!!!!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNK210使用指南 -CanMV版 V1.0》第八章 CanMV IDE初体验
1256 浏览 0 评论
过采样提高12位ADC精度在STM32主控上的实现(附电路及代码)
832 浏览 1 评论
飞凌嵌入式-ELFBOARD 解决PCB布线时无法捕捉到焊盘中心的问题
1000 浏览 0 评论
Openharmony软件评估指南-米尔瑞芯微RK3568开发板
1677 浏览 0 评论
STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压
1293 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11145 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-19 02:43 , Processed in 0.695064 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号