ACS712电路原理图如下:
单片机ACS712电流采集源程序如下:
- /********************************************************************
- 汇诚科技
- 实现功能:检测电流,数码管显示电流值
- 使用芯片:STC12C5604AD
- 产品模块编号:两输入,一路电流检测,三个按键,四位数显,一路继电器
- 晶振:外部晶振 11.0592M
- 编译环境:Keil -uvision4
- 旺旺:
- 1、jiangtaoyang88
- 2、电子开发直销
- 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
- /********************************************************************
- ********************************************************************/
- #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 转换结束标志位
- #define ADC_START 0x08 //ADC 开始转换控制位
- #define ADC_SPEEDHH 0x60 //270个时钟周期转换一次
- sfr ADC_DATA=0xc6; //70个时钟周期转换一次
- void display(void); //显示函数
- void t_to_dis(uint num);
- #define DUAN P2 //P0口控制段
- #define WEI P1 //P2口控制位
- /********************************************************************
- 初始定义
- *********************************************************************/
- //数码管显示段码
- code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
- //数码管位控制端
- 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]; //定义字符串用于数值转换
- uchar cnt,times;
- uint ad;
- float ad1;
- /********************************************************************
- 延时函数
- *********************************************************************/
- 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转换初始化程序
- *********************************************************************/
- void InitADC()
- {
- P1=P1M0|=0xf0;
- P1M1=0x00;
- ADC_DATA=0; //AD数据寄存器清空
- ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START;//打开AD电源,转换周期XX
- delay(10); //延时
- }
- /********************************************************************
- AD转换控制程序
- *********************************************************************/
- uint GetADCResult(uchar px) //转换输出的数据 (PX为通道口)
- {
- uint t;
- ADC_CONTR=ADC_POWER | ADC_SPEEDHH | px | ADC_START;//开始转换
- _nop_(); //延时一个机器周期
- _nop_(); //延时一个机器周期
- _nop_(); //延时一个机器周期
- _nop_(); //延时一个机器周期
- while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
- ADC_CONTR &= ~ADC_FLAG; //关闭AD转换
- t=(ADC_DATA<<2)|ADC_LOW2;
- return t;
- }
- /********************************************************************
- IO口初始化函数
- *********************************************************************/
- void init_all(void)
- {
- P2M1=0;
- P2M0=0xff;
- P1M1=0x80;
- P1M0=0x0f;
- P3M1&=0x7f;
- P3M0|=0x80;
- }
- /********************************************************************
- 定时器T1初始化
- *********************************************************************/
- void timer0init(void)
- {
- TMOD=0X01; //设定定时器工作方式
- TH0 =(655336-1000)/256;
- TL0 =(655336-1000)%256;
- ET0=1;
- TR0=1;
- EA=1;
- }
- /********************************************************************
- 主函数
- *********************************************************************/
- 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); //数值变换
- }
- }
- }
- /********************************************************************
- 求值函数
- *********************************************************************/
- 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中断函数
- *********************************************************************/
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
【简要说明】
此模块采用ACS712电流传感器监测设备电流,数码管可以显示监测电流值,通过单片
机对电流数据的采集,来控制继电器。
通常用于,电流过载报警器,电流监测,过载保护等,,,通过单片机的编程可以实
现多种功能,具体可以联系店主进行沟通.
量程:0~5A、0~20A
测量类型:交流和直流
注:购买时请备注量程和测量类型
一、【简要说明】
1、 尺寸:长72cmX宽67cmX高2cm
2、 主要芯片:STC12C5604AD
3、 工作电压:直流12伏(板上有LM7805稳压芯片);
4、 特点:
可编程(通过下载排针可下载程序)
具有两路信号输入端(也可检测两路模拟量)
三个按键输入
一路继电器输出,可控制两路交流220V/10A一下设备
一路电流检测输入(ACS712电流传感器)
板子带有防反接二极管
标准的11.0592晶振
板子晶振11.0592,有uart接口,可以方便连接uart转485模块
有复位按键
带四位数码管显示
5、可以根据顾客提出要求实现想要实现的功能
注:模块有三种功能,顾客购买时,请联系客服,详细说明所需功能,
功能一:按键设定电流值(无通信)
功能二:读取电流设定报警值
功能三:可根据顾客需要定制功能,详细功能介绍,请看下文
二、【ACS712简介】
ACS712具有精确的低偏置线性霍尔传感器电路,且其铜制的电流路径靠近晶片的表面。通过该铜制电流路径施加的电流能够生成可被集成霍尔IC感应并转化为成比例电压的磁场。通过将磁性信号靠近霍尔传感器,实现器件精确度优化。精确的成比例电压由稳定斩波型低偏置BiCMOS霍尔IC提供,该IC出厂时已进行精确度编程。
当通过用作电流感测通路的主要铜制电流路径(从引脚1和2,到3和4)的电流不断上升时,器件的输出具有正斜率(>VIOUT(Q))。该传导通路的内电阻通常是1.2 mΩ,具有较低的功耗。铜线的粗细允许器件在可达5×的过电流条件下运行。传导通路的接线端与传感器引脚(引脚5到8)是电气绝缘的。这让ACS712电流传感器可用于那些要求电气绝缘却未使用光电绝缘器或其它昂贵绝缘技术的应用。
ACS712采用小型的表面安装SOIC8封装。引脚架镀采用100%雾锡电镀,可与标准无铅(Pb)印刷电路板装配流程兼容。在内部,该器件为无铅产品,倒装法使用当前豁免于RoHS的高温含铅焊球除外。器件在出厂装运前已完全校准。
全部资料51hei下载地址:
例程.rar
(138.04 KB, 下载次数: 300)
原理图.pdf
(495.64 KB, 下载次数: 179)
使用说明.pdf
(643.23 KB, 下载次数: 169)
|