如何用Arduino测量外接电源电量

Arduino外接电源测量是一个非常有用的功能,可以让我们掌握电源的电量情况,及时充电。

本教程的项目是一个非常简单的新手项目,不需要很多的元器件和复杂电路就可以学会很多编码和电子学的知识,不要小看它,它还可以扩展出很多有用的功能,让我们开始旅程吧。

元器件清单:

所有需要的元器件都列在下面了,如果你购买的是一个Arduino的套装,除了齐纳二极管之外你应该有了所有的元器件。

  •  Arduino Uno
  •  红色LED 1个
  •  黄色LED 1个
  •  红色LED 1个
  •  5.1k 齐纳二极管 1个
  •  100欧电阻 3个
  •  2.2k欧电阻 1个
  •  面包板
  •  面包板线

组装Ardunio电源电量测量电路

这个电路中的齐纳二极管需要特别说明一下,这是一个新元件,作用是测量电压大于8v的电源的电压。

工作原理是在击穿电压下电流只能朝一个方向流动,这里我们使用的是5.1v的,一旦达到击穿电压,电流就只能朝反方向流动,这样的特性可以用它来保护只能接受特定电压的元器件,在我们的案例中就是Ardunio控制板。

2.2k欧的电阻用来给连接到Ardunio的电源降流,让电流在Ardunio可以接收的范围,否则Ardunio控制板可能会被烧坏。

电路中还有3个不同颜色的LED,我们用每个LED灯表示电源中的电量的多少。

  • 红色LED亮起表示电量不足
  • 黄色LED亮起表示电量已用掉大半
  • 绿色LED亮起表示电量充足

每一个LED灯,我们都会接一个100欧的电阻与之相连,这样可以防止电流过大烧坏LED。

接下来我们就把电路图组装起来,可以参考下面的电路图,不理解的地方可能参照文字。

1、 将Arduino的地线引脚与面包板上的地线相连。

2、在面包板上插上绿色、红色和黄色LED,将负极引脚连接到地线上。

3、将一个100欧姆的电阻连在LEDs的正极,然后从电阻上引出一条线到Arduino的相关引脚。

以下LED应该连接到相关的引脚号。

红色LED = 4
黄色LED = 3
绿色LED = 2

4、现在把模拟引脚0(A0)连接到面包板上,接上一个2.2k电阻和齐纳二极管(齐纳二极管上的有线的端朝向Arduino),最后从二极管的另一端印出来另一根线连接电池正极。

5、最后,在地线上引出一根线连接上电池负极。

Ardunio电源电量测量代码

首先,设置所有的变量,确保LED变量都分配到了前面我们提到的相关引脚上。

analogValue变量用来存储来自模拟输入的值,然后,我们根据这个值计算得出电压,并将结果存储到一个叫做voltage的变量中。

最后,ledDelay是希望LED延时多长时间关闭。

int greenLed = 2;
int yellowLed = 3;
int redLed = 4;

int analogValue = 0;
float voltage = 0;
int ledDelay = 1000;

setup函数只在Ardunio启动欸但时候调用一次,我们在这里设置所有的引脚,这里我们把LED的引脚设置为output.

void setup()
{
  pinMode(greenLed, OUTPUT);
  pinMode(yellowLed,OUTPUT);
  pinMode(redLed,OUTPUT);
}

在loop函数中我们会让Ardunio持续不断地做几个操作。首先,读取analog引脚,这个引脚的值会在0-1023之间,这个值代表我们的电压,我们做一个转化,将其乘以0.0048.

void loop()
{
  analogValue = analogRead(A0);
  voltage = 0.0048*analogValue;

最后把计算出的电压值和LED是否应该亮起的电压值进行比较,确定要亮起哪个LED。

if( voltage >= 1.6 )
    digitalWrite(greenLed, HIGH);
  else if (voltage > 1.2 && voltage < 1.6)
    digitalWrite(yellowLed, HIGH);
  else if( voltage <= 1.2)
    digitalWrite(redLed, HIGH);  
 
  delay(ledDelay);
  digitalWrite(redLed, LOW);
  digitalWrite(yellowLed, LOW); 
  digitalWrite(greenLed, LOW);
}

完成电路和代码后,把Arduino插上电脑,上传代码,确定一切是否都正常工作。

测试电路

当第一次把代码部署到Arduino时,你会发现LED一直不停地跳跃闪烁,这是因为模拟输入线的值是浮动的,会有噪声导致我们的程序检测不准确。

如果想消除噪声,可以把模拟线接地。

现在开始测量,把电池按照电路图组装上即可。

Ardunio就开始接收电池的电压,并把相关的LED灯亮起来。

功能扩展

这个教程只是个极简的测量电路,可以在此基础上做很多扩展。

比如把电压的数值打印输出到LCD屏幕上,这样就可以实时精确读数。

也可以做一个电池支架,这样就得到了一个电池容量测试仪。

 

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 如何用Arduino测量外接电源电量

赞 (0)

1 评论

4+3=

  1. 您好 您这个电源跟给arduino供电的电源是同一个吗 我想测试给arduino供电的电源的电量不知道怎么实现

    回复