本周末,我尝试将覆盆子pi与LM335温度传感器连接起来。我使用MCP 3208微控制器(通道0)连接传感器。我的目标是使用python 3脚本(类)在SPI模式下收集样本数据。我已经检查了线路,对我来说一切都很好,但我是一个初学者,对电子概念不太了解。在软件方面,我安装了声称与python 3兼容的quick2wire。事实上,我想用Python3API领导微控制器(而不是通过shell调用)
>
MCP3208 ADC:12位ADC/SPI。我使用CS0从GPIO。传感器连接到通道0(B)。参见数据表。
LM335:温度传感器。输出10mV/°K。最小5muA/最大5mA。它连接到MCP3208通道#0(A)。见数据表
220欧姆电阻器(C)。设置关于LM335输出和期望的温度范围覆盖率与我自己的计算:可能是一个问题。。。
LM335(齐纳二极管型)的连接方式如下:
部件接线如下图所示。请注意,黄色链路连接在CS0 SPI通道上的补鞋匠套件后面。
我使用下面的脚本查询CS0/Channel 0 GPIO接口。不幸的是,我还没有找到关于quick2wire python api的有用信息。我刚刚复制/粘贴了一个在同一目标中编写的示例。我不确定它是否真的有效:
#!/usr/bin/env python3
from quick2wire.spi import *
import sys, time
try:
channel = int(sys.argv[1])
except:
channel = 0
MCP3208 = SPIDevice(channel, 0)
while True:
try:
response = MCP3208.transaction(writing_bytes(0x41, 0x13), reading(1))
print ("output = %i" % ord(response[0]))
time.sleep(1)
except KeyboardInterrupt:
break
脚本输出:
output = 0
output = 0
output = 0
output = 0
output = 0
....
结果与通道1相同(argv=1)
由于MCP3208 Din(探头输出)接收到电压(见下文),quick2wire的读数应为18°C(今天我家的室内温度很低)
我错了吗?
我没有示波器,我只能读:
注意:LM335上未使用调整引脚,因此结果不准确,但电压在此处!
我认为这似乎是快速2线方面的一个问题。但是哪个?
quick2wire.spi.SPIDevice类在传输参数的结构、内容和输出响应格式方面有很多详细信息。
def transaction(self, *transfers):
"""
Perform an SPI I/O transaction.
Arguments:
*transfers -- SPI transfer requests created by one of the reading,
writing, writing_bytes, duplex or duplex_bytes
functions.
Returns: a list of byte sequences, one for each read or duplex
operation performed.
"""
transfer_count = len(transfers)
ioctl_arg = (spi_ioc_transfer*transfer_count)()
# populate array from transfers
for i, transfer in enumerate(transfers):
ioctl_arg[i] = transfers[i].to_spi_ioc_transfer()
ioctl(self.fd, SPI_IOC_MESSAGE(transfer_count), addressof(ioctl_arg))
return [transfer.to_read_bytes() for t in transfers if t.has_read_buf]
另一个问题:
提前感谢你的帮助。
我知道你可能打算学习如何使用ADC,所以这并不是你问题的答案(我将使用你的非常丰富的帖子-谢谢),但我知道温度传感器已经在GPIO串行线中打包数据,最适合树莓。
如果你还没有读过的话,你真的必须读这本很棒的教程。
我是新来的,正在拼命寻找解决我问题的办法。我目前正在尝试使用Python使我的Raspberry Pi与AD7705 16位ADC通信。但不幸的是,事情并没有按预期进行。。。电路如下所示:AD7705电路 我做了大量的研究,并仔细研究了数据表,以选择满足AD7705所有要求的部件。 为了保持我的PCB尽可能简单,我不能使用硬件SPI,所以我一定要bitbanging。由于CS与GND绑定,通信减少
检测物体的温度。 用法 Your browser does not support the video tag. 案例:温度计 说明:通过将温度传感器检测到的温度值转化为舵机转动的角度值,来展示度数。 所需模块:智能电源、温度传感器、双舵机驱动、舵机。
温度传感器模块用于检测水、人体等物体的温度。 净重量:13.7g 体积:24×24×14mm 参数 工作电压:5V 测量范围:-55℃~125℃ 测量精度:±0.5℃(-10℃~85℃) 工作电压:DC 5V 抗跌落能力:1.5m 工作温度(模块):-10℃~55℃ 工作湿度:<95%" 特点 高灵敏度 注意事项 测量温度超过100℃时, 传感器线材可能会损坏。请小心使用以免受损坏设备。
温度传感器能够直接和被检测物体接触,检测其温度。 使用前,请先将温度传感器探头与模块如上图组装。 生活实例 电子温度计上使用了温度传感器 参数 尺寸:24×20mm 读值范围:-55~125℃ 读值误差:±0.5℃ 工作电流:14mA
温度传感器能够直接和被检测物体接触,检测其温度。 使用前,请先将温度传感器探头与模块如上图组装。 生活实例 电子温度计上使用了温度传感器 参数 尺寸:24×20mm 读值范围:-55~125℃ 读值误差:±0.5℃ 工作电流:14mA