TI论坛
直播中

陈霞

8年用户 1015经验值
私信 关注
[问答]

ADS1115采样值超出阈值后,ALERT pin有电平变,如何配置?


  • 我只需要 ALERT 功能。
    Continous-conversion mode 下
    COMP_MODE  :置0设置为Traditional mode;
    COMP_POL  :置0 active low
    COMP_LAT:置0 Non-latching comparator
    COMP_QUE[1:0] :10
    设置阈值
    LowThreshold = 1220
    highThreshold = 1280

    用直流源模拟输入:ADC 采样由1800-1000,ALERT 一直为低电平。并未出现手册中 Figure 28 图形

    另外:我将Hi_thresh register MSB to 1 and the Lo_thresh register MSB to 0 。ALERT pin是有连续的波形产生的,说明电路,CPU和ads1115通信 正常。

    我的需求就是,ADC采样值超出阈值后,ALERT pin有电平变化,请问如何配置?

回帖(1)

刘丰标

2024-12-5 18:00:50
根据您的描述,您需要配置ADS1115的ALERT功能,以便在采样值超出阈值时改变ALERT pin的电平。以下是配置步骤:

1. 首先,确保您的ADS1115已经正确连接到您的微控制器(如Arduino、STM32等)。

2. 根据您的需求,您需要将ADS1115配置为连续转换模式(Continous-conversion mode)并设置比较器(Comparator)参数。以下是配置参数:

   - COMP_MODE:置0,设置为Traditional mode
   - COMP_POL:置0,active low
   - COMP_LAT:置0,Non-latching comparator
   - COMP_QUE[1:0]:置10,设置阈值

3. 设置阈值值:

   - LowThreshold = 1220
   - HighThreshold = 1280

   您可以使用以下代码将这些值写入ADS1115的寄存器:

   ```c
   ads1115.writeRegister(ADS1115_REG_LO_THRESH, 0x04C8); // LowThreshold = 1220
   ads1115.writeRegister(ADS1115_REG_HI_THRESH, 0x0500); // HighThreshold = 1280
   ```

   注意:这里的寄存器值是16位的,所以需要将阈值值左移8位。

4. 配置ADS1115的比较器模式:

   ```c
   ads1115.writeRegister(ADS1115_REG_CONFIG, 0x8000 | 0x0000 | 0x0000 | 0x0000 | 0x0000 | 0x0000);
   ```

   这里的配置参数如下:

   - 0x8000:连续转换模式(Continous-conversion mode)
   - 0x0000:Traditional mode
   - 0x0000:active low
   - 0x0000:Non-latching comparator
   - 0x0000:阈值比较器(Comparator)

5. 现在,您可以读取ADS1115的采样值,并检查是否超出阈值。如果超出阈值,ALERT pin的电平将发生变化。

   ```c
   int16_t adcValue = ads1115.readADC_SingleEnded(0);
   if (adcValue < 1220 || adcValue > 1280) {
       // ALERT pin电平变化
   }
   ```

通过以上步骤,您应该可以实现在ADC采样值超出阈值时改变ALERT pin的电平。如果仍然有问题,请检查您的硬件连接和代码是否正确。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分