在树莓派上面使用 MCP3424 18位AD转换模块

2017-09-081.9万
AI 快速预览详细 收起
本文介绍了如何在树莓派上使用MCP3424 18位AD转换模块进行高精度电压测量。首先需要安装最新的树莓派镜像并启用I2C接口功能。接着,安装Python依赖库,特别需要注意的是使用0.3.3版本的MCP342x库以避免依赖问题。最后,通过提供的Python脚本可以读取MCP3424模块的数据。这个过程可以帮助用户快速实现高精度电压测量,适用于各种树莓派项目。
前段时间在DFRobot的用户群里面有个用户用到了这个模块:
他想要一个中文的教程, 在LZ的努力下, 终于跑通了.
1. 安装最新的树莓派镜像, 可以参考这个帖子:
2. 然后进行连线的工作 (MCP3424上面的编码器全部拨到ON的一侧)
在树莓派上面使用 MCP3424 18位AD转换模块图1

  • MCP3424 GND >> 树莓派 Ground
  • MCP3424 +5V >> 树莓派 DC Power 5V
  • MCP3424 SCL >> 树莓派 GPIO03(SCL1, I2C)
  • MCP3424 SDA >> 树莓派 GPIO02(SDA1, I2C)
  • MCP3424 C*+ 和 C*- 接上对应需要测电压的两端.

3. 首先要启用I2C接口功能,
  • 打开Terminal.
  • 键入
    1. sudo raspi-config
    复制代码

  • 用上下键选择 5 Interfacing Options , 按回车进入.
  • 选择 5 I2C , 按回车确认.(需要重启)

4. 安装Python依赖库(树莓派需要联网)
  • 更新包
    1. sudo apt-get update
    复制代码

  • 安装包
    1. sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev
    复制代码

  • 安装Python包(最新的0.3.4会出现依赖问题, 这里使用了0.3.3版)
    1. pip install MCP342x==0.3.3
    复制代码


5. 运行下面的Python脚本就可以了:
  1. #!/usr/bin/env python
  2. import glob
  3. import logging
  4. import smbus
  5. from MCP342x import MCP342x
  6. import numpy as np
  7. __author__ = 'Steve Marple'
  8. __version__ = '0.3.3'
  9. __license__ = 'MIT'
  10. def get_smbus():
  11.     candidates = []
  12.     prefix = '/dev/i2c-'
  13.     for bus in glob.glob(prefix + '*'):
  14.         try:
  15.             n = int(bus.replace(prefix, ''))
  16.             candidates.append(n)
  17.         except:
  18.             pass
  19.     if len(candidates) == 1:
  20.         return smbus.SMBus(candidates[0])
  21.     elif len(candidates) == 0:
  22.         raise Exception("Could not find an I2C bus")
  23.     else:
  24.         raise Exception("Multiple I2C busses found")
  25. logging.basicConfig(level='DEBUG')
  26. logger = logging.getLogger(__name__)
  27. bus = get_smbus()
  28. # Create objects for each signal to be sampled
  29. addr68_ch0 = MCP342x(bus, 0x68, channel=0, resolution=18)
  30. addr68_ch1 = MCP342x(bus, 0x68, channel=1, resolution=18)
  31. addr68_ch2 = MCP342x(bus, 0x68, channel=2, resolution=18)
  32. addr68_ch3 = MCP342x(bus, 0x68, channel=3, resolution=16)
  33. # Create a list of all the objects. They will be sampled in this
  34. # order, unless any later objects can be sampled can be moved earlier
  35. # for simultaneous sampling.
  36. adcs = [addr68_ch0, addr68_ch1, addr68_ch2, addr68_ch3]
  37. r = MCP342x.convert_and_read_many(adcs, samples=2)
  38. print('return values: ')
  39. print(r)
  40. # , scale_factor=2.448579823702253
  41. addr68_ch0.convert()
  42. print(addr68_ch3.convert_and_read())
复制代码

玩得开心 :)

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(7)
DFryDACc2uu
DFryDACc2uu
您好,我是用您的程序,发现有很多地方未被定义是什么情况呢?
gray6666
gray6666
正好学到这里,很及时的帖子
gray6666
gray6666
期待学习更多案例
gada888
gada888
学习了
HC
HC
这个模块能接入电压和电流吗?输入量最大是多少?
Kanekiyi
Kanekiyi
[font=宋体]你好,打扰了。[/font]
[font=宋体]我参照你的教程,执行到第4步的 pip install[backcolor=rgb(255, 255, 255)] [/backcolor]MCP342x 处有问题了如下图[/font]
[font=宋体]请问这怎么解决?[/font]
[font=宋体]是不是安装这个之前要安装驱动,我看了网站[backcolor=rgb(255, 255, 255)]MCP3424购买页面下面有个树莓派驱动安装,难道是要先安装驱动?[/backcolor][/font]
[backcolor=rgb(255, 255, 255)][font="]打扰到你十分抱歉,项目急需望能回复。[/font][/backcolor]
Angleo
Angleo
作者
回复Kanekiyi
不需要手动安装驱动.
这是因为最新版的MCP342x库安装时出现了依赖问题.
可以回滚到0.3.3版, 运行下面的代码安装
pip install MCP342x==0.3.3
pATAq
pATAq
不错,支持一下
- 没有更多了 -