chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

高精度ADC——ADS1146電路設(shè)計及RT-Thread程序開發(fā) | 技術(shù)集結(jié)

RT-Thread官方賬號 ? 2025-11-09 09:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

ADS1146器件是高精度 16 位模數(shù)轉(zhuǎn)換器ADC),集成了眾多功能,可降低傳感器測量應用中的系統(tǒng)成本和組件數(shù)量。這些器件具有低噪聲、可編程增益放大器(PGA)、高精度的 (ΔΣ)ADC 以及單周期穩(wěn)定數(shù)字濾波器和內(nèi)部振蕩器

本文將介紹對ADS1146的外部電路設(shè)計和利用RT-Thread實現(xiàn)去ADS1146的電路驅(qū)動。

電路設(shè)計

首先利用電壓基準芯片生成穩(wěn)定的1.25V電壓作為ADS1146的偏置電壓。如果使用的是ADS1147或ADS1148的話,內(nèi)部可生成2.408V的偏置電壓,可以不使用外部電壓作為偏執(zhí)電壓。電壓基準電路如圖。

00af2772-bd0c-11f0-8ce9-92fbcf53809c.png

使用外部電壓的好處是,外部電壓穩(wěn)定,能提高測量精度;外部電壓可調(diào)節(jié),可以按需求選擇量程。

模擬電壓AVCC范圍為2.7V——5.25V,外部偏置電壓要求范圍在0.5V——AVCC-1V,也就是說最大范圍可為0.5V——4.25V。

測量的輸入電壓只能在外部偏置電壓的絕對值范圍內(nèi)。部分手冊參數(shù)如圖。

00c554d4-bd0c-11f0-8ce9-92fbcf53809c.png

具體的ADS1146電路如圖所示,

DVDD、DGND號腳作為數(shù)字電源輸入,0.1uf電容經(jīng)常作為芯片電源的旁路電容使用。

CLK短接DGND可激活內(nèi)部時鐘。

RESET為復位引腳,低電平有限,搭配C5和R5可上電初始時自動復位。

REFP、REFN作為外部偏置電壓輸入。

AINP、AINN作為測量引腳輸入,該輸入是一個差分信號。將AINN端接至REEP,優(yōu)點是可以實現(xiàn)正負雙向測量。也就是說AINN端穩(wěn)定為1.25V,AINP在外部測量信號作用下在0——2.5V變化,差分電壓在-1.25——1.25V變化,實現(xiàn)了正負雙向測量。如果不AINN不接REEP,也就是AINN為0V,AINP必須大于0,那差分電壓只能在0——1.25V變化,只能單向測量。

C8用于濾除差模干擾、C14、C15可濾除共模干擾,R10、R11可減少輸入差分信號的紋波。R12、R13為下拉電阻,懸空時,AINP下拉至0V、AINN因為端接REEP,會保持1.25V不變,這么看R13似乎沒有作用,但是在共模信號上R13可與R12保持對稱,這樣在濾除共模干擾會達到同程度濾除,可避免引入差模干擾。也就是說懸空時會采集到-1.25V。

SPI的四個引腳用來實現(xiàn)SPI通信,這個大家都知道。

START用于發(fā)送芯片啟動轉(zhuǎn)換信號。

DRDY用于接受轉(zhuǎn)換完成信號。

AVDD、AVSS是模擬電壓輸入端,通過磁珠M1和C9可以接入數(shù)字信號源,不過為了避免干擾,在PCB布局時最好模擬電壓區(qū)域和數(shù)字電壓區(qū)域隔開,只留一個通路連接。

右端每個信號都串接了47R電阻、這些電阻可平滑尖銳的過渡,抑制過沖,并提供一定的過壓保護。

00df3336-bd0c-11f0-8ce9-92fbcf53809c.png

因為我這里ADS1146模塊使用的電源和MCU使用的不是同一類電源,所以通信接口必須使用以下這種數(shù)字信號轉(zhuǎn)換器進行連接,此時上面信號上的47R電阻可接可不接,應為數(shù)字信號轉(zhuǎn)換器具有抑制過沖、電壓保護等功能。如果是信號直接接入MCU,該47R還是建議使用的。

00ec9c9c-bd0c-11f0-8ce9-92fbcf53809c.png

到這,ADS1146的外圍電路設(shè)計已經(jīng)完成了,下面開始使用RT-Thread實現(xiàn)程序開發(fā)。

RT-Thread 程序開發(fā)

這里是基于RT-Thread studio實現(xiàn)ADS1146對電壓的精準采集,開發(fā)板是我自己畫的,MCU是STM32F103C8T6,使用的RT-Thread驅(qū)動是5.1.0

(如果遇到無法下載情況,可以把該位置ROM的值調(diào)大一點,STM32F103C8T6的實際ROM只有64KB,代碼編譯完達到了100KB,所以就無法下載,但是實際下載進芯片,發(fā)現(xiàn)實際只占用了不到一半ROM,所以我這自行調(diào)整到512KB來規(guī)避檢查,實際的占用情況可以在finsh控制臺使用free命令查看)

00fbcf14-bd0c-11f0-8ce9-92fbcf53809c.png

創(chuàng)建工程

5.1.0的驅(qū)動對stm32的支持,可以參考文章《基于RT-Thread的STM32F4開發(fā)第八講——SPI(普通、DMA、SFUD)》(鏈接:https://blog.csdn.net/weixin_58172114/article/details/148234716?spm=1001.2014.3001.5502)完成工程的創(chuàng)建(普通模式即可)。嫌麻煩的可以用4系類的驅(qū)動。

下面主要講解ADS1146驅(qū)動代碼實現(xiàn)

ads1146.c

代碼總覽如下:

/** Copyright (c) 2006-2021, RT-Thread Development Team** SPDX-License-Identifier: Apache-2.0** Change Logs:* Date Author Notes* 2025-09-28 H1567 the first version*/#include"ads1146.h"#defineDBG_TAG "ads1146"#defineDBG_LVL DBG_LOG#includestructrt_spi_device *ads1146_handle1;structrt_spi_device *ads1146_handle2;structrt_spi_device*ads1146_handle3;/*************************************************************** * @brief ADS1146的SPI設(shè)備創(chuàng)建 * @param * @return**************************************************************/voidSPI_device_creation(void){#ifdefBSP_USING_SPI1_ADS1146 rt_err_t spi10_flag; structrt_spi_configurationads1146_cfg1; spi10_flag = rt_hw_spi_device_attach(SPI1_BUS_NAME, SPI1_NAME, GPIOA, GPIO_PIN_4);//更改為實際的片選引腳 if(spi10_flag != RT_EOK){ LOG_D("failed to spi10 register"); return; } ads1146_handle1 = (struct rt_spi_device *)rt_device_find(SPI1_NAME); if(ads1146_handle1 != RT_NULL){ ads1146_cfg1.mode = RT_SPI_MSB | RT_SPI_MASTER | RT_SPI_MODE_1; ads1146_cfg1.data_width = 8; ads1146_cfg1.max_hz = 1125*1000; rt_spi_configure(ads1146_handle1, &ads1146_cfg1); }#endif#ifdefBSP_USING_SPI2_ADS1146 rt_err_t spi20_flag; structrt_spi_configurationads1146_cfg2; spi20_flag = rt_hw_spi_device_attach(SPI2_BUS_NAME, SPI2_NAME, GPIOB, GPIO_PIN_12);//更改為實際的片選引腳 if(spi20_flag != RT_EOK){ LOG_D("failed to spi20 register"); return; } ads1146_handle2 = (struct rt_spi_device*)rt_device_find(SPI2_NAME); if(ads1146_handle2 != RT_NULL){ ads1146_cfg2.mode = RT_SPI_MSB | RT_SPI_MASTER | RT_SPI_MODE_1; ads1146_cfg2.data_width = 8; ads1146_cfg2.max_hz = 1125*1000; rt_spi_configure(ads1146_handle2, &ads1146_cfg2); }#endif#ifdef BSP_USING_SPI3_ADS1146 rt_err_t spi30_flag; structrt_spi_configurationads1146_cfg3; spi30_flag = rt_hw_spi_device_attach(SPI3_BUS_NAME, SPI3_NAME, GPIOB, GPIO_PIN_12);//更改為實際的片選引腳 if(spi30_flag != RT_EOK){ LOG_D("failed to spi30 register"); return; } ads1146_handle3 = (struct rt_spi_device *)rt_device_find(SPI3_NAME); if(ads1146_handle3 != RT_NULL){ ads1146_cfg3.mode = RT_SPI_MSB | RT_SPI_MASTER | RT_SPI_MODE_1; ads1146_cfg3.data_width = 8; ads1146_cfg3.max_hz = 1125*1000; rt_spi_configure(ads1146_handle3, &ads1146_cfg3); }#endif LOG_D("succeed to ADS1146 SPI device creation");}/*************************************************************** * @brief ADS1146的初始化 * @param * @return**************************************************************/voidADS1146_init(void){ uint8_t INIT_control_1[2] = {0x01,0x06}; uint8_t INIT_control_2 = 0x16;#ifdefBSP_USING_SPI1_ADS1146 rt_pin_mode(ADS1_start, PIN_MODE_OUTPUT); rt_pin_write(ADS1_start, PIN_HIGH); rt_pin_mode(ADS1_drdy, PIN_MODE_INPUT_PULLUP); rt_spi_send(ads1146_handle1, INIT_control_1, 2); rt_thread_mdelay(10); rt_spi_send(ads1146_handle1, &INIT_control_2, 1); rt_thread_mdelay(10);#endif#ifdefBSP_USING_SPI2_ADS1146 rt_pin_mode(ADS2_start, PIN_MODE_OUTPUT); rt_pin_write(ADS2_start, PIN_HIGH); rt_pin_mode(ADS2_drdy, PIN_MODE_INPUT_PULLUP); rt_spi_send(ads1146_handle2, INIT_control_1, 2); rt_thread_mdelay(10); rt_spi_send(ads1146_handle2, &INIT_control_2, 1); rt_thread_mdelay(10);#endif#ifdefBSP_USING_SPI3_ADS1146 rt_pin_mode(ADS3_start, PIN_MODE_OUTPUT); rt_pin_write(ADS3_start, PIN_HIGH); rt_pin_mode(ADS3_drdy, PIN_MODE_INPUT_PULLUP); rt_spi_send(ads1146_handle2, INIT_control_1, 2); rt_thread_mdelay(10); rt_spi_send(ads1146_handle2, &INIT_control_2, 1); rt_thread_mdelay(10);#endif}/*************************************************************** * @brief ADS1146的PGA設(shè)置函數(shù) * @param device:傳入的設(shè)備名;ADS_setPGA:需要設(shè)置的PGA十進制值 * @return**************************************************************/voidADS1146_setPGA(struct rt_spi_device *device,short ADS_setPGA){ if(ADS_setPGA == 1 || ADS_setPGA == 2 || ADS_setPGA == 4 || ADS_setPGA == 8 || ADS_setPGA == 16 || ADS_setPGA == 32 || ADS_setPGA == 64 || ADS_setPGA == 128) { uint8_t INIT_control[5] = {0x43,0x00,0x00,0x04,0x04}; INIT_control[2] = (uint8_t)log2(ADS_setPGA)<<4 | ADS_SPS;? ? rt_spi_send(device, INIT_control, 5);? ? }? ? else {? ? ? ? rt_kprintf("ADS PGA set error!\n");? ? }}/***************************************************************? * ?@brief ? ? ADS1146的當前PGA讀取函數(shù)? * ?@param ? ? device:傳入的設(shè)備名? * ?@return ? ?讀取到的該設(shè)備PGA十進制值?**************************************************************/shortADS1146_readPGA(struct rt_spi_device?*device){? ? uint8_t read_control[2] = {0x23,0x00};? ? uint8_t read_datas;? ? short ADS_readPGA;? ? rt_spi_send_then_recv(device, &read_control, 2, &read_datas, 1);? ? ADS_readPGA = (short)powf(2,((read_datas&0xf0)>>4)); return ADS_readPGA;}/*************************************************************** * @brief 實現(xiàn)PGA的自動調(diào)節(jié) * @param device:傳入的設(shè)備名 * @return 0:未超量程,1:超量程**************************************************************/shortADS1146_PGA_AUTO(struct rt_spi_device *device){ short ADS_PGA; staticshort ADC_PGA_old = 1; short PGA_flag = 0; int ADS_value_init; uint16_t read_value; short ads_gain,PGA_gain; uint8_t read_control = 0x12; uint8_t read_datas[2] = {0}; do { rt_spi_send_then_recv(device, &read_control, 1, read_datas, 2); read_value = ((uint16_t)read_datas[0])<<8 | read_datas[1];? ? ? ? //數(shù)值絕對值化? ? ? ? if(read_value&0x8000){? ? ? ? ? ? ADS_value_init = 65536 - (int)read_value;? ? ? ? }? ? ? ? else{? ? ? ? ? ? ADS_value_init = (int)read_value;? ? ? ? }? ? ? ? if(ADS_value_init<1)? ? ? ? ? ? ADS_value_init = 1;? ? ? ? ADS_PGA = ADS1146_readPGA(device);? ? ? ? if(ADS_value_init > 32765){ if(ADS_PGA == 1){ PGA_flag = 1; } else { ADS_PGA = 1; } } if(ADS_value_init<16382){? ? ? ? ? ? ads_gain = 32767/ADS_value_init;? ? ? ? ? ? if(ads_gain>128){ ads_gain = 128; } PGA_gain = 1; do{ PGA_gain *= 2; }while(PGA_gain if(PGA_gain>ads_gain){ PGA_gain /= 2; } ADS_PGA *= PGA_gain; if(ADS_PGA>128){ ADS_PGA = 128; } } if(ADS_PGA != ADC_PGA_old){ ADS1146_setPGA(device,ADS_PGA); ADC_PGA_old = ADS_PGA; rt_thread_mdelay(1500/(5*powf(2,ADS_SPS))); } }while(ADS_value_init > 32765 && PGA_flag == 0); return PGA_flag;}/*************************************************************** * @brief 實現(xiàn)ADS1146采集的電壓值輸出,單位mV * @param device:傳入的設(shè)備名; * calibration_k, calibration_b: 校準參數(shù) * 校準函數(shù):ADS_CCD_mV = calibration_k*ADS_mV + calibration_b * PGA_flag:量程標志,0:正常,1:超量程。搭配ADS1146_PGA_AUTO使用可實現(xiàn)自動判斷 * @return**************************************************************/voidADS1146_output(struct rt_spi_device *device, float calibration_k, float calibration_b, short PGA_flag){ int ADS_value_init; uint16_t read_value; short read_signed; uint8_t read_control = 0x12; uint8_t read_datas[2] = {0}; rt_spi_send_then_recv(device, &read_control, 1, read_datas, 2); read_value = ((uint16_t)read_datas[0])<<8 | read_datas[1];? ? //符號位分離? ? if(read_value&0x8000){? ? ? ? ADS_value_init = 65536 - (int)read_value;? ? ? ? read_signed = -1;? ? }? ? else{? ? ? ? ADS_value_init = (int)read_value;? ? ? ? read_signed = 1;? ? }? ? short setPGA = ADS1146_readPGA(device);? ? rt_kprintf("ADS1146 set PGA: %d\n",setPGA);? ? if(PGA_flag == 1){? ? ? ? rt_kprintf("ADS1146 Exceeding the range ?");? ? }? ? else {? ? ? ? float ADS_mV = (float)ADS_value_init / ADS_range_half?*reference_voltage /setPGA*read_signed;? ? ? ? rt_kprintf("ADS1146 Not calibrated output data: %.3fmV ?",ADS_mV);? ? ? ? float ADS_CCD_mV = ADS_mV*calibration_k+calibration_b;? ? ? ? rt_kprintf("ADS1146 calibrated output data: %.3fmV\n",ADS_CCD_mV);? ? }}

別看代碼很長,因為寫了很多預編譯語句(也就是選擇性編譯的語句)。

“#ifdef標識符”

程序段

“#endif”

如果在這之前標識符經(jīng)過了#define定義,則編譯程序段,否則編譯時略過程序段。

第一個函數(shù)void SPI_device_creation(void)

用來對SPI設(shè)備初始化,因為ADS1146是通過SPI通訊的,所以需要完成對應的SPI初始化,這里通過預編譯指令類比寫了SPI1、SPI2、SPI3三個外設(shè)初始化,基本能囊括所有SPI設(shè)備了,如實際中超出,例如使用的是SPI4,可按模板自行添加。

注意board.h要開啟對應SPI的宏定義。

代碼主要工作完成了ADS1146的SPI片選引腳確認、通信模式、通信字節(jié)、通信速度的設(shè)置。其中片選引腳需要更改為自己實際使用的引腳,通信速度不建議過高,其他內(nèi)容不建議更改。

第二個函數(shù)void ADS1146_init(void)

完成ADS1146的初始化,主要是向ADS1146發(fā)送了三個命令。

0x01:將ADS1146從睡眠中喚醒,

01088506-bd0c-11f0-8ce9-92fbcf53809c.png

0x06:將ADS1146復位,準備下面的工作。(注:因為ADS1146復位需要0.6ms時間,這個時間段不能繼續(xù)發(fā)送命令,我這給了10ms)

01163bd8-bd0c-11f0-8ce9-92fbcf53809c.png

0x16:停止數(shù)據(jù)讀取,當前配置未完成,防止錯誤數(shù)據(jù)輸出(保險,可加可不加)

012af212-bd0c-11f0-8ce9-92fbcf53809c.png

第三個函數(shù)void ADS1146_setPGA(struct rt_spi_device *device,short ADS_setPGA)

該函數(shù)有兩個形參,device:傳入的設(shè)備名;ADS_setPGA:需要設(shè)置的PGA十進制值

該函數(shù)能夠?qū)⒃O(shè)置的PGA值寫入ADS1146,主要命令是0x43。

013a33ee-bd0c-11f0-8ce9-92fbcf53809c.png

0x43表示寫入的寄存器如下

0141fa52-bd0c-11f0-8ce9-92fbcf53809c.png

0x04 0x04表示開始轉(zhuǎn)換

014d8fb6-bd0c-11f0-8ce9-92fbcf53809c.png

第四個函數(shù)short ADS1146_readPGA(struct rt_spi_device *device)

device:傳入的設(shè)備名

該函數(shù)能夠?qū)魅朐O(shè)備讀取的PGA值以十進制返回,主要命令是0x23

015f206e-bd0c-11f0-8ce9-92fbcf53809c.png

第五個函數(shù)short ADS1146_PGA_AUTO(struct rt_spi_device *device)

evice:傳入的設(shè)備名

該函數(shù)屬于最核心函數(shù),能夠根據(jù)測量的數(shù)值自動調(diào)節(jié)該設(shè)備PGA,從而達到自動調(diào)節(jié)量程,實現(xiàn)最精準測量。并且我還特別優(yōu)化,能實現(xiàn)快速響應。這部分代碼不講解,能理解就是你的,理解不了直接用就行。

第六個函數(shù)void ADS1146_output(struct rt_spi_device *device,float calibration_k,float calibration_b,short PGA_flag);

實現(xiàn)ADS1146采集的電壓值輸出,單位mV

device:傳入的設(shè)備名;

calibration_k, calibration_b: 校準參數(shù)

校準函數(shù):ADS_CCD_mV = calibration_k*ADS_mV + calibration_b

PGA_flag:量程標志,0:正常,1:超量程。搭配ADS1146_PGA_AUTO使用可實現(xiàn)自動判斷

這一個函數(shù)就是將讀取的電壓值輸出出來,我這里直接rt_printf,如果需要返回值,可自行拓展。其中 calibration_k, calibration_b是校準參數(shù),我們知道實際值和測量值之間是會存在誤差的,這些誤差并非都是隨機誤差,其中很大一部分是具有線性特征的系統(tǒng)誤差,這部分誤差可以通過一個線性函數(shù)來彌補,下圖是我通過采集的實際值和測量值計算出來的一次函數(shù),帶入函數(shù)也就是calibration_k = 0.9994,calibration_b = -0.0045

不過這寫數(shù)據(jù)實在PGA = 8恒定下采集的值,為了省事,我直接運用到了全局PGA中,所以在PGA = 8時校準效果最好,不過應用到其他PGA上也有不錯的效果,如果大家有需要,可以將各個PGA下的校準函數(shù)求出,搭配ADS1146_PGA_AUTO函數(shù)實現(xiàn)更加精準測量。

016e53c2-bd0c-11f0-8ce9-92fbcf53809c.png

ads1146.h

#ifndefAPPLICATIONS_ADS1146_H_#defineAPPLICATIONS_ADS1146_H_#include#include#include"drv_spi.h"#include/*-------------------------- ADS1146 CONFIG BEGIN --------------------------*///需要在board.h中開啟對于的SPI預編譯#defineBSP_USING_SPI1_ADS1146#defineBSP_USING_SPI2_ADS1146//#define BSP_USING_SPI3_ADS1146#ifdefBSP_USING_SPI1_ADS1146 #define SPI1_NAME "spi10" #define SPI1_BUS_NAME "spi1"externstructrt_spi_device *ads1146_handle1;#endif#ifdefBSP_USING_SPI2_ADS1146 #define SPI2_NAME "spi20" #define SPI2_BUS_NAME "spi2"externstructrt_spi_device *ads1146_handle2;#endif#ifdefBSP_USING_SPI3_ADS1146 #define SPI3_NAME "spi30" #define SPI3_BUS_NAME "spi3"externstructrt_spi_device *ads1146_handle3;#endif// 更改為自己實際的引腳#define ADS1_start GET_PIN(B,0)#define ADS1_drdy GET_PIN(B,1)#define ADS2_start GET_PIN(B,10)#define ADS2_drdy GET_PIN(B,11)#define ADS3_start GET_PIN(B,10)#define ADS3_drdy GET_PIN(B,11)#define ADS_SPS 0x01 //10 SPS#define ADS_range_half 32768#define reference_voltage 1250voidSPI_device_creation(void);voidADS1146_init(void);voidADS1146_setPGA(structrt_spi_device *device,shortADS_setPGA);shortADS1146_readPGA(structrt_spi_device *device);shortADS1146_PGA_AUTO(structrt_spi_device *device);voidADS1146_output(structrt_spi_device *device,floatcalibration_k,floatcalibration_b,shortPGA_flag);

這里面就是各種宏定義,函數(shù)聲明。大家都知道

因為我做了大量SPI適配的預編寫語句,所以在board.h開啟SPI宏定義后,這邊再開啟對應的ADS1146宏定義就能直接使用,開啟了SPI宏定義不開啟ADS1146宏定義不會對該SPI有任何影響,其他設(shè)備正常使用。

//需要在board.h中開啟對于的SPI預編譯

#defineBSP_USING_SPI1_ADS1146#defineBSP_USING_SPI2_ADS1146//#define BSP_USING_SPI3_ADS1146

main.h

#include#defineDBG_TAG"main"#defineDBG_LVL DBG_LOG#include#include"ads1146.h"#include"ads_can.h"intmain(void){ shortPGA_flag1; SPI_device_creation(); ADS1146_init(); while(1){ PGA_flag1 =ADS1146_PGA_AUTO(ads1146_handle1); ADS1146_output(ads1146_handle1,0.9994,-0.0045, PGA_flag1); rt_thread_mdelay(800); } returnRT_EOK;}

經(jīng)過前面的解釋,相信大家很容易看懂這部分代碼。

效果演示

ADS1146Not calibrated output data:0.812mV ADS1146 calibrated output data:0.807mVADS1146set PGA:128ADS1146Not calibrated output data:0.758mV ADS1146 calibrated output data:0.753mVADS1146set PGA:128ADS1146Not calibrated output data:0.691mV ADS1146 calibrated output data:0.686mVADS1146set PGA:128ADS1146Not calibrated output data:0.067mV ADS1146 calibrated output data:0.062mVADS1146set PGA:128ADS1146Not calibrated output data:0.030mV ADS1146 calibrated output data:0.025mVADS1146set PGA:128ADS1146Not calibrated output data:0.018mV ADS1146 calibrated output data:0.014mVADS1146set PGA:128ADS1146Not calibrated output data:0.015mV ADS1146 calibrated output data:0.011mVADS1146set PGA:32ADS1146Not calibrated output data:25.015mV ADS1146 calibrated output data:24.995mVADS1146set PGA:32ADS1146Not calibrated output data:25.011mV ADS1146 calibrated output data:24.992mVADS1146set PGA:32ADS1146Not calibrated output data:25.012mV ADS1146 calibrated output data:24.993mVADS1146set PGA:16ADS1146Not calibrated output data:50.032mV ADS1146 calibrated output data:49.998mVADS1146set PGA:16ADS1146Not calibrated output data:50.030mV ADS1146 calibrated output data:49.995mVADS1146set PGA:16ADS1146Not calibrated output data:75.040mV ADS1146 calibrated output data:74.990mVADS1146set PGA:16ADS1146Not calibrated output data:75.042mV ADS1146 calibrated output data:74.993mVADS1146set PGA:8ADS1146Not calibrated output data:100.064mV ADS1146 calibrated output data:100.000mVADS1146set PGA:8ADS1146Not calibrated output data:100.069mV ADS1146 calibrated output data:100.005mVADS1146set PGA:8ADS1146Not calibrated output data:100.079mV ADS1146 calibrated output data:100.014mVADS1146set PGA:8ADS1146Not calibrated output data:100.050mV ADS1146 calibrated output data:99.985mVADS1146set PGA:128ADS1146Not calibrated output data:0.098mV ADS1146 calibrated output data:0.093mVADS1146set PGA:128ADS1146Not calibrated output data:0.100mV ADS1146 calibrated output data:0.095mVADS1146set PGA:128ADS1146Not calibrated output data:0.103mV ADS1146 calibrated output data:0.098mVADS1146set PGA:1ADS1146Not calibrated output data:1000.671mV ADS1146 calibrated output data:1000.066mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1000.710mV ADS1146 calibrated output data:1000.105mVADS1146set PGA:1ADS1146Not calibrated output data:1041.870mV ADS1146 calibrated output data:1041.240mVADS1146set PGA:1ADS1146Not calibrated output data:1200.600mV ADS1146 calibrated output data:1199.875mVADS1146set PGA:1ADS1146Not calibrated output data:1204.987mV ADS1146 calibrated output data:1204.259mVADS1146set PGA:1ADS1146Not calibrated output data:1220.818mV ADS1146 calibrated output data:1220.081mVADS1146set PGA:1ADS1146Not calibrated output data:1220.818mV ADS1146 calibrated output data:1220.081mVADS1146set PGA:1ADS1146Not calibrated output data:1230.583mV ADS1146 calibrated output data:1229.840mVADS1146set PGA:1ADS1146Not calibrated output data:1240.692mV ADS1146 calibrated output data:1239.943mVADS1146set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:1ADS1146Exceeding the range ADS1146 set PGA:2ADS1146Not calibrated output data:359.287mV ADS1146 calibrated output data:359.067mVADS1146set PGA:32ADS1146Not calibrated output data: -12.507mV ADS1146 calibrated output data: -12.504mVADS1146set PGA:128ADS1146Not calibrated output data: -0.660mV ADS1146 calibrated output data: -0.664mVADS1146set PGA:128ADS1146Not calibrated output data: -0.497mV ADS1146 calibrated output data: -0.501mV

上面是我的一點運行日志,這邊輸入的是0mv、25mv、50mv、75mv、100mv、1000mv,~~。大家可以比較一下,優(yōu)化校準哈桑農(nóng)戶,測量還是能達到uV級別的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電路設(shè)計
    +關(guān)注

    關(guān)注

    6736

    文章

    2635

    瀏覽量

    218807
  • adc
    adc
    +關(guān)注

    關(guān)注

    100

    文章

    7481

    瀏覽量

    554405
  • 模數(shù)轉(zhuǎn)換器

    關(guān)注

    26

    文章

    4005

    瀏覽量

    129928
  • RT-Thread
    +關(guān)注

    關(guān)注

    32

    文章

    1580

    瀏覽量

    44514
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RT-Thread記錄(一、版本開發(fā)環(huán)境及配合CubeMX)

    RT-Thread 學習記錄的第一篇文章,RT-Thread記錄(一、RT-Thread 版本、RT-Thread Studio開發(fā)環(huán)境 及
    的頭像 發(fā)表于 06-20 00:28 ?6745次閱讀
    <b class='flag-5'>RT-Thread</b>記錄(一、版本<b class='flag-5'>開發(fā)</b>環(huán)境及配合CubeMX)

    ADS1146讀取值變化很大

    我現(xiàn)在用到ADS1146,0-100mv單端輸入,AD的Ref為2.04V,AD1146用內(nèi)部晶振,MCU為1Mhz,讀取的值變化很大不穩(wěn)定,請問是什么原因?謝謝!
    發(fā)表于 03-01 09:53

    ADS1146/ADS1147/ADS1148,pdf (1

    converters (ADCs). The ADS1146/7/8 feature an onboard, low-noise, programmable gain amplifier (PGA), a precision delta-sigma ADC with a
    發(fā)表于 06-03 17:04 ?59次下載

    RT-Thread編程指南

    RT-Thread編程指南——RT-Thread開發(fā)組(2015-03-31)。RT-Thread做為國內(nèi)有較大影響力的開源實時操作系統(tǒng),本文是RT
    發(fā)表于 11-26 16:06 ?0次下載

    RT-Thread開發(fā),如何有效學習RT-Thread的五個步驟

    RT-Thread推出RT-Thread Inside戰(zhàn)略開放RT-Thread開發(fā)平臺授權(quán)合作,與硬件十萬個為什么合作首次推出第一款RT-
    的頭像 發(fā)表于 09-25 09:55 ?3.6w次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>開發(fā)</b>,如何有效學習<b class='flag-5'>RT-Thread</b>的五個步驟

    ADS1146,ADS1147和ADS1148的詳細資料概述(免費下載)

     ADS1146ADS1147和ADS1148是高集成度、P精度、1位6位模數(shù)轉(zhuǎn)換器(ADC)。ADS
    發(fā)表于 05-30 10:02 ?133次下載
    <b class='flag-5'>ADS1146</b>,<b class='flag-5'>ADS</b>1147和<b class='flag-5'>ADS</b>1148的詳細資料概述(免費下載)

    RT-Thread全球技術(shù)大會:螢石研發(fā)團隊使用RT-Thread技術(shù)挑戰(zhàn)

    RT-Thread全球技術(shù)大會:研發(fā)團隊使用RT-Thread技術(shù)挑戰(zhàn) ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 11:36 ?1951次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:螢石研發(fā)團隊使用<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>技術(shù)</b>挑戰(zhàn)

    RT-Thread全球技術(shù)大會:使用RT-Thread開發(fā)大規(guī)模嵌入式軟件帶來的挑戰(zhàn)與好處

    RT-Thread全球技術(shù)大會:使用RT-Thread開發(fā)大規(guī)模嵌入式軟件帶來的挑戰(zhàn)與好處 ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 11:45 ?2060次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:使用<b class='flag-5'>RT-Thread</b><b class='flag-5'>開發(fā)</b>大規(guī)模嵌入式軟件帶來的挑戰(zhàn)與好處

    RT-Thread全球技術(shù)大會:Kconfig在RT-Thread中的工作機制

    RT-Thread全球技術(shù)大會:Kconfig在RT-Thread中的工作機制 ? ? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 14:49 ?2239次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:Kconfig在<b class='flag-5'>RT-Thread</b>中的工作機制

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例

    RT-Thread全球技術(shù)大會:RT-Thread測試用例集合案例 ? ? ? ? ? 審核編輯:彭靜
    的頭像 發(fā)表于 05-27 16:34 ?2729次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:<b class='flag-5'>RT-Thread</b>測試用例集合案例

    RT-Thread全球技術(shù)大會:在RT-Thread中使用棧幀來調(diào)試程序

    百問網(wǎng)科技CTO韋東山,在RT-Thread全球技術(shù)大會大會中,以在RT-Thread中使用棧幀來調(diào)試程序為主題進行了介紹。
    的頭像 發(fā)表于 05-28 09:33 ?2440次閱讀
    <b class='flag-5'>RT-Thread</b>全球<b class='flag-5'>技術(shù)</b>大會:在<b class='flag-5'>RT-Thread</b>中使用棧幀來調(diào)試<b class='flag-5'>程序</b>

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發(fā)表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發(fā)表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    RT-Thread文檔_ADC 設(shè)備

    RT-Thread文檔_ADC 設(shè)備
    發(fā)表于 02-22 18:33 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>ADC</b> 設(shè)備

    ADS1146ADS1147和ADS1148模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《ADS1146、ADS1147和ADS1148模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 07-16 09:44 ?3次下載
    <b class='flag-5'>ADS1146</b>、<b class='flag-5'>ADS</b>1147和<b class='flag-5'>ADS</b>1148模數(shù)轉(zhuǎn)換器(<b class='flag-5'>ADC</b>)數(shù)據(jù)表