【问题标题】:I2C MCP3221 12 bit ADC reading 0 at any voltageI2C MCP3221 12 位 ADC 在任何电压下读数为 0
【发布时间】:2015-08-26 18:02:23
【问题描述】:

我已将 MCP3221 连接到 I2C 总线上的 Teensy 3.1 并将其连接到 Vref(3.3V),只是为了检查它是否正常工作。但是它读数为 0,即使我将它连接到不同的电压。是我的代码有问题还是应该换个新设备?

#include <MCP3221.h>
#include <Wire.h>
#include "SoftwareSerial.h"

#define ADDRESS 0x4D // 7 bits address is 0x4D, 8 bits is 0x9B

MCP3221 adc(155,0x3);

void setup() {
  Serial.begin(9600);
  Serial.println("First");
  Wire.begin(); //connects I2C

}


void loop() {

  Serial.println(adc.readI2CADC());

  delay(10);

}

【问题讨论】:

    标签: arduino i2c adc teensy


    【解决方案1】:

    在第 20 页的 Microchip 数据手册 DS21732C 中有一个器件地址列表。 取决于芯片上的标记代码。

    【讨论】:

      【解决方案2】:

      您没有使用正确的地址。您声明常量但从不使用它。 adc 声明应该是这样的

      MCP3221 adc(ADDRESS, 0x3);
      

      为什么?做了一点搜索,我发现不是 8 位地址(十进制的 155 或十六进制的 0x9B),而是have to use 7 bits address,在这种情况下为 0x4D。你也可以在this example 中看到这一点。我认为您应该在 Arduino IDE 中的文件 > 示例 > MCP3221 中有这个示例。

      查看示例,您传递给adc 的第二个参数似乎也可能是错误的,但我不确定这一点。如果您发现自己总是测量相同的值,请尝试更大的值。

      【讨论】:

      • 哦,哈哈。我现在正在使用 ADDRESS,但我看到了相同的输出。我什至换掉了一个新的 ADC 组件,只看到 0。我看到在库中,第二个参数实际上是毫伏,所以我将对象声明更改为: MCP3221 adc(ADDRESS, 0xBB8);还是不行
      猜你喜欢
      • 2018-06-20
      • 2018-09-25
      • 1970-01-01
      • 2017-11-20
      • 2022-01-17
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多