在这个项目中,我们将使用Arduino制造交流电压测量设备,该设备将测量我们家中交流电源的电压。我们将在Arduino IDE的串行监视器上以及在万用表上显示该电压。
制作数字电压表比制作模拟电压表要容易得多,因为使用模拟电压表时,您必须对扭矩,摩擦损耗等物理参数有充分的了解。而使用数字电压表时,您只能使用LCD或LED矩阵或甚至您的笔记本电脑(在这种情况下)也可以为您打印电压值。以下是一些数字电压表项目:
- 使用ICL7107的带有PCB的简单数字电压表电路
- LM3914电压表电路
- 使用AVR单片机的0-25V数字电压表
所需组件:
- 一台12-0-12变压器
- 1N4007二极管
- 1uf电容器
- 电阻10k; 4.7千
- 齐纳二极管(5v)
- Arduino UNO
- 连接线
Arduino电压表电路图:
该Arduino电压表的电路图如上所示。
连接方式:
- 将变压器的高压侧(220V)连接到主电源,将低压(12v)连接到分压器电路。
- 将10k电阻与4.7k电阻串联连接,但请确保将电压作为4.7k电阻的输入。
- 如图所示连接二极管。
- 跨接4.7k的电容器和齐纳二极管
- 将一条线从二极管的n端子连接到Arduino的模拟引脚A0。
** 注意:请 按图所示将Arduino的接地引脚连接到该点,否则电路将无法工作。
需要分压器电路吗?
由于我们使用的是220/12 V变压器,因此在LV端可获得12V。由于此电压不适合用作Arduino的输入,因此我们需要一个分压器电路,该电路可以提供合适的电压值作为Arduino的输入
。
为什么要连接二极管和电容器?
由于Arduino不接受负电压值作为输入,因此我们首先需要消除降压AC的负周期,以便Arduino仅获取正电压值。因此,二极管被连接以对降压电压进行整流。查看我们的半波整流器和全波整流器电路,以了解有关整流的更多信息。
整流后的电压不平滑,因为它包含大纹波,无法给我们任何精确的模拟值。因此,连接电容器可平滑交流信号。
齐纳二极管的用途?
如果将大于5v的电压馈入Arduino,可能会造成损坏。因此,连接了一个5v齐纳二极管以确保Arduino的安全,如果该电压超过5v,该二极管将击穿。
基于Arduino的交流电压表的工作原理:
1.降压电压是在变压器的lv侧获得的,适合在正常额定功率电阻器上使用。
2.然后我们在4.7k电阻上获得合适的电压值
通过在变形体上模拟该电路,可以找到可以测量的最大电压(在模拟部分进行了说明)。
3. Arduino以0到1023之间的模拟值形式将此电压作为从引脚A0输入的电压。0为0伏,1023为5v。
4.然后,Arduino通过公式将该模拟值转换为相应的市电交流电压。(在代码部分中说明)。
模拟:
用蛋白质制成精确的电路,然后进行仿真。为了找到该电路可以测量命中的最大电压,使用了试用方法。
在使交流发电机的峰值电压为440(311 rms)时,发现引脚A0上的电压为5伏,即最大。因此,该电路可以测量最大311 rms的电压。
针对220 rms至440v之间的各种电压执行仿真。
代码说明:
在该项目的最后给出了完整的ArduinoVoltmeter代码,并通过注释进行了很好的解释。在这里,我们仅解释其中的一部分。
m是引脚A0上收到的输入模拟值,即
m = pinMode(A0,INPUT); //将引脚a0设置为输入引脚
要分配变量n该式 N =(M * 。 304177), 第一某种计算是通过使用在模拟部分中获得的数据进行的:
从仿真照片中可以看出,当输入交流电压为311V时,在A0引脚上可获得5v或1023模拟值。因此:
因此,任何随机模拟值都对应于(311/1023)* m,其中m是获得的模拟值。
因此,我们得出以下公式:
n =(311/1023)* m伏或n =(m *.304177)
现在,如下所述,使用串行命令将此电压值打印在串行监视器上。并且还显示在万用表上,如以下视频所示。
屏幕上显示的值是:
代码中指定的模拟输入值:
Serial.print(“模拟输入”); //这给打印的模拟值Serial.print(m)提供了“模拟输入”的名称; //这只是打印了输入的模拟值
代码中指定的所需交流电压:
Serial.print(“交流电压”); //这给打印的模拟值Serial.print(n)命名为“交流电压”;//这只是打印交流电压值