发作品签到
标准版

基于ACS712的20A大电流AC/DC电流检测模块

工程标签

832
0
0
1

简介

本项目将介绍一种基于 Allegro 公司的 ACS712 霍尔电流传感器芯片、支持 IIC 连接的 1602 液晶显示模块和 Arduino Uno 开发板的大电流传感系统,电路图为电流传感器模块。

简介:本项目将介绍一种基于 Allegro 公司的 ACS712 霍尔电流传感器芯片、支持 IIC 连接的 1602 液晶显示模块和 Arduino Uno 开发板的大电流传感系统,电路图为电流传感器模块。

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2023-12-09 04:39:23更新时间:2024-07-11 08:14:21

描述

代码

//引入依赖,注意安装液晶屏I2C库
#include
#include

//初始化LCD1602液晶屏,地址为0x27,16列2行
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
  Serial.begin(9600); //Start Serial Monitor to display current read value on Serial monitor
  lcd.init(); //初始化液晶屏
  lcd.backlight(); //打开背光
}

void loop() {
  unsigned int x = 0;
  float AcsValue = 0.0, Samples = 0.0, AvgAcs = 0.0, AcsValueF = 0.0;
  for (int x = 0; x < 150; x++) { //Get 150 samples
    AcsValue = analogRead(A0);     //Read current sensor values
    Samples = Samples + AcsValue;  //Add samples together
    delay (3); // let ADC settle before next sample 3ms
  }
  AvgAcs = Samples / 150.0; //Taking Average of Samples
  AcsValueF = (2.5 - (AvgAcs * (5.0 / 1024.0)) ) / 0.100; //Calculate the current value in Ampere
  Serial.print(AcsValueF, 3); //Print the read current on Serial monitor with 3 decimal places
  delay(50);

  //显示电流值在液晶屏第一行
  lcd.setCursor(0, 0); //设置光标位置
  lcd.print("Current: "); //打印前缀
  lcd.print(AcsValueF, 3); //打印电流值,保留3位小数
  lcd.print(" A"); //打印单位

  //显示报警范围在液晶屏第二行
  lcd.setCursor(0, 1); //设置光标位置
  lcd.print("AlarmRange:0-5 A"); //打印报警范围

  //如果电流值超过5A,让液晶屏闪烁
  if (AcsValueF > 5.0 || AcsValueF < 0.0) {
    lcd.noBacklight(); //关闭背光
    delay(500); //延时0.5秒
    lcd.backlight(); //打开背光
    delay(500); //延时0.5秒
  }
}

设计图

原理图
PCB

BOM

IDNameDesignatorFootprintQuantity
1100nFC1C12061
21nFC2C06031
3PZ254V-11-03P_C2937625H1HDR-TH_3P-P2.54-V-M1
4FC-A2012BK-470H2LED1LED0805-R-RD1
5WJ128V-5.0-2PP1CONN-TH_2P-P5.00_WJ128V-5.0-2P1

附件

序号文件名称下载次数
1
video_20231226_114029.mp4
6
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航