本帖最后由 秉烛良宵 于 2017-7-30 13:41 编辑
前两天找器件时,发现有一个湿度传感器模块,记得这个模块价格挺高的,放着也是浪费,何不拿来玩呢?仔细看下发现上面有一个TO-92封装的位置,这个刚好可以安装DS18B20。接着想想要用什么显示屏和上面单片机呢?数码管电路焊接麻烦,简单的还是5110。手头上有以前做充电器项目剩下的控制板,用的单片机是STM8L152C6。焊接电路完成后感觉这么好的一片单片机只用这点功能太浪费了,不然再搞点东西上去,在一个盒子里找到了N年前买的线性霍尔传感器。好吧,也把这个加上。本来还想加个光敏电阻可以做亮度测量,考虑到线性度不好,程序处理麻烦所以打消了这个想法。预计整个制作时间是一个下午加一个晚上的,而时间却花了两天时间才完成。第一个耗时的是取模,因为嫌弃取模软件生成的字体,所以都是自己手动点出来的。第二个耗时的是DS18B20的调试。DS18B20复位一直没反应,首先要怀疑的是不是错了,测量了下湿度传感器模块预留的TO-92封装引脚,果真和DS18B20不对应,赶紧拆卸重新焊。再次调试还是复位后没有收到低电平,仔细看代码发现自己犯了一个SB错误,DS18B20是移植51的,而STM8的IO是要设置方向的,然而改正后还是不行,当时都快怀疑是不是18B20已经坏了,用示波器看下是什么情况,一看才发现IO口输出0时DS18B20的数据口有2.5V电平,一检查是电源接错地方了(难怪湿度传感器一直都是100%),改完电源后复位终于有反应了,复位有反应但是却死在了读取数据的地方,这是什么情况?仿真参看变量发现GPIO_ReadInputDataBit(T_DQ_PROT,T_DQ_PIN);这个函数读出来的并不是0和1,而是0和0x40(T_DQ_PIN为第6脚)。这个问题在移植程序时还真没想到。经过这么多的折腾,终于看到了温度值。下面看下折腾完的结果吧。
湿度传感器是HS1101,刚查了下大概是7元,但是整个模块估计要20元。
线性霍尔传感器49E,焊接完后的引脚部分用黑色热熔胶包裹(电源有焊个小电容滤波)。
用螺丝刀靠近可以看到磁感应强度值,单位是高斯。最大能达到1500高斯。
螺丝刀靠近另一面,显示的是负值。
请忽视背面
源代码在下面:
Source.zip
(15.19 KB)
|