如何使用Arduino制作一个交流电压测量设备

测量仪表

1490人已加入

描述

在这个项目中,我们将 使用Arduino制作一个交流电压测量设备, 该设备将测量我们家中交流电源的电压。我们将在Arduino IDE的串行监视器上打印该电压,并在万用表上显示。

制作数字电压表比制作模拟电压表容易得多,因为在模拟电压表的情况下,您必须对扭矩、摩擦损耗等物理参数有很好的了解,而在数字电压表的情况下,您只需使用 LCD 或 LED 矩阵甚至您的笔记本电脑(如本例)为您打印电压值。

所需组件:

  1. 一台 12-0-12 变压器
  2. 1N4007二极管
  3. 1uf电容器
  4. 电阻 10k;4.7k。
  5. 齐纳二极管(5V)
  6. Arduino UNO
  7. 连接线

Arduino电压表电路图:

Arduino

Arduino电压表的电路图如上所示。

连接:

  1. 将变压器的高压侧(220V)连接到主电源,将低压侧(12V)连接到分压器电路。
  2. 将 10k 电阻与 4.7k 电阻串联,但确保将电压作为 4.7k 电阻的输入。
  3. 如图所示连接二极管。
  4. 连接 4.7k 上的电容器和齐纳二极管
  5. 将一根电线从二极管的n端连接到Arduino的模拟引脚A0。

** 注意:将Arduino的接地引脚连接到图中所示的点,否则电路将不起作用。

Arduino

需要分压器电路吗?

当我们使用 220/12 V 变压器时,我们在 l.v 侧得到 12 v。由于该电压不适合作为Arduino的输入,因此我们需要一个分压器电路,该电路可以提供合适的电压值作为Arduino的输入。

为什么连接二极管和电容器?

由于Arduino不将负电压值作为输入,因此我们首先需要消除降压AC的负循环,以便Arduino仅获取正电压值。因此,连接二极管以整流降压。查看我们的波整流器和全波整流器电路,了解有关整流的更多信息。

该整流电压不平滑,因为它包含较大的纹波,无法为我们提供任何精确的模拟值。因此,连接电容器以平滑交流信号。

齐纳二极管的用途?

如果将大于 5v 的电压馈送到 Arduino,它可能会受到损坏。因此,连接了一个 5v 齐纳二极管以确保 Arduino 的安全性,如果该电压超过 5v,该二极管会击穿。

基于Arduino的交流电压表的工作:

  1. 变压器的L.V侧获得降压电压,适用于正常额定功率电阻器。

2.然后我们在4.7k电阻上得到合适的电压值

通过在变形杆菌上模拟该电路,可以找到可以测量的最大电压(在模拟部分中解释)。

  1. Arduino 将此电压作为引脚 A0 的输入,以 0 到 1023 之间的模拟值的形式出现。0 是 0 伏,1023 是 5V。
  2. 然后,Arduino 通过公式将此模拟值转换为相应的电源交流电压。(在代码部分中解释)。

模拟:

Arduino

精确的电路是在变形杆菌中制造的,然后进行模拟。为了找到该电路可以测量命中的最大电压,请使用试验方法。

在使交流发电机的峰值电压为440(311 r.m.s)时,发现引脚A0上的电压为5伏,即最大。因此,该电路可以测量最大311 r.m.s电压。

对 220 r.m.s 至 440v 之间的各种电压进行仿真。

Arduino

代码说明:

完整的Arduino电压表代码在本项目结束时给出,并通过评论进行了很好的解释。在这里,我们将解释其中的一小部分。

m 是引脚 A0 上接收到的输入模拟值,即

m=    pinMode (A0,INPUT) ;  // set pin a0 as input pin

将变量 n 分配给此公式 n=(m * 304177), 首先使用在模拟部分获得的数据执行某种计算:

如仿真照片所示,当输入交流电压为 311V 时,在引脚 A0 处获得 5v 或 1023 模拟值。因此:

1023 模拟值对应于 311 伏电源

因此,任何随机模拟值对应于 (311/1023)*m,其中 m 是获得的模拟值。

因此,我们得出这个公式:

n=(311/1023) m 伏特或 n=(m .304177)

现在,该电压值使用串行命令打印在串行监视器上,如下所述。并且还显示在万用表上,如下面的视频所示。

屏幕上打印的值为:

代码中指定的模拟输入值:

Serial.print("   analog input  ") ; // this gives name which is “analog input”  to the printed analog value 

Serial.print(m);// this simply prints the input analog value

代码中指定的所需交流电压:

Serial.print("   ac voltage  ") ; // this gives name  “ac voltage”  to the printed analog value 

 Serial.print(n) ;  // this simply prints the ac voltage value

int m;// initialise variable m

float n;//initialise variable n

void setup()

{

pinMode(A0,INPUT); // set pin a0 as input pin

Serial.begin(9600);// begin serial communication between arduino and pc

}

void loop()

{

m=analogRead(A0);// read analog values from pin A0 across capacitor

n=(m* .304177);// converts analog value(x) into input ac supply value using this formula ( explained in woeking section)

Serial.print(" analaog input " ) ; // specify name to the corresponding value to be printed

Serial.print(m) ; // print input analog value on serial monitor

Serial.print(" ac voltage ") ; // specify name to the corresponding value to be printed

Serial.print(n) ; // prints the ac value on Serial monitor

Serial.println();

}


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分