想在一条总线上挂多个18b20,并读取每个的测量温度。
问题是:
1、1个18B20的应用,会看到信号线上会加一个上拉电阻,那一条总线上挂多个18b20,还需要上拉电阻吗?
2、一条总线上最多可以挂多少个,有实际应用或知道有人应用过的案例最多挂了多少个?
3、总线长度有要求吗,超过3米会有什么影响吗?
4、如何实现单总线读取多个18b20的数据呢?
1、多个18B20共用一个上拉电阻就可以了。
2、这个没有尝试过,可以试一下。
3、超过3M会影响读取时序。
4、具体操作步骤查看手册。
1 需要上拉电阻,一般只需要一个,如果总线比较长可以多个间隔放置
2 理论上可以挂无限个,但是受限于总线驱动能力,不加驱动有挂10个成功的
3 距离越长,损耗越大,通信速率越低,距离太长会拉长数据的上升下降时间,使数据通信失败
4 每个18B20都有唯一的地址,访问地址来分开通讯
问题回答如下:
1. 总线上只用挂一个电阻,但是如果18B20越多,那总线上的等效电容会越大,此时要适量降低阻值,以适应通讯速度。
2. 没有找到单总线最多挂载多少设备的数据,但是每个18B20内部有一个64bit的地址,这么看的话,理论上挂载的设备是很多的。实际应用中,我挂载过4个,通讯成功。
3. 总线的长度越长,线阻越大,会影响总线传输波形,适当降低上拉电阻阻值增加驱动能力。
4. 单总线协议中,如果挂载多个设备,开始通讯时,会启动搜索ROM命令(如果只有一个设备,则跳过此步骤), 之后采用二叉树算法,获取到总线上所有设备的64bit地址。读取温度值时,则先发送匹配rom命令,和对应地址通讯,得到该地址设备的温度值。
1上拉电阻需要加的,加到18B20的附近
2这个没有测试过
3可以超过三米,我用18b20做过汽车的温度显示仪表,已经超过3米,电阻加到传感器附近,通讯正常
4这可以网上查找相应的程序,有相应的程序实例
1、那个上拉电阻是用于提高带负载能力,与调节总线电压的,即使是多个18B20,也只需要一个上拉电阻
2、最多试过挂过3个,更多的没试过,主要是总线带载能力限制
3、有,线太长,会导致信号质量变差
4、靠设置不同的地址来指定通信的对象
1如果数量多可以适当减少电阻,一般减少电阻值20到50%
2,测试过3个没有问题,理论上可以很多,你可以用示波器观察波形,如果边沿上升缓慢那就是数量差不多了,也可以适当减少电阻值
3,3m有点长,如果数量多会引起通讯通讯错误
4首先需要单独把每个id记下来,然后告诉mcu,这样就是一条总线通过分时读取多个温度
首先第一个问题,18b20之所以需要上拉电阻是因为他内部是开漏输出模式,这样有利于电平匹配还有功耗控制。因此你如果多个传感器挂在一条总线上,电阻相当于并联,所以一般一个上拉电阻就够了。
第二个问题,挂4个做过。
第三个问题,我觉得3米有点长了,根本就不适合数字信号传输,如果非要那么用,可以用带施密特特性的非门一个接在发送端,一个放在接收端,有利于信号的稳定性以及抗干扰。
第四个问题,通过设备地址来判断通讯的对象,具体数据手册会有详细时序图