树莓派如何使用第三方库_树莓派 pcf8591 AD转换模块使用

因为 项目需要因此要使用 PCF8591

e3d11902765459c29194e31535dd9ee9.png

09f21db6e4cbde72b8cc12027d1cbb55.png

1.准备工具

树莓派pi一个。pcf8591一个。模拟量传感器一个(我这用 热敏电阻当温度计使用)。

2.原理。

PCF8591 是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个输出和一个行I2C总线接口。

3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。

器件的地址、控制和数据通过两线双向I2C总线传输。器件功能包括多路复用模拟输入、片上跟踪和保持功能、

8位模数转换和8位数模拟转换。最大转换速率取决于I2C 总线的最高速率。


引脚定义:
本模块左边和右边分别外扩2路排针接口,分别说明如下:
左边 AOUT 芯片DA输出接口
AINO 芯片模拟输入接口0 我在使用的时候接的时A0,接的是光敏传感器的AO口;
AIN1 芯片模拟输入接口1
AIN2 芯片模拟输入接口2
AIN3 芯片模拟输入接口3
右边 SCL IIC时钟接口 接树莓派的scl口
SDA IIC数字接口 接树莓派的sda口
GND 模块地 外接地
VCC 电源接口 外接3.3v-5v 我用的是3.3
我用的是pcf8591模块。包含了热敏和光敏电阻。
模块共有3个红色短路帽,分别作用如下:
P4 接上P4短路帽,选择热敏电阻接入电路

P5 接上P5短路帽,选择光敏电阻接入电路

P6 接上P6短路帽,选择0-5V可调电压接入电路

模块为下图。

下面为芯片引脚定义。

(1)、AD的位数:表明这个AD共有2^n个刻度,8位AD,输出的刻度是0~255. 8591就是8为精度的,因此它digtalRead的数据在0-255之间。
(2)、分辨率:就是AD能够分辨的最小的模拟量变化,假设5.10V的系统用8位的AD采样,那么它能分辨的最小电压就是5.10/255=0.02V。

AD转换的原理简单来理解就是通过电路将非电信号转为电信号,然后通过一个基准电压(PCF8591的基准电压是5V),然后判断这个这个电信号的电压高低,然后得到一个0-255(8位精度)的比值。

具体实现:
程序在进行 A/D 读取数据的时候,共使用了两条程序去读了 2 个字节:I2CReadACK(); val = I2CReadNAK(); PCF8591 的转换时钟是 I2C 的 SCL,8 个SCL 周期完成一次转换,所以当前的转换结果总是在下一个字节的 8 个 SCL 上才能读出,因此我们这里第一条语句的作用是产生一个整体的 SCL 时钟提供给 PCF8591 进行 A/D 转换,第二次是读取当前的转换结果。如果我们只使用第二条语句的话,每次读到的都是上一次的转换结果。

控制字节的第 0 位和第 1 位就是通道选择位了,00、01、10、11 代表了从 0 到 3 的一共4 个通道选择。
先连接好线

4111d2f1e6af76b420d27ca392534533.png

57493959c6df3c71b95f8066035ac2b1.png

在树莓派上开启SPI和I2C

de99d0e89fb082089468c745eff1393a.png

python 实现

创建 ac.py

编辑代码如下

#!/usr/bin//env python
# -*- coding:utf-8 -*-
import smbus   
import time
 
address = 0x48 ## address  ---> 器件的地址(硬件地址 由器件决定)
A0 = 0x40      ##  A0    ----> 器件某个端口的地址(数据存储的寄存器)
A1 = 0x41
A2 = 0x42
A3 = 0x43
bus = smbus.SMBus(1) ## 开启总线
while True: ##循环查询
    bus.write_byte(address,A2)  ## 告诉树莓派 你想获取那个器件的那个端口的数据
    value = 143-bus.read_byte(address) ## 获得数据
    print("当前温度:%1.0f  ℃ " %(value)) ##打印数据
    time.sleep(1) ##延迟1秒
然后测试 输入python./ac.py

de0011b7ed5f1f282abc37e166be79f3.png

如何同时使用多片 I2C 设备 :

同时使用两片I2C同型号设备时地址怎样设置 (如何更改器件地址)​blog.csdn.net
08410c0cfd4e96e1d09b1a075df9ba3f.png

​​

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值