|
ACS712電路原理圖如下:
0.jpg (52.23 KB, 下載次數(shù): 91)
下載附件
2018-3-3 04:33 上傳
單片機(jī)ACS712電流采集源程序如下:
- /********************************************************************
- 匯誠科技
- 實(shí)現(xiàn)功能:檢測電流,數(shù)碼管顯示電流值
- 使用芯片:STC12C5604AD
- 產(chǎn)品模塊編號:兩輸入,一路電流檢測,三個按鍵,四位數(shù)顯,一路繼電器
- 晶振:外部晶振 11.0592M
- 編譯環(huán)境:Keil -uvision4
- 旺旺:
- 1、jiangtaoyang88
- 2、電子開發(fā)直銷
- 【聲明】此程序僅用于學(xué)習(xí)與參考,引用請注明版權(quán)和作者信息!
- /********************************************************************
- ********************************************************************/
- #include<STC12C56.h> //庫文件
- #include <intrins.h>
- #define uchar unsigned char//宏定義無符號字符型
- #define uint unsigned int //宏定義無符號整型
- #define FOSC 11059200L
- #define BAUD 9600
- #define ADC_POWER 0x80 //ADC 電源控制位
- #define ADC_FLAG 0x10 //ADC 轉(zhuǎn)換結(jié)束標(biāo)志位
- #define ADC_START 0x08 //ADC 開始轉(zhuǎn)換控制位
- #define ADC_SPEEDHH 0x60 //270個時鐘周期轉(zhuǎn)換一次
- sfr ADC_DATA=0xc6; //70個時鐘周期轉(zhuǎn)換一次
- void display(void); //顯示函數(shù)
- void t_to_dis(uint num);
- #define DUAN P2 //P0口控制段
- #define WEI P1 //P2口控制位
- /********************************************************************
- 初始定義
- *********************************************************************/
- //數(shù)碼管顯示段碼
- code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
- //數(shù)碼管位控制端
- sbit wei1=P1^0;
- sbit wei2=P1^1;
- sbit wei3=P1^2;
- sbit wei4=P1^3;
- //繼電器輸出控制端
- sbit OUT=P3^7;
- //按鍵輸入控制端
- sbit key1=P3^2;
- sbit key2=P3^3;
- sbit key3=P3^4;
- //兩路輸入控制端可做ad采樣
- sbit IN1=P1^6;
- sbit IN2=P1^5;
- sbit IC=P1^7;
- uchar numb[4]; //定義字符串用于數(shù)值轉(zhuǎn)換
- uchar cnt,times;
- uint ad;
- float ad1;
- /********************************************************************
- 延時函數(shù)
- *********************************************************************/
- void delay(uint x)//延時程序 0.1秒
- {
- uint m,n,s;
- for(m=x;m>0;m--)
- for(n=20;n>0;n--)
- for(s=248;s>0;s--);
- }
- /********************************************************************
- AD轉(zhuǎn)換初始化程序
- *********************************************************************/
- void InitADC()
- {
- P1=P1M0|=0xf0;
- P1M1=0x00;
- ADC_DATA=0; //AD數(shù)據(jù)寄存器清空
- ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START;//打開AD電源,轉(zhuǎn)換周期XX
- delay(10); //延時
- }
- /********************************************************************
- AD轉(zhuǎn)換控制程序
- *********************************************************************/
- uint GetADCResult(uchar px) //轉(zhuǎn)換輸出的數(shù)據(jù) (PX為通道口)
- {
- uint t;
- ADC_CONTR=ADC_POWER | ADC_SPEEDHH | px | ADC_START;//開始轉(zhuǎn)換
- _nop_(); //延時一個機(jī)器周期
- _nop_(); //延時一個機(jī)器周期
- _nop_(); //延時一個機(jī)器周期
- _nop_(); //延時一個機(jī)器周期
- while (!(ADC_CONTR & ADC_FLAG));//等待轉(zhuǎn)換結(jié)束
- ADC_CONTR &= ~ADC_FLAG; //關(guān)閉AD轉(zhuǎn)換
- t=(ADC_DATA<<2)|ADC_LOW2;
- return t;
- }
- /********************************************************************
- IO口初始化函數(shù)
- *********************************************************************/
- void init_all(void)
- {
- P2M1=0;
- P2M0=0xff;
- P1M1=0x80;
- P1M0=0x0f;
- P3M1&=0x7f;
- P3M0|=0x80;
- }
- /********************************************************************
- 定時器T1初始化
- *********************************************************************/
- void timer0init(void)
- {
- TMOD=0X01; //設(shè)定定時器工作方式
- TH0 =(655336-1000)/256;
- TL0 =(655336-1000)%256;
- ET0=1;
- TR0=1;
- EA=1;
- }
- /********************************************************************
- 主函數(shù)
- *********************************************************************/
- void main()
- {
-
- init_all(); //初始化IO
- timer0init();//定時器初始化
- InitADC(); //AD初始化
- while(1)
- {
- ad=GetADCResult(7);
- if(times>=250)
- {
- times=0;
- ad=ad-2;
- ad1=(ad*50.0)/1024-25;
- ad1=ad1*100;
- t_to_dis(ad1); //數(shù)值變換
- }
- }
- }
- /********************************************************************
- 求值函數(shù)
- *********************************************************************/
- void t_to_dis(uint num)
- {
- numb[0]=num/1000; ; //顯示千位
- numb[1]=num/100%10; //顯示百位
- numb[2]=num/10%10; //顯示十位
- numb[3]=num%10; //顯示個位
- }
- /********************************************************************
- 定時器T1中斷函數(shù)
- *********************************************************************/
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
ALIM0073.JPG (2.09 MB, 下載次數(shù): 79)
下載附件
2018-3-2 11:29 上傳
ALIM0072.JPG (2.03 MB, 下載次數(shù): 68)
下載附件
2018-3-2 11:29 上傳
【簡要說明】
此模塊采用ACS712電流傳感器監(jiān)測設(shè)備電流,數(shù)碼管可以顯示監(jiān)測電流值,通過單片
機(jī)對電流數(shù)據(jù)的采集,來控制繼電器。
通常用于,電流過載報警器,電流監(jiān)測,過載保護(hù)等,,,通過單片機(jī)的編程可以實(shí)
現(xiàn)多種功能,具體可以聯(lián)系店主進(jìn)行溝通.
量程:0~5A、0~20A
測量類型:交流和直流
注:購買時請備注量程和測量類型
一、【簡要說明】
1、 尺寸:長72cmX寬67cmX高2cm
2、 主要芯片:STC12C5604AD
3、 工作電壓:直流12伏(板上有LM7805穩(wěn)壓芯片);
4、 特點(diǎn):
可編程(通過下載排針可下載程序)
具有兩路信號輸入端(也可檢測兩路模擬量)
三個按鍵輸入
一路繼電器輸出,可控制兩路交流220V/10A一下設(shè)備
一路電流檢測輸入(ACS712電流傳感器)
板子帶有防反接二極管
標(biāo)準(zhǔn)的11.0592晶振
板子晶振11.0592,有uart接口,可以方便連接uart轉(zhuǎn)485模塊
有復(fù)位按鍵
帶四位數(shù)碼管顯示
5、可以根據(jù)顧客提出要求實(shí)現(xiàn)想要實(shí)現(xiàn)的功能
注:模塊有三種功能,顧客購買時,請聯(lián)系客服,詳細(xì)說明所需功能,
功能一:按鍵設(shè)定電流值(無通信)
功能二:讀取電流設(shè)定報警值
功能三:可根據(jù)顧客需要定制功能,詳細(xì)功能介紹,請看下文
二、【ACS712簡介】
ACS712具有精確的低偏置線性霍爾傳感器電路,且其銅制的電流路徑靠近晶片的表面。通過該銅制電流路徑施加的電流能夠生成可被集成霍爾IC感應(yīng)并轉(zhuǎn)化為成比例電壓的磁場。通過將磁性信號靠近霍爾傳感器,實(shí)現(xiàn)器件精確度優(yōu)化。精確的成比例電壓由穩(wěn)定斬波型低偏置BiCMOS霍爾IC提供,該IC出廠時已進(jìn)行精確度編程。
當(dāng)通過用作電流感測通路的主要銅制電流路徑(從引腳1和2,到3和4)的電流不斷上升時,器件的輸出具有正斜率(>VIOUT(Q))。該傳導(dǎo)通路的內(nèi)電阻通常是1.2 mΩ,具有較低的功耗。銅線的粗細(xì)允許器件在可達(dá)5×的過電流條件下運(yùn)行。傳導(dǎo)通路的接線端與傳感器引腳(引腳5到8)是電氣絕緣的。這讓ACS712電流傳感器可用于那些要求電氣絕緣卻未使用光電絕緣器或其它昂貴絕緣技術(shù)的應(yīng)用。
ACS712采用小型的表面安裝SOIC8封裝。引腳架鍍采用100%霧錫電鍍,可與標(biāo)準(zhǔn)無鉛(Pb)印刷電路板裝配流程兼容。在內(nèi)部,該器件為無鉛產(chǎn)品,倒裝法使用當(dāng)前豁免于RoHS的高溫含鉛焊球除外。器件在出廠裝運(yùn)前已完全校準(zhǔn)。
全部資料51hei下載地址:
例程.rar
(138.04 KB, 下載次數(shù): 300)
2018-3-2 11:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
原理圖.pdf
(495.64 KB, 下載次數(shù): 179)
2018-3-2 11:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
使用說明.pdf
(643.23 KB, 下載次數(shù): 169)
2018-3-2 11:30 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|