【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)。
0.png (639.68 KB, 下載次數(shù): 67)
下載附件
2018-2-25 00:58 上傳
包含以下單片機(jī)控制源碼:
0.png (19.32 KB, 下載次數(shù): 67)
下載附件
2018-2-25 01:04 上傳
電流檢測MODBUS協(xié)議:
l 串口波特率:1位起始位、8位數(shù)據(jù)位、1位停止位、無效驗(yàn)
l 默認(rèn)地址:0x01
l 通訊接口:RS485
l 通信協(xié)議:MODBUS-RTU模式
l 讀取下位機(jī)檢測電流值:
l 上位機(jī)發(fā)送:
地址
| 功能
| 寄存器地址
| 讀取數(shù)據(jù)個數(shù)
| CRC校驗(yàn)
| 0x01
| 0x03
| 高:0x00
| 低:0x01
| 高:0x00
| 低:0x01
| 0xD5
| 0x CA
|
|
|
|
|
|
|
|
| l 下位機(jī)返回:
地址
| 功能
| 字節(jié)數(shù)
| 電流值
| CRC校驗(yàn)
| 0x01
| 0x03
| 0x02
| 高:0x00
| 低:0x00
| 0xB8
| 0x44
|
|
|
|
|
|
|
|
讀取下位機(jī)設(shè)定值:
上位機(jī)發(fā)送:
地址
| 功能
| 寄存器地址
| 讀取數(shù)據(jù)個數(shù)
| CRC校驗(yàn)
| 0x01
| 0x03
| 高:0x00
| 低:0x02
| 高:0x00
| 低:0x01
| 0x25
| 0x CA
|
|
|
|
|
|
|
|
| 下位機(jī)返回:
地址
| 功能
| 字節(jié)數(shù)
| 溫度值
| CRC校驗(yàn)
| 0x01
| 0x03
| 0x02
| 高:0x00
| 低:0x00
| 0xB8
| 0x44
|
|
|
|
|
|
|
|
l 控制繼電器打開
l 上位機(jī)發(fā)送
地址
| 功能
| 寄存器地址
| 讀取數(shù)據(jù)個數(shù)
| CRC校驗(yàn)
| 0x01
| 0x05
| 高:0x00
| 低:0x00
| 高:0xff
| 低:0x00
| 0x8C
| 0x 3A
|
|
|
|
|
|
|
|
| l 下位機(jī)返回
地址
| 功能
| 寄存器地址
| 讀取數(shù)據(jù)個數(shù)
| CRC校驗(yàn)
| 0x01
| 0x05
| 高:0x00
| 低:0x00
| 高:0xff
| 低:0x00
| 0x8C
| 0x 3A
|
|
|
|
|
|
|
|
|
l 控制繼電器關(guān)閉
l 上位機(jī)發(fā)送
地址
| 功能
| 寄存器地址
| 讀取數(shù)據(jù)個數(shù)
| CRC校驗(yàn)
| 0x01
| 0x05
| 高:0x00
| 低:0x00
| 高:0x00
| 低:0x00
| 0xCD
| 0x CA
|
|
|
|
|
|
|
|
| l 下位機(jī)返回
地址
| 功能
| 寄存器地址
| 讀取數(shù)據(jù)個數(shù)
| CRC校驗(yàn)
| 0x01
| 0x05
| 高:0x00
| 低:0x00
| 高:0x00
| 低:0x00
| 0xCD
| 0x CA
|
|
|
|
|
|
|
|
|
設(shè)定電流報警值
上位機(jī)發(fā)送
地址
| 功能
| 寄存器地址
| 設(shè)定10A
| CRC校驗(yàn)
| 0x01
| 0x06
| 高:0x00
| 低:0x02
| 高:0x00
| 低:0x0A
| 0XA8
| 0x 0D
|
|
|
|
|
|
|
|
| 下位機(jī)返回
地址
| 功能
| 寄存器地址
| 返回設(shè)定2A
| CRC校驗(yàn)
| 0x01
| 0x06
| 高:0x00
| 低:0x02
| 高:0x00
| 低:0x0A
| 0Xca8
| 0x 0D
|
|
|
|
|
|
|
|
|
數(shù)碼管正常交流電流帶MOUDBUS -(0到5A量程)無加倍共陰單片機(jī)源程序如下:
- /********************************************************************
- ********************************************************************/
- #include "hader\\main.h"
- #include<math.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};
- uchar numb[4]; //定義字符串用于數(shù)值轉(zhuǎn)換
- uint cnt=0,times=0;
- uint ad,ad2=0,ad3=0,ad22=0;
- float ad1=0;
- bit flag,write; //定時標(biāo)志位
- uint16 idata setcurent,setcurent1;
- uchar idata keystat[3];
- uint ii=0;jj=0;
- uint adcj[200];
- uint adcj2[13];
- bit bt1ms,flag,flag1; //定時標(biāo)志位
- uint8 idata sendBuf[32],receBuf[16]; //發(fā)送接收緩沖區(qū)
- uint8 idata receTimeOut; //接收超時
- uint16 idata setcurent;
- // 串行中斷程序
- void initInt(void)
- {
- SCON = 0x50;
- TMOD = 0x21;
- PCON = 0;
- TH0 =(655336-1000)/256;
- TL0 =(655336-1000)%256;
- TH1= 0xfd;
- TL1 = 0xfd; //波特率 9600
- TR0 = 1;
- TR1=1;
- ET0 = 1;
- ES = 1;
- EA = 1;
- }
- //初始化
- void initProg(void)
- {
- P2M1=0;
- P2M0=0xff;
- P1M1=0x80;
- P1M0=0x0f;
- P3M1&=0x7f;
- P3M0|=0x80;
- initInt(); //初始化定時器
- }
- /********************************************************************
- 超時處理
- *********************************************************************/
- void timeProc(void)
- {
- if(bt1ms) //如果1ms到
- {
- bt1ms = 0;
- if(receTimeOut>0) //如果接收超時值>0
- {
- receTimeOut--; //接收超時-1(1ms減1次)
- if(receTimeOut==0 && receCount>0) //判斷通訊接收是否超時
- {
- receCount = 0; //將接收地址偏移寄存器清零
- checkoutError = 0;
- }
- }
- }
- } // void TimerProc(void)
- /********************************************************************
- 延時函數(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--);
- }
- void xs(uchar);
- /********************************************************************
- 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ī)器周期
- _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;
- }
- /********************************************************************
- 按鍵掃描
- *********************************************************************/
- void key_scan(void)
- {
- if(key1==0) //功能按鍵,顯示調(diào)整和實(shí)測值
- {
- if(++keystat[0]>=30)
- {
- keystat[0] = 1;
- }
- }
- else
- if((key1)&&(keystat[0]))
- {
- keystat[0] = 0;
- flag1=!flag1;
- }
- if(flag1==1)
- {
- //增加設(shè)定電流值
- if(key2==0) //增加設(shè)定電流值
- {
- if(++keystat[1]>=80)
- {
- keystat[1]=1;
- setcurent=setcurent+5 ;
- if(setcurent>3000)
- setcurent=5;
- write = 1;
- }
- }
- else if((key2)&&(keystat[1]))
- {
- keystat[1] = 0;
- }
- //減小設(shè)定電流值
- if(key3==0) //減小設(shè)定電流值
- {
- if(++keystat[2]>=80)
- {
- keystat[2] = 1;
- setcurent = setcurent-5;
- if(setcurent<=5)
- setcurent=3000;
- write = 1;
- }
- }
- else if((key3)&&(keystat[2]))
- {
- keystat[2] = 0;
- }
- }
- }
- void Selectsort(uint A[],uchar n)
- {
- uchar i,j,min;
- uint temp;
- for(i=0;i<n;i++)
- {
- min=i;
- for(j=i+1;j<=n;j++) /* 從j往前的數(shù)據(jù)都是排好的,所以從j開始往下找剩下的元素中最小的 */
- {
- if(A[min]>A[j]) /* 把剩下元素中最小的那個放到A[i]中 */
- {
- temp=A[i];
- A[i]=A[j];
- A[j]=temp;
- }
- }
- }
- }
- /********************************************************************
- 主函數(shù)
- *********************************************************************/
- void main()
- {
- uint i;
- uchar j,t;
- initProg();
- InitADC(); //AD初始化
- setcurent=IapReadByte(0);
- setcurent=setcurent*255+IapReadByte(1);
- while(1)
- {
- if(flag1) //顯示設(shè)定值
- t_to_dis(setcurent); //數(shù)值變換
- else //否則顯示實(shí)測值
- t_to_dis(ad2); //數(shù)值變換
- if(flag==0)
- {
- if(ad2>=setcurent) //判斷是否大于設(shè)定電流值
- OUT=0;
- else
- OUT=1;
- }
- if(write)
- {
- write=0;
- IapEraseSector(0);
- IapProgramByte(0,setcurent/255);
- IapProgramByte(1,setcurent%255);
- }
- timeProc();
- checkComm0Modbus();
- ad=GetADCResult(7);
- i=ad*10;
- if(i>=5120&&i<=7020)
- {
- adcj[j++]=i;
- }
- if(j>20)
- {
- j=0;
- Selectsort(adcj,20);
- adcj2[t++]=adcj[20];
- if(t>3)
- {
- t=0;
- Selectsort(adcj2,3);
- ad1 = 25*((adcj2[3]-5120)/10240.0)/0.185;
- ad1=ad1*0.707*3;
- ad2=abs(ad1);
- }
- }
- }
- }
- /********************************************************************
- 求值函數(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; //顯示個位
- }
- /********************************************************************
- 定時器T0中斷函數(shù)
- *********************************************************************/
- void timer0(void)interrupt 1
- {
- TH0=(65536-800)/256;
- TL0=(65536-800)%256;
- cnt++;
- ii++;
- if(ii==1000)
- {
- jj=2;
- }
- if(cnt>4)
- {
- cnt=1;
- bt1ms=1;
- }
- switch(cnt)
- {
- case 1: WEI&=0XF0; DUAN=seg7code[numb[2]]; wei2=1; break; //分十位
- case 2: WEI&=0XF0; DUAN=seg7code[numb[1]]&0x7f; wei3=1; break;//分個位&0x7f
- case 3: WEI&=0XF0; DUAN=seg7code[numb[0]]; wei4=1; break;//秒十位
- default: cnt=0;break;
- }
- key_scan();//按鍵掃描
- }
- /********************************************************************
- 串口中斷函數(shù)
- *********************************************************************/
- void commIntProc() interrupt 4
- {
-
- if(TI)
- {
- TI = 0;
- if(sendPosi < sendCount) //如果發(fā)送位置小于發(fā)送計(jì)數(shù),那么繼續(xù)發(fā)送
- {
- sendPosi++;
- SBUF = sendBuf[sendPosi];
- }
- else //否則發(fā)送完畢,置接收狀態(tài)
- {
- receCount = 0; //清接收地址偏移寄存器
- checkoutError = 0;
- }
- }
- else if(RI)
- {
- RI = 0;
- receTimeOut = 10; //通訊超時值
- receBuf[receCount] = SBUF;
- receCount++; //接收地址偏移寄存器加1
- receCount &= 0x0f; //最多一次只能接收16個字節(jié)
- }
- }
- /********************************************************************
- 結(jié)束
- *********************************************************************/
復(fù)制代碼
一、【簡要說明】
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ì)功能介紹,請看下文
全部資料51hei下載地址:
相關(guān)資料.rar
(212.33 KB, 下載次數(shù): 88)
2018-2-24 13:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
電流檢測MODBUS協(xié)議.docx
(17.08 KB, 下載次數(shù): 71)
2018-2-24 13:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
程序包.rar
(744.23 KB, 下載次數(shù): 98)
2018-2-24 13:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
03、數(shù)碼管正常交流電流帶MOUDBUS -(0到5A量程)無加倍共陰.rar
(95.56 KB, 下載次數(shù): 87)
2018-2-24 13:32 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|