树莓派4B连接PCF8591模块

1.、PCF8591是8位的数模\模数转换集成芯片,如图 1.(详细介绍可以点击参考

 图 1 PCF8591

2、AIN0-AIN3接模拟输入,比如气体传感器,能外接三个通道的模拟输入,AOUT是模拟输出。

SCL、SDA分别接树莓派引脚的2、3引脚,与树莓派进行I2C通信,VCC、GND接树莓派的5V,GND.

线路连接好后,树莓派命令行查看PCF8591的地址

sudo i2cdetect -y 1 

3、读取PCF8591的值,注意它的地址值和控制字

import matplotlib.pyplot as plt
import RPi.GPIO as GPIO
import numpy as np
import smbus

address = 0x48   # PCF8591地址
ain_address = [0x40, 0x41, 0x42, 0x43]   # 读取模拟输入,对应AIN0-AIN3

bus = smbus.SMBus(1)

bus.write_byte(address, ain_address[0])   # 0X40 AIN0
bus.read_byte(address)                    # 空读一下
value = bus.read_byte(address)            # 0x40通道的值


树莓派外接多个PCF8591

树莓派和PCF8591AD模块采用I2C通信协议的方式,地址由A2A1A0决定(如图2),通过改变地址的组合方式,理论上树莓派可以外接2^3 = 8个AD模块,但是由于PCF8591硬件编程地址引脚A2A1A0默认接地(见原理图),PCF8591模块的默认地址是0x48(1001000),为了树莓派能外接多个AD模块,就需要改变模块的默认地址。

改变PCF8591AD模块地址的方法:本方法中采用的方式是破坏PCF8591芯片的A2A1A0引脚接地状态(也就是暴力挑开A2A1A0引脚,强行改变它的地址)。第一个AD模块不改变引脚状态,得到默认地址0x48(1001000);第二个AD模块的A0接高电平,A1和A2接低电平,得到地址0x49(1001001);第三个AD模块的A1接高电平,A0和A2接低电平,得到地址0x4a(1001010);第四个AD模块的A2接高电平,A0和A1接低电平,得到地址0x4c(1001100)。

图 2 PCF8591控制字

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当年明月ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值