新乡家电维修 发表于 2021-1-18 12:08 这都几个月了,还没有搞定呀 这并不是什么大问题的呀 1:先用手去按一下压力传感器的小孔,一般是会有变化的,再看一下里头的不干胶有没有坏, 如果不干胶没有坏,用手按下,计数能变化,大概就可以认为压力传感器是好的 如果压力传感器有胶布,那就撕下来 那就是你程序的问了 2:关于读取数据的处理方法,我上面已经说了 |
Y_G_G 发表于 2020-11-16 08:19 谢谢你,我试试,解决了就反馈到帖子里 |
新乡家电维修 发表于 2020-11-15 13:37 这个传感器的海拔数据是以有符号形式存放的,所以,严格来说,你是一定要对01H最高位进行检测的,然后还要进行处理,要么是显示负海拔,要么是不要这个数据,虽然说很少有低于海平面的时候,但数据有时候会是负数的 像你这个,我不太确定是什么原因,你可以看一下传感器的表面,那个小圆孔是不是有胶布贴在上面,如果有,就撕下来,数据就正常了 或者是你用手按住,海拔数据也会跟着变化的,一般没有什么东西刺到里面,它是不会坏的 |
MPL3115A2 I2C地址为0x60。 |
Y_G_G 发表于 2020-11-14 14:11 读出的压强633500,这个地区的海拔是72m左右,切换到海拔模式,不该出现最高位FF,不该出现海拔负数 的现象,你说的转换正负数有一定道理,我用一个塑料袋装着传感器,往里面打起了,是不是气压高打坏了, 今天又发货一个传感器,货到试试看就知道了,谢谢 |
Y_G_G 发表于 2020-11-14 11:05 我又买了一个压力传感器,在快递的路上 |
新乡家电维修 发表于 2020-11-13 21:46 应该是先读取01H,02H,03H这三个地址的数据, 然后,再检测01H最高位是0还是1, 如果是1,那就要进行补码运算 如果是0,那就直接采用这个数据,不用进行补码运算 |
新乡家电维修 发表于 2020-11-13 21:46 不会英文,我大概机翻看了一下数据手册 它的输出数据是:01H,02H,03H组成的一个"有符号""的完整数据 也就是说:01H为最高位字节,它这个是有符号的! 01H读取到了FFH,那就是负数了,所有的数据要进行补码运算才是真正的海拔高度了 你读取出来的三个地址数据实际上是补码,不知道你转换过来没有? 单独一个这寄存器坏了,这种想法就不要去想了,要真怕这样,就买两个传感器对比就知道了 |
Y_G_G 发表于 2020-11-13 08:22 00h,传感器状态寄存器,正常显示 01h压强或高度MSB,不正常 02h压强或高度CSB,正常显示 03h压强或高度LSB,正常显示 04h温度整数MSB,正常显示 05h温度小数LSB,正常显示 就中间夹着01地址寄存器不正常,不正确,气人不? |
新乡家电维修 发表于 2020-11-13 07:47 单独一个寄存器坏了?这可能性几乎为0,这个就不要考虑了 基本可以确定是软件的问题,主要是看数据处理部分和传感器本身数据的存放格式,英文资料太多了,加上不会英文 就算是中文的也是要看好长一段时间的,就不看了 |
Y_G_G 发表于 2020-11-12 17:24 地址我已经在资料里找到了解决了,读出的高度刚开始是02(MSB)B3(CSB)90(LSB),舍去小数部分。02ddH=73.3M,也是正确的海拔,现在反复修改高位总是FF,改成读压强模式,高位出现66,按照16进制转换成 十进制也不对,压强也不对,再切换测高模式,高位总是FF, 有没有单独寄存器坏的可能????郁闷啊,啊,啊 |
楼上正解,应该是你数据读取程序问题。 |
这个跟地址已经没有什么关系了,你只要能读取到一个,或者写入一个,就说明从机的地址是对的了,而且读取的的代码也是对的 剩下的就是软件或者硬件的问题了,要么是程序写得不对,要么是传感器的值原本就是这样的 |