1. 電流互感器簡介
在發(fā)電、變電、輸電、配電和用電的線路中電流大小懸殊,從幾安到幾萬安都有。為便于測量、保護(hù)和控制需要轉(zhuǎn)換為比較統(tǒng)一的電流,另外線路上的電壓一般都比較高如直接測量是非常危險的。電流互感器就起到電流變換和電氣隔離作用。
2. 電流互感器模塊
電流互感器模塊可以將交流電信號轉(zhuǎn)換為電壓信號,此時就能用stm32的ADC采集模塊輸出的AD信號。
(1)模塊介紹
模塊搭載ZMCT103c系列小型高精度電流互感器以及高精度運(yùn)放電路,對信號做精確采樣和適當(dāng)補(bǔ)償?shù)裙δ堋7奖銓?A以內(nèi)的交流電進(jìn)行信號采集。對應(yīng)輸出模擬交流信號可以調(diào)節(jié),可根據(jù)電位器(調(diào)節(jié)放大比例,放大范圍0-100倍)來調(diào)節(jié)所需輸出電壓,但是輸出端(OUT)的最大電壓不會超出1/2vCCo
(2)引腳說明
3. STM32采集電流互感器模塊數(shù)據(jù)
此處需要注意的問題是在用STM32采集時如果無交流電通過線圈,STM32的AD接到OUT引腳相當(dāng)于懸空狀態(tài),此時會AD會返回一個STM32懸空的AD值,所以在實(shí)際使用時需要在OUT和GND之間加一個下拉電阻:
ADC配置代碼如下:
#include "adc.h"
#include "delay.h"
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Cmd(ADC1, ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
u16 Get_Adc(u8 ch)
{
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1);
}
u16 Get_Adc_Average(u8 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
delay_ms(5);
}
return temp_val/times;
}
主函數(shù)采集通過串口發(fā)送數(shù)據(jù)到上位機(jī):
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "adc.h"
#include "common.h"
#include "usart2.h"
#include "usart3.h"
#include <string.h>
u8 mp3_set1[7]={0xAA,0x07,0x02,0x00,0x06,0xB9};
u8 mp3_set2[7]={0xAA,0x07,0x02,0x00,0x05,0xB8};
int main(void)
{
u16 adcx;
u8 re = 0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Adc_Init(); //ADC初始化
usart2_init(9600);//串口2初始化
delay_ms(200);
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_0,10);//ADC通道0采集電流互感器的輸出值
u2_printf("%d\r\n",adcx);//通過串口發(fā)送出去
}
}
實(shí)物圖如下,用電風(fēng)扇線作為測試,串口觀察輸出:
在風(fēng)扇斷電狀態(tài)下輸出為0:
在電風(fēng)扇開啟狀態(tài)下便可采集到電流互感器模塊的輸出:文章來源:http://www.zghlxwxcb.cn/news/detail-664577.html
代碼工程鏈接:https://pan.baidu.com/s/1Pdcm7M7UqIl-YyeDvcFCSA
提取碼:nigw文章來源地址http://www.zghlxwxcb.cn/news/detail-664577.html
到了這里,關(guān)于STM32采集電流互感器(電流互感器模塊)數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!