基于[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(); //打開ADC對(duì)應(yīng)引腳時(shí)鐘
__RCC_ADC_CLK_ENABLE(); // 打開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瀏覽量
2145 -
CW32
+關(guān)注
關(guān)注
1文章
232瀏覽量
978
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦

模電怎么判斷電壓電流反饋器的好壞
電流表電壓表無(wú)示數(shù)的原因
基于CW32F003E4P7的數(shù)字電壓電流表產(chǎn)品方案

CW32數(shù)字電壓電流表軟件進(jìn)階教程-3.電壓電流標(biāo)定

CW32數(shù)字電壓電流表軟件進(jìn)階教程-2.電壓電流值做均值濾波
CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)七:基本數(shù)據(jù)處理算法(均值濾波)
CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)五:ADC采樣及顯示

CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)四:數(shù)碼管動(dòng)態(tài)顯示

CW32數(shù)字電壓電流表軟件教程(五):ADC采樣及顯示

CW32數(shù)字電壓電流表軟件教程(三):數(shù)碼管顯示數(shù)字

CW32數(shù)字電壓電流表軟件教程(一):LED原理與驅(qū)動(dòng)基礎(chǔ)知識(shí)詳解

CW32數(shù)字電壓電流表-產(chǎn)品硬件設(shè)計(jì)要點(diǎn)

CW32數(shù)字電壓電流表-產(chǎn)品制作注意事項(xiàng)

評(píng)論