项目场景:
先简单描述一下整个项目框架,本项目主要是基于STM32单片机,配合红外热成像模块,实现对人体体温和环境温度场的测量。问题描述:
整个项目已经测试完成,功能均正常,然后装入外壳测试也正常,隔一段时间后(也就是最近想要拿出来玩玩),发现红外测量数据不能正常上传,十分郁闷,但是作为硬件工程师,必须果断拆壳研究一下原因。原因分析:
第一步:先怀疑是红外模块与单片机连接线的问题,由于两者是20cm排线连接,可能是接插件松动,或者是信号干扰什么原因可能性较大,但是拆开外壳后检查接插头,没有什么问题,使用万用表短路测试,均正常,故排除了接插件问题。第二步:为了排除是否是连接线上受到了干扰问题。自己编写了一个简单的上位机软件,实现与单片机的数据通讯(当然可以直接用示波器去测量信号线的波形,但是身边没有这个设备就写了一个上位机通讯软件来测试一下)。在联通上位机软件的时候,红外模块会将其本身的参数信息发送给上位机,但是上位机给其发送温度测量指令时,始终没有温度数据返回,难道只是模块的接受线路受到了干扰?为了 排除这个原因,找到模块的其他操作指令(比如说模块默认参数信息的查询,修改等指令),依次进行发送测试,结果发现收发均正常,这就排除了信号干扰的想法。
第三步:在刚开始的时候也怀疑过是不是红外模块供电问题,但是发送除了温度测量指令之外的所有指令,收发均正常,所以就粗暴的认为模块供电是正常的,排除了这个问题,后来,怀疑是不是传感器坏掉了?想到可能性就付诸行动进行验证,拿起万用表先测试传感器的供电,结果发现,只用2.5V左右,后来查传感器手册发现其最低工作电压3.0V,2.5V左右供电传感器肯定不能正常工作啊,但是红外模块的单片机最低工作电压是1.8V,这就可以解释通为什么所有指令都可以收发正常,唯独温度测量数据不行,感觉马上就要接近真相了。
第四步:再测试整个红外模块输入电压,发现也是2.5V左右(传感器的供电是采用模块输入电压),但是我设计的红外模块一直供电是3.3V啊,这个就很简单的怀疑到是单片机板子的供电出现问题了,后经过排查,是给红外模块供电的电子负载开关芯片坏掉了。
解决方案:
提示:这里填写该问题的具体解决方案:
最坑的是这个芯片也不是完全坏掉,不接负载的时候,其输出是正常的3.3V,一接负载输出电压就跌至2.5V,导致我刚开始直接不接负载量的是有了错误的判断,更换芯片后输出均正常。
总结:电路出问题后,一定要先量电源,而且是要接负载量电源,不要想当然的认为,接触硬件电路设计调试后,发现真的是“一切皆有可能”~