久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1480|回復: 6
打印 上一主題 下一主題
收起左側

關于ad1255輸出數值一直抖動

[復制鏈接]
跳轉到指定樓層
樓主
ID:1108750 發表于 2024-7-22 21:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大佬,我用AD1255采集電壓,再通過SPI通信傳給C8T6,但是讀數結果一直變化,沒有規律。想問問會是什么原因?
ad初始化函數:
void ads1255_init(void)
{
  SPI2_CS_RESET;
  delay_ms(500);
  /**************/
    while(DRDY==1);
    ads1255_selfcal();
    delay_ms(5000);
    ads1255_wakeup();
    delay_ms(2000);
    ads1255_reset();
    delay_ms(3000);
   ads1255_write_reg(ADS1256_STATUS,0x06);  //使用緩沖
   ads1255_write_reg(ADS1256_IO,0x00);//AIN0是正的,單端測量
   ads1255_write_reg(ADS1256_ADCON,ADS1256_GAIN_1);//時鐘輸出和傳感器檢測電流源功能關閉,PGA為1
   ads1255_write_reg(ADS1256_DRATE,ADS1256_DRATE_1000SPS);//數據速度1000SPS
    ads1255_selfcal();
    delay_ms(5000);
    SPI2_CS_SET;
}

AD讀取函數:
float get_ad24_data(void)
{   
  SPI2_CS_RESET;
  delay_ms(5);
  while(DRDY==1);
  delay_us(200);
        ads1255_write_reg(ADS1256_MUX,ADS1256_MUXP_AIN0);   //讀取通道0
  ads1255_rdata();
        ads1255_rdata();
        ads1255_rdata();
  delay_ms(5);
  retdata=ads1255_read();                       //讀取
  delay_us(5);
  SPI2_CS_SET;
        if (retdata>0x7FFFFF)                                                           // if MSB=1,
        {
                retdata -= 0x800000;                                                       //do 2's complement               
        }       
        return retdata;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:280298 發表于 2024-7-23 07:15 | 只看該作者
1. PGA增益多少?
2. 測量的目標電壓多少?
3. 模擬量,實際情況下,都是有波動的,具體的幅度視工況而定;
回復

使用道具 舉報

板凳
ID:878236 發表于 2024-7-23 11:26 | 只看該作者
我這個ads1256使用的是差分模式、PGA1、sps2.5、buffer off、自整定 開,在讀吉時利2401輸出的50uV電壓只會偏差3uV,跳動在1uV左右,如果你對讀取速率不是要求很高可以降低速率
回復

使用道具 舉報

地板
ID:1108750 發表于 2024-7-23 14:15 | 只看該作者
ag26259 發表于 2024-7-23 11:26
我這個ads1256使用的是差分模式、PGA1、sps2.5、buffer off、自整定 開,在讀吉時利2401輸出的50uV電壓只會 ...

我需要1000sps的采樣速率,現在就是讀數抖動很大,都不是小范圍那種誤差
回復

使用道具 舉報

5#
ID:1108750 發表于 2024-7-23 14:15 | 只看該作者
xo37 發表于 2024-7-23 07:15
1. PGA增益多少?
2. 測量的目標電壓多少?
3. 模擬量,實際情況下,都是有波動的,具體的幅度視工況而定 ...

PGA1,測量電壓2.5V,參考電壓2.5V,讀數在0-5v之間跳變,很不正常
回復

使用道具 舉報

6#
ID:878236 發表于 2024-7-23 16:00 | 只看該作者
hc2002 發表于 2024-7-23 14:15
我需要1000sps的采樣速率,現在就是讀數抖動很大,都不是小范圍那種誤差

你這個跳動,給我感覺是你寄存器配置有問題,再加上沒有在正確的時刻的讀取轉換完成的值,你在每次初始化的時候有沒有去拉低一下PDWN引腳,再拉高后執行自校準命令,還有你讀數據代碼里面的讀三個8位數據,為什么連著讀3次又延時5ms再讀一次,你再延時5ms已經過了你前面DRDY轉換好的狀態到第二次轉換里面了,你再根據datasheet去修改一下你的驅動我這里有個1256的部分代碼,基本沒什么區別。不過你讀取電壓2.5V,應該不需要24位這種精度的ADC吧
  1. /*
  2. *********************************************************************************************************
  3. *        函 數 名: ADS1256_ReadData
  4. *        功能說明: 讀ADC數據
  5. *        形    參: 無
  6. *        返 回 值: 無
  7. *********************************************************************************************************
  8. */
  9. static int32_t ADS1256_ReadData(void)
  10. {
  11.         uint32_t read = 0;

  12.         CS_0();        /* SPI片選 = 0 */

  13.         ADS1256_Send8Bit(CMD_RDATA);        /* 讀數據的命令 */
  14.         
  15.         ADS1256_DelayDATA();        /* 必須延遲才能讀取芯片返回數據 最小延遲 6.5uS, 此處取10us */

  16.         /* 讀采樣結果,3個字節,高字節在前 */
  17.         read = ((uint32_t)ADS1256_Recive8Bit()&0xff) << 16;
  18.         read |= ((uint32_t)ADS1256_Recive8Bit()&0xff)<< 8;
  19.         read |= ((uint32_t)ADS1256_Recive8Bit()&0xff) << 0;

  20.         CS_1();        /* SPI片選 = 1 */
  21.         
  22.         /* 負數進行擴展。24位有符號數擴展為32位有符號數 */
  23.         if (read & 0x800000)
  24.         {
  25.                 read += 0xFF000000;
  26.         }
  27.         
  28.         return (int32_t)read;
  29. }
  30. /*
  31. *********************************************************************************************************
  32. *        函 數 名: ADS1256_ReadAdc
  33. *        功能說明: 讀指定通道的ADC數據
  34. *        形    參: 無
  35. *        返 回 值: 無
  36. *********************************************************************************************************
  37. */
  38. int32_t ADS1256_ReadAdc(uint8_t _ch)
  39. {
  40.         /* ADS1256 數據手冊第21頁 */
  41.         ADS1256_WaitDRDY();                /* 等待 DRDY = 0 */
  42.         switchChannel(_ch);        /* 切換模擬通道 */        
  43.         delay_us(2);
  44.         ADS1256_WriteCmd(CMD_SYNC);
  45.         delay_us(2);
  46.         ADS1256_WriteCmd(CMD_WAKEUP);
  47.         delay_us(5);
  48.         return (int32_t)ADS1256_ReadData();
  49. #endif        
  50. }
復制代碼



回復

使用道具 舉報

7#
ID:1108750 發表于 2024-7-23 22:27 | 只看該作者
ag26259 發表于 2024-7-23 16:00
你這個跳動,給我感覺是你寄存器配置有問題,再加上沒有在正確的時刻的讀取轉換完成的值,你在每次初始化 ...

好的,謝謝您!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 男女视频在线观看 | 一级毛片在线播放 | 亚洲成人一区二区三区 | 在线免费观看毛片 | 国产乱码精品1区2区3区 | 免费久久网站 | 九九热在线观看视频 | 成人av一区二区三区 | 亚洲精品视频在线观看视频 | 亚洲精品乱码久久久久久9色 | 天天插天天操 | 国产视频第一页 | 精品av久久久久电影 | 黄网免费看 | 久久99久久98精品免观看软件 | 午夜av毛片| 日韩免费av| 亚洲乱码一区二区三区在线观看 | 亚州激情 | 国产精品永久免费观看 | 99re热这里只有精品视频 | 91久久久久久久久久久 | 国产欧美在线观看 | 四虎海外 | 天堂一区 | 国产xxxx在线 | 日韩电影在线 | 九九综合 | 女人一区| 999久久久 | 久久综合狠狠综合久久综合88 | 亚洲欧美国产一区二区三区 | 欧美久久精品一级c片 | 欧洲av一区 | 波多野结衣精品 | 久久综合欧美 | 男人的天堂在线视频 | 高清视频一区二区三区 | 国产999精品久久久影片官网 | 九七午夜剧场福利写真 | 亚洲精品一二三区 |