基于[CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)七:基本數(shù)據(jù)處理算法(均值濾波)],可以對(duì)電壓電流進(jìn)行同時(shí)采集顯示。
電流檢測(cè)電路如下:
本項(xiàng)目設(shè)計(jì)的采樣電流為3A,選擇的采樣電阻為100mΩ。AIN接入CW32芯片內(nèi)部的AIN11通道,PB05端口上。
電流計(jì)算方法為(A為單位):AIN電壓/0.1歐。
AIN電壓計(jì)算方法與電壓通道分壓輸入計(jì)算相同,V為單位時(shí):
VIN=ADC轉(zhuǎn)換值/4096*1.5V.
核心代碼參考如下:
ADC初始化如下,完成兩路AD轉(zhuǎn)換通道初始化,使用序列掃描模式:
void ADC_init(void)
{
ADC_InitTypeDef ADC_InitStructure; //ADC配置結(jié)構(gòu)體
ADC_SerialChTypeDef ADC_SerialChStructure; //ADC序列通道結(jié)構(gòu)體
GPIO_InitTypeDef GPIO_Init_Struct;
__RCC_GPIOB_CLK_ENABLE(); //打開(kāi)ADC對(duì)應(yīng)引腳時(shí)鐘
__RCC_ADC_CLK_ENABLE(); // 打開(kāi)ADC時(shí)鐘
GPIO_Init_Struct.IT = GPIO_IT_NONE;
GPIO_Init_Struct.Mode = GPIO_MODE_ANALOG;//將GPIO的模式配置成模擬功能
GPIO_Init_Struct.Pins = GPIO_PIN_1; // PB01是電壓采集引腳
GPIO_Init(CW_GPIOB, &GPIO_Init_Struct);
PB01_ANALOG_ENABLE(); //使能模擬引腳
PB05_ANALOG_ENABLE();
ADC_StructInit(&ADC_InitStructure); // ADC默認(rèn)值初始化
ADC_InitStructure.ADC_ClkDiv = ADC_Clk_Div4; //ADC工作時(shí)鐘配置 PCLK/4 = 6/4 = 1.5Mhz
/*信號(hào)電壓較低時(shí),可以降低參考電壓來(lái)提高分辨率。改變參考電壓后,同樣二進(jìn)制表示的電壓值就會(huì)不一樣,
最大的二進(jìn)制(全1)表示的就是你的參考電壓,在計(jì)算實(shí)際電壓時(shí),就需要將參考電壓考慮進(jìn)去。*/
ADC_InitStructure.ADC_VrefSel = ADC_Vref_BGR1p5; //參考電壓設(shè)置為1.5V
ADC_InitStructure.ADC_SampleTime = ADC_SampTime10Clk; //由于電壓信號(hào)為慢速信號(hào),ADC采樣時(shí)間為十個(gè)ADC采樣周期以確保準(zhǔn)確
ADC_SerialChStructure.ADC_Sqr0Chmux = ADC_SqrCh9; //配置ADC序列,PB01是ADC的第9通道
ADC_SerialChStructure.ADC_Sqr1Chmux = ADC_SqrCh11;
ADC_SerialChStructure.ADC_SqrEns = ADC_SqrEns01;
ADC_SerialChStructure.ADC_InitStruct = ADC_InitStructure; //ADC初始化
ADC_SerialChContinuousModeCfg(&ADC_SerialChStructure); //ADC序列連續(xù)轉(zhuǎn)換模式配置
ADC_ClearITPendingAll(); //清除ADC所有中斷狀態(tài)
ADC_Enable(); // ADC使能
ADC_SoftwareStartConvCmd(ENABLE); //ADC轉(zhuǎn)換軟件啟動(dòng)命令
數(shù)據(jù)采集處理代碼如下:
void Volt_Cal(void)
{
ADC_GetSqr0Result(&sampledata); ///當(dāng)前采集值顯示出來(lái)
V_Buffer = (sampledata * ADC_REF_VALUE > > 12) * (R2 + R1)/R1;
// 四舍五入
if(V_Buffer % 10 >= 5)
{
V_Buffer = V_Buffer / 10 + 1;
}
else
{
V_Buffer = V_Buffer / 10;
}
ADC_GetSqr1Result(&I_Buffer); ///當(dāng)前采集值顯示出來(lái)
I_Buffer=I_Buffer * ADC_REF_VALUE > > 12;
/**
mv =I_Buffer * ADC_REF_VALUE > > 12,
R = 100mr,
10ma = mv/R/10=mv/0.1/10 = mv
*/
}
審核編輯 黃宇
-
電壓電流表
+關(guān)注
關(guān)注
0文章
25瀏覽量
2195 -
CW32
+關(guān)注
關(guān)注
1文章
255瀏覽量
1254
發(fā)布評(píng)論請(qǐng)先 登錄
常規(guī)的電壓電流測(cè)量方式有哪些?

高壓電阻箱如何進(jìn)行負(fù)載測(cè)試?


倍壓電路電流會(huì)有多少
前級(jí)功放輸出電壓電流多少
電流計(jì)改裝成電壓表時(shí)刻度怎么刻
開(kāi)關(guān)電源改可調(diào)電壓電流怎么改
用INA226做了個(gè)電壓電流顯示板,芯片在輸出的時(shí)候,沒(méi)有電流的信息,為什么?
基于CW32的儀表精度測(cè)量實(shí)現(xiàn)(三):標(biāo)定與校準(zhǔn)

模電怎么判斷電壓電流反饋器的好壞
在線電流監(jiān)測(cè)電流表校驗(yàn)儀操作說(shuō)明——每日了解電力知識(shí)

評(píng)論