记录---通过树莓派进行I2C操作的软硬件设计(可选器件电压,同I2C地址的器件多个接入同BUS)

本文详细记录了一个硬件开发者在设计I2C分址器TCA9548A应用过程中遇到的问题与解决方案。项目旨在解决一个I2C总线上挂载多个相同地址器件的高耗电问题,通过不断迭代硬件设计,包括转接板的版本更新,电源管理的优化,以及软件模块的开发。设计涉及了DC-DC转换器的选择,电源分配,以及软件部分的I2C通道扫描和复位功能。最终目标是实现高效能、低能耗的I2C扩展系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计思路

  • 由于相同i2c地址的器件无法接入同一个bus,所以引入tca9548a分址器操作。通过对tca9548a的8各通道进行扫描,可以单独操作某一个通道的i2c器件。
  • 每次开启一个通道。当开启通道时候,tca9548a相当于透明,i2c操作直接对器件进行。
  • 由于此项目进行了一段时间,很多故事和摸索,作者认为有必要对种种学得进行归纳总计
  • 由于作者能力有限但是喜欢倒持,截至今日(12Jun2021), 本设计还在持续的摸索前进

1. 设计目的

  • 解决一个I2C bus上面挂多个相同地址的I2C期间
  • 解决期间高耗电问题

2. 初期想法

  • 设计一个硬件转接板,上带有6个I2C通道,用网口进行链接
  • 转接板需要和树莓派进行对接
  • 树莓派上用python通过smbus库进行i2c操作
  • 分址器选用tca9548a - 同时使用此器件的扩展功能,理论上可以扩展8个转接板)
  • 用AMS1117-1.8v, -3v, -5v进行输入5v转不同电压操作)
  • 两路分开通电保持足够的电流(1路直接给树莓派,1路给i2c器件)
  • 外壳设计用3d打印

3. 工具

  • DesignSpark PCB 进行pcb设计
  • DesignSpark Mechanical进行外壳设计
  • Notepad++ 进行软件开发

4. 心路历程

硬件设计

  1. 转接板V2
  • 左上角为tca9548a扩展口,其他6个网口为连接i2c器件
  • 靠近右上角为micro usb 5p的电源接口给传感器充电
  • 40pin连接器为对接树莓派接口
    在这里插入图片描述
  1. 连接板V3
  • 增加输入电压口因为micro usb 5p能力不足
  • 增加选址器扩展的上拉和下拉电阻
  • 对tca9548a复位叫上拉到vdd - tca9548a的电压用树莓派的3.3v
    在这里插入图片描述
  1. 转接板V4
  • 小路小修改;引出tca9548a的通道3,作为平时debug等操作用途
    在这里插入图片描述
  1. 转接板V5 (线路优化)
    在这里插入图片描述
  2. 转接板V6
  • 线路不变,只将40pin的连接器从正面移到背面,好进行结构设计
    在这里插入图片描述

在这里插入图片描述
6. 转接板v7

  • 移除tca9548a扩展功能(由于可能需求不大)
  • 减小PCB尺寸
  • 将2路5v电源输入,变成1路电源12v电源输入【左上角】,变压成2路电源
  • 用AMS1117-5v转12v到5v专门对树莓派供电
  • 用SY6103转12v到1.8v/3.3v/5v三路电压,通过短路帽进行电压选择
  • 用12v2A电源进行输入
  • 由于6个通道的传感器操作的电流(单通道设计150mA)和树莓派工作的电流(<350mA),为了正常工作,添置12v6A的电源
    在这里插入图片描述
    测试后: 可能ASM1117-5V无法带动树莓派(<350mA),怀疑此LDO买了假货。SY6103通过引线可以单独带动树莓派,但是可能发热太大,害怕如果连接6通道的i2c期间后,无法带起来。所以购买:
  • XRE10/24S05dcdc: 12v输入,5v输出,12W
  • XRE12/24S3V3:12v输入,3.3v输出,12W
  1. 转接板v8
  • SY6103:5v输出单独给树莓派供电
  • 修改pcb,加入大个子的dc-dc模块
  • 正在进行时
    在这里插入图片描述
  1. 转接板v8–》v11
  • 每个通道单独供电
  • 每个通道通过双路开关进行5v和3.3v的电压选择
    在这里插入图片描述

结构设计

  1. 此结构是通过板子V6进行的初版外壳设计,软件DesignSpark现学现用,需要改进地方:
  • 外壳开口3D打印以后,比较大,需要根据实际修正
  • PCB尺寸有点大,需要减少–》V7产生
  • 外壳内径宽(或者长)有点大,需要减少
  • 增加外壳组装的卡扣设计
  • 外壳需要进行倒角
    在这里插入图片描述
  1. 增加卡扣
    在这里插入图片描述

软件设计

  1. 开启tca9548a的各通道扫描
  • 开启树莓派I2C bus
  • 芯片的地址固定0x70
class RPI_runSensors():
    def __init__(self):
        self.bus = SMBus(1)
        self.address_TCA9548 = 0x70
  • 引用smbus2库的函数对i2c进行操作功能
    def write_data(self, address, value):
        msg = i2c_msg.write(address, value)
        self.bus.i2c_rdwr(msg)
        
    def read_numbers_bytes(self, address,num):
        msg = i2c_msg.read(address, num)
        self.bus.i2c_rdwr(msg)
        data = list(msg)
        return data
  1. 扫描函数
  • 将tca9548a接入树莓派的GPIO18 (也就是树莓派的12脚)用于复位。
  • 函数进行下个通道扫描的时候,都对芯片进行复位一次,不然会有错误提示
    def OpenChannel_TCA9548(self, channel):
        
        # print("set low")
        GPIO.output(18, GPIO.LOW)
        time.sleep(0.1)
        
        # print("set high")
        GPIO.output(18, GPIO.HIGH)
       
        # print("cleanup")
        # GPIO.cleanup()
        
        # time.sleep(1.0)
        
        if (channel == 0):
            action = 0x01
        elif (channel == 1):
            action = 0x02
        elif (channel == 2):
            action = 0x04
        elif (channel == 3):
            action = 0x08
        elif (channel == 4):
            action = 0x10
        elif (channel == 5):
            action = 0x20
        elif (channel == 6):
            action = 0x40
        elif (channel == 7):
            action = 0x80
        else:
            action = 0x00
        
        self.write_data(self.address_TCA9548, [action]) #[] is essential
  1. 模块化设计软件 – 方便以后接入更多的I2C器件,减少主文件的长度
    在这里插入图片描述
  • 树莓派的pin脚定义
    在这里插入图片描述

    5. BOM

零件个数链接备注
DC-005-5A-2.51https://item.taobao.com/item.htm?spm=a1z09.2.0.0.19212e8dIiqleY&id=566638444906&_u=v33ambv08b35.5*2.5
SHDR40W82P254_2X20_5130X500X161https://detail.tmall.com/item.htm?id=556128222391&spm=a1z09.2.0.0.606d2e8d6J8E9n&_u=v33ambv097c双排40针
TCA9548APWR1PWR封装
Molex Female Cat3 RJ45 Modular Jack, Right Angle, Surface Mount Mount, 437437https://item.taobao.com/item.htm?spm=a1z09.2.0.0.606d2e8d6J8E9n&id=534692293080&_u=v33ambv1c07SMT
ams1117-3.3v7SOT-229
ams1117-5.0v7SOT-229
SS12D00G57柄高5MM
10K电阻200603
TAJB226M016RNJ14https://item.taobao.com/item.htm?spm=a1z09.2.0.0.67002e8dDiq6DP&id=520379721933&_u=v33ambv8e2d钽电容,22uf
22uf2电解电容
## 6. 持续改进 
序号地点内容评论进展
1PCB 第5通道5v线路开路
2所有RJ45位置需要移到PCB最边缘需要相应修改外壳设计
3DCDC开孔需要增大方便更换
4点解电容需要放置到背面目前放正面但是焊接在背面,此修改需要和2结合
5外壳上盖增加高度,下盖减少高度方便制作卡扣(学习Lilygo设计)
6
7
8
10
## 7. 实物照片

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值