楼主来一份 |
ahshmj 发表于 2017-5-29 15:54 我用的是ADC0832芯片,它是8位的,经过转换就是0~255.我又改了一下程序,虽然还是有误差,但是整数位测量的比较准确了 void convdata(uchar i) { /* dis[0]=i/100; //gewei dis[1]=((i)%100)/10; //小数点后1位 dis[2]=((i)%100)%10; //小数点后2位*/ //AD转换值检测,测出整数位对应的8位数据 if((110<dat)&&(dat<=140)) { dis[0]=(i-110)/30; //gewei dis[1]=((i-110)%30)*10/30; //小数点后1位 dis[2]=(((i-110)%50)*10%30)*10%30; //小数点后2位 //0~1mm } if((140<dat)&&(dat<=160)) { dis[0]=((i-140)/20)+1; //gewei dis[1]=((i-140)%20)*10/20; //小数点后1位 dis[2]=(((i-140)%20)*10%18)*10%20; //小数点后2位 //1~2mm } if((160<dat)&&(dat<=170) ) { dis[0]=((i-160)/10)+2; //gewei dis[1]=((i-160)%10)*10/10; //小数点后1位 dis[2]=(((i-160)%10)*10%6)*10%10; //小数点后2位 //2~3mm } if((170<dat)&&(dat<=175)) { dis[0]=((i-170)/5)+3; //gewei dis[1]=((i-170)%5)*10/5; //小数点后1位 dis[2]=(((i-170)%5)*10%5)*10%5; //小数点后2位 //3~4mm } if((175<dat)&&(dat<=180)) { dis[0]=((i-175)/5)+4; //gewei dis[1]=((i-175)%5)*10/5; //小数点后1位 dis[2]=(((i-175)%5)*10%5)*10%5; //小数点后2位 4~5mm } } |
“ 刚测量ad转换得到的数据就有100了,最多也就180. 0~255的测量范围达不到 ”是什么意思? 程序是自己写的吗? 许多这类的测量,传感器给出的信号一般不可能刚刚和和理想的结果相对应,往往是一个线性数值(有时仅仅是一个相关的曲线),需要通过程序用一个系数进行矫正。有时还要进行插值计算。 |
yzwzfyz 发表于 2017-5-28 21:51 是一种简单易用的水位传感器,该传感器的工作原理是通过电路板上一系列裸露的印刷平行导线测量水量的大小。水量越多,就会有更多的导线被联通,随着导电的接触面积增大,输出的电压就会逐步上升。 但是实际检测的时候,刚测量ad转换得到的数据就有100了,最多也就180. 0~255的测量范围达不到。 所以我先测出整数位对应的数字量,然后分为五段了。虽然还是有偏差,但是整数位测出来比较准确了 |
1、液位检测的原理是什么? 2、液位是如何围成电压信号的? 能说清楚以上两点,估计问题就解决得差不多了。 |
急求急求! |