如数据表所述,RPI_MCP3008是一个用于监听MCP3008 A/D转换器芯片的库。
mcp3008的Python项目详细描述
rpi_mcp3008是一个监听mcp3008 a/d转换器芯片的库 有一个RPI。这个库实现了示例通信协议 描述于 datasheet。
通过rpi spi端口进行通信,使用 SpiDev
接线
连接下表中的SPI数据电缆。选择CE0或 CE1连接到CS。
rpi spi gpios
RPi GPIO | Mode |
---|---|
GPIO 07 | CE1# |
GPIO 08 | CE0# |
GPIO 09 | MISO |
GPIO 10 | MOSI |
GPIO 11 | SCLK |
MCP3008引脚
Pin | Description | Pin | Description |
---|---|---|---|
01 | CH0 | 09 | Vdd - Supply voltage (2.7V - 5.5V) |
02 | CH1 | 10 | Vref - Reference voltage |
03 | CH2 | 11 | AGND - Analog ground |
04 | CH3 | 12 | CLK - SPI Clock (SCLK) |
05 | CH4 | 13 | Dout - Data out (MISO) |
06 | CH5 | 14 | Din - Data in (MOSI) |
07 | CH6 | 15 | CS - Chip select (CE0# or CE1#) |
08 | CH7 | 16 | DGND - Digital ground |
请检查Adafruit guide 有关配线的详细信息,请参见MCP3008
用法
rpi-mcp3008使用with语句正确处理spi总线 清理。
importmcp3008withmcp3008.MCP3008()asadc:printadc.read([mcp3008.CH0])# prints raw data [CH0]
可以正常实例化对象,但必须 在终止程序之前调用close方法。
importmcp3008adc=mcp3008.MCP3008()printadc.read([mcp3008.CH0])# prints raw data [CH0]adc.close()
初始化参数是MCP3008(bus=0, device=0),其中: MCP3008(X, Y)将打开/dev/spidev-X.Y,与 spidev.SpiDev.open(X, Y)两个参数都是可选的,并且具有 默认值0
方法
目前有两种实现方法:
defread(self,modes,norm=False):''' Returns the raw value (0 ... 1024) of the reading. The modes argument is a list with the modes of operation to be read (e.g. [mcp3008.CH0,mcp3008.Df0]). norm is a normalization factor, usually Vref. '''
defread_all(self,norm=False):''' Returns a list with the readings of all the modes Data Order: [DF0, DF1, DF2, DF3, DF4, DF5, DF6, DF7, CH0, CH1, CH2, CH3, CH4, CH5, CH6, CH7] norm is a normalization factor, usually Vref. '''
- modes参数必须是至少具有16种模式之一的列表 列出bellow
- 参数norm是重新缩放原始值的规范化因子 数据,通常为vref
固定模式
您还可以用fixed mode声明类,这将使 实例可调用,并始终返回所列模式的值。 同样,在调用 实例。
importmcp3008withmcp3008.MCP3008.fixed([mcp3008.CH0,mcp3008.DF0])asadc:printadc()# prints raw data [CH0, DF0]printadc(5.2)# prints normalized data [CH0, DF0]
MCP3008操作模式
MCP3008有16种不同的操作模式:它可以监听 单独信道单端或处于伪差分模式 差异
Single Ended | Differential |
---|---|
CH0 | DF0 (CH0 = IN+; CH1 = IN-) |
CH1 | DF0 (CH0 = IN-; CH1 = IN+) |
CH2 | DF0 (CH2 = IN+; CH3 = IN-) |
CH3 | DF0 (CH2 = IN-; CH3 = IN+) |
CH4 | DF0 (CH4 = IN+; CH5 = IN-) |
CH5 | DF0 (CH4 = IN-; CH5 = IN+) |
CH6 | DF0 (CH6 = IN+; CH7 = IN-) |
CH7 | DF0 (CH6 = IN-; CH7 = IN+) |
调用时使用上表作为操作模式 MCP3008.read(modes)或设置MCP3008.fixed(modes)模式。 (例如MCP3008.read([mcp3008.CH0, mcp3008.DF1]))