TI论坛
直播中

kasdlak

8年用户 1225经验值
擅长:光电显示
私信 关注
[问答]

ads7830使用5V为外部参考电压,当测量电压在0到2.5V左右时,芯片输出一次电压结果便不再输出,为什么?


    ads7830使用5V为外部参考电压,当测量电压在0到2.5V左右时,芯片输出一次电压结果便不再输出,而当测量电压在2.5到5V左右时可以一直更新读取的数据。u8 ads7830_write_read_one_byte(u8 addwrite,u8 dat,u8 addread)//0x90{                                                                                                                                                                                              u8 receive;    iic_start();          iic_write_byte(addwrite);        //发送写地址            //0x90        iic_wait_ack();               iic_write_byte(dat);        //发送写命令   //0x84        iic_wait_ack();                                                                                                                   iic_start();          iic_write_byte(addread);        //发送写命令                      //0x91        iic_wait_ack();               receive=iic_read_byte(1);        iic_nack;                                                                                                                  iic_stop();                                //产生一个停止条件        delay_ms(10);             return receive;}void main(){        u8 adc_buf[5];        u16 adc_value=0;        double adc_vol;//ADC电压值        u8 addwrite=0x90;u8 dat=0x84;u8 addread=0x91;u8 receive=0;//单端输出         while(1)        {                                                adc_value=ads7830_write_read_one_byte(addwrite,dat,addread);//测量电位器        adc_value=((float)adc_value/255)*500;                adc_buf[0]=gsmg_code[adc_value/100]|0x80;;                adc_buf[1]=gsmg_code[adc_value/10%10];        adc_buf[2]=gsmg_code[adc_value%10];                adc_buf[3]=0x3e;//显示单位V                smg_display(adc_buf,5);                       // LED=!LED;delay_ms(10);        }        }

回帖(1)

刘秀英

2024-11-14 11:50:22
ADS7830是一款12位的模数转换器(ADC),它具有一个可编程的参考电压输入,可以用于测量0到参考电压范围内的电压。根据您的描述,当测量电压在0到2.5V时,芯片只输出一次电压结果便不再输出,而在2.5V到5V时可以持续更新读取的数据。这可能是由于以下几个原因:

1. **电源和参考电压设置问题**:确保外部参考电压确实设置为5V,并且电源电压稳定。如果参考电压或电源电压不稳定,可能会导致ADC输出异常。

2. **输入保护**:检查是否有任何输入保护电路可能导致在低电压范围内的输入被阻断或限制。

3. **代码逻辑问题**:检查您的`ads7830_write_read_one_byte`函数实现,确保在读取低电压范围内的数据时没有逻辑错误导致只读取一次数据。例如,检查是否有条件语句错误地终止了数据读取循环。

4. **硬件连接问题**:检查ADS7830的硬件连接,确保所有连接都正确无误,没有短路或断路。

5. **芯片故障**:如果以上都检查过没有问题,可能是ADS7830芯片本身存在故障,这种情况下可能需要更换芯片。

6. **数据手册和配置**:重新检查ADS7830的数据手册,确保所有的配置和设置都按照手册要求进行。特别是参考电压和输入范围的配置。

7. **软件滤波**:如果软件中实现了某种形式的滤波,可能会在低电压范围内抑制数据更新。

为了进一步诊断问题,您可以尝试以下步骤:

- **简化测试**:使用一个已知的稳定电压源(如0V、2.5V和5V)测试ADS7830,看是否能够正确读取这些电压值。
- **调试代码**:在`ads7830_write_read_one_byte`函数中添加调试信息,打印出每次读取的数据和状态,以便跟踪问题发生的具体位置。
- **硬件检查**:使用万用表检查ADS7830的电源和参考电压输入,确保它们在规定的范围内。

希望这些建议能帮助您找到问题的原因并解决它。如果需要更具体的帮助,请提供更多的代码和硬件连接细节。
举报

更多回帖

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