找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20233|回复: 14
收起左侧

ACS712电流检测报警电路与单片机控制源程序

  [复制链接]
ID:284341 发表于 2018-3-2 11:30 | 显示全部楼层 |阅读模式
ACS712电路原理图如下:
0.jpg

单片机ACS712电流采集源程序如下:
  1. /********************************************************************
  2.                             汇诚科技
  3. 实现功能:检测电流,数码管显示电流值
  4. 使用芯片:STC12C5604AD
  5. 产品模块编号:两输入,一路电流检测,三个按键,四位数显,一路继电器
  6. 晶振:外部晶振 11.0592M
  7. 编译环境:Keil -uvision4
  8. 旺旺:
  9.       1、jiangtaoyang88
  10.           2、电子开发直销
  11. 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!     
  12. /********************************************************************
  13. ********************************************************************/
  14. #include<STC12C56.h>                 //库文件
  15. #include <intrins.h>
  16. #define uchar unsigned char//宏定义无符号字符型
  17. #define uint unsigned int  //宏定义无符号整型
  18. #define FOSC 11059200L
  19. #define BAUD  9600

  20. #define ADC_POWER   0x80            //ADC 电源控制位
  21. #define ADC_FLAG    0x10            //ADC 转换结束标志位
  22. #define ADC_START   0x08            //ADC 开始转换控制位
  23. #define ADC_SPEEDHH 0x60            //270个时钟周期转换一次

  24. sfr ADC_DATA=0xc6;           //70个时钟周期转换一次
  25. void display(void);         //显示函数
  26. void t_to_dis(uint num);

  27. #define DUAN P2                   //P0口控制段
  28. #define WEI  P1                   //P2口控制位
  29. /********************************************************************
  30.                             初始定义
  31. *********************************************************************/
  32. //数码管显示段码
  33. code uchar seg7code[11]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0XBF};
  34. //数码管位控制端
  35. sbit wei1=P1^0;
  36. sbit wei2=P1^1;
  37. sbit wei3=P1^2;
  38. sbit wei4=P1^3;  
  39. //继电器输出控制端                           
  40. sbit OUT=P3^7;
  41. //按键输入控制端
  42. sbit key1=P3^2;
  43. sbit key2=P3^3;
  44. sbit key3=P3^4;
  45. //两路输入控制端可做ad采样
  46. sbit IN1=P1^6;
  47. sbit IN2=P1^5;
  48. sbit IC=P1^7;
  49. uchar numb[4];              //定义字符串用于数值转换
  50. uchar cnt,times;
  51. uint ad;
  52. float ad1;
  53. /********************************************************************
  54.                             延时函数
  55. *********************************************************************/
  56. void delay(uint x)//延时程序 0.1秒
  57. {
  58.         uint m,n,s;
  59.         for(m=x;m>0;m--)
  60.         for(n=20;n>0;n--)
  61.         for(s=248;s>0;s--);
  62. }
  63. /********************************************************************
  64.                          AD转换初始化程序
  65. *********************************************************************/
  66. void InitADC()
  67. {
  68.     P1=P1M0|=0xf0;
  69.         P1M1=0x00;
  70.         ADC_DATA=0;        //AD数据寄存器清空
  71.     ADC_CONTR=ADC_POWER|ADC_SPEEDHH|ADC_START;//打开AD电源,转换周期XX
  72.     delay(10);                //延时
  73. }
  74. /********************************************************************
  75.                          AD转换控制程序
  76. *********************************************************************/
  77. uint GetADCResult(uchar px)          //转换输出的数据 (PX为通道口)
  78. {
  79.       uint t;
  80.         ADC_CONTR=ADC_POWER | ADC_SPEEDHH | px | ADC_START;//开始转换
  81.     _nop_();                        //延时一个机器周期
  82.     _nop_();                                                //延时一个机器周期
  83.     _nop_();                                                //延时一个机器周期
  84.     _nop_();                                                //延时一个机器周期
  85.         while (!(ADC_CONTR & ADC_FLAG));//等待转换结束
  86.         ADC_CONTR &= ~ADC_FLAG;       //关闭AD转换
  87.          t=(ADC_DATA<<2)|ADC_LOW2;
  88.          return t;
  89. }                  
  90. /********************************************************************
  91.                            IO口初始化函数
  92. *********************************************************************/   
  93. void init_all(void)
  94. {               
  95.     P2M1=0;
  96.         P2M0=0xff;
  97.         P1M1=0x80;
  98.         P1M0=0x0f;
  99.         P3M1&=0x7f;
  100.         P3M0|=0x80;
  101. }
  102. /********************************************************************
  103.                            定时器T1初始化
  104. *********************************************************************/
  105. void timer0init(void)
  106. {
  107.          TMOD=0X01;                  //设定定时器工作方式
  108.          TH0 =(655336-1000)/256;
  109.      TL0 =(655336-1000)%256;
  110.          ET0=1;
  111.          TR0=1;
  112.          EA=1;
  113. }
  114. /********************************************************************
  115.                             主函数
  116. *********************************************************************/
  117. void main()
  118. {         
  119.    
  120.     init_all();         //初始化IO
  121.         timer0init();//定时器初始化
  122.     InitADC();  //AD初始化
  123.         while(1)
  124.         {  
  125.                  ad=GetADCResult(7);
  126.                  if(times>=250)
  127.                  {
  128.                     times=0;
  129.                         ad=ad-2;
  130.                     ad1=(ad*50.0)/1024-25;
  131.                     ad1=ad1*100;
  132.                     t_to_dis(ad1);   //数值变换
  133.                  }
  134.     }
  135. }
  136. /********************************************************************
  137.                             求值函数
  138. *********************************************************************/
  139. void t_to_dis(uint num)
  140. {       
  141.         numb[0]=num/1000;        ;                        //显示千位
  142.         numb[1]=num/100%10;                //显示百位
  143.         numb[2]=num/10%10;                    //显示十位
  144.         numb[3]=num%10;             //显示个位
  145. }
  146. /********************************************************************
  147.                            定时器T1中断函数
  148. *********************************************************************/
  149. ……………………

  150. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
ALIM0073.JPG ALIM0072.JPG
【简要说明】
此模块采用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, 下载次数: 298)

评分

参与人数 1黑币 +3 收起 理由
kljie1000 + 3

查看全部评分

回复

使用道具 举报

ID:378605 发表于 2018-7-24 17:32 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:214628 发表于 2018-8-2 15:14 | 显示全部楼层
非常感谢!正好需要。
回复

使用道具 举报

ID:415940 发表于 2018-10-26 18:40 | 显示全部楼层
请教版主 这块板子哪里购买?
回复

使用道具 举报

ID:424122 发表于 2018-11-10 16:04 | 显示全部楼层
ACS712 不支持多路输入?
回复

使用道具 举报

ID:429786 发表于 2018-11-20 11:31 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

ID:255700 发表于 2019-1-3 10:35 | 显示全部楼层
谢谢分享,下载学习
回复

使用道具 举报

ID:169563 发表于 2019-1-14 10:05 | 显示全部楼层
会不会出现无电流通过时,显示不稳定现象
回复

使用道具 举报

ID:119547 发表于 2019-1-18 09:21 | 显示全部楼层
看看怎么样11111
回复

使用道具 举报

ID:237159 发表于 2019-5-7 12:23 | 显示全部楼层
打包下不行吗
回复

使用道具 举报

ID:144549 发表于 2019-6-4 11:45 | 显示全部楼层

看看怎么样1111
回复

使用道具 举报

ID:305511 发表于 2019-6-4 19:28 | 显示全部楼层
可以打包一下吗
回复

使用道具 举报

ID:487362 发表于 2019-6-12 08:48 | 显示全部楼层
谢谢!!!
回复

使用道具 举报

ID:3666 发表于 2019-10-25 17:50 | 显示全部楼层
这三句是什么意思呀?谢谢
回复

使用道具 举报

ID:697465 发表于 2020-4-5 10:40 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表