使用Arduino和16x2液晶显示器(LCD)可以轻松制作简单的数字电压表。
使用Arduino测量电压是相对简单的。Arduino有几种模拟输入引脚,可连接到Arduino内的模数转换器(ADC)。Arduino ADC是十比特转换器,这意味着输出值将从0到1023。我们将使用Analogread()函数获取此值。如果您知道参考电压 - 在这种情况下,我们将使用5 V - 您可以轻松地计算模拟输入处存在的电压。
为了显示测量的电压,我们将使用两行16个字符的液晶显示器(LCD)。液晶显示器广泛用于显示数据的设备,如计算器,微波炉和许多其他电器。
该项目还将通过使用分压器向您展示如何测量高于参考电压的电压。
实验1
在这个实验中,我们将制作能够测量最多5V的数字电压表Arduino Board和16x2 LCD。
需要硬件
- 1 x Arduino Mega2560
- 1x LCD(液晶显示器)
- 1x 5 Kohm电位器
- 1 x电路试验板
- 女性连接器
- 跳线
接线图
该实验中使用的16x2 LCD共有16个引脚。如下表所示,八个引脚是数据线(引脚7-14),两个是用于电源和地面(引脚1和16),三个用于控制LCD(引脚4-6)的操作,并且一个用于调整LCD屏幕亮度(引脚3)。剩余的两个引脚(15和16)为背光电源。
1号航站楼 | 接地 |
---|---|
码头2. | + 5 v |
码头3. | 电位器的中间终端(用于亮度控制) |
码头4. | 电阻选择(RS) |
码头5. | 读/写(RW) |
终端6. | 启用(EN) |
码头7. | DB0. |
码头8. | DB1. |
码头9. | DB2. |
码头10. | DB3. |
码头11. | DB4. |
终端12. | DB5. |
终端13. | DB6. |
终端14. | DB7. |
终端15. | + 4.2-5V. |
终端16. | 接地 |
请看下图,如何将LCD连接到Arduino上。注意电位器连接到5V源和GND,中间端子连接到LCD引脚3。旋转这个锅可以改变LCD的亮度。四个数据引脚DB4-DB7连接到Arduino引脚4-7。Enable连接Arduino的引脚9,RS连接Arduino的引脚8。RW接地。背光LED接5V,接地。下表显示了引脚的连接:
DB4——> pin4
DB5跑车——>平快
DB6 -----> PIN6
DB7——> pin7
RS -----> PIN8
en -----> Pin9
代码
下面的程序使用液晶文库。此库包含写入LCD所需的所有功能。
该循环从模拟输入读取模拟值,因为参考电压为5 V,它倍增值5,然后将1024分开以计算实际电压值。计算电压后,将值写入LCD。
下面的照片显示了典型的显示。
#include "LiquidCrystal.h" LiquidCrystal lcd(8, 9, 4, 5, 6, 7);Float input_voltage = 0.0;浮动temp = 0.0;void setup() {Serial.begin(9600);//打开串行端口,将数据速率设置为9600 bps lcd.begin(16,2);////设置LCD的列和行号:LCD.Print(“数字电压表”);} void loop(){//电压的转换公式int analog_value = analogRead(A0);Input_voltage = (analog_value * 5.0) / 1024.0;If (input_voltage < 0.1) {input_voltage=0.0;serial.print(“v =”); Serial.println(input_voltage); lcd.setCursor(0, 1); lcd.print("Voltage= "); lcd.print(input_voltage); delay(300); }
实验2
为了测量大于5 V参考电压的电压,您需要除以输入电压,使实际输入到Arduino的电压为5 V或更小。在该实验中,我们将使用90.9 kohm电阻和10个kohm电阻,以创建10:1分隔件。这将使我们可以测量高达50 V的电压。
需要硬件
- 1x Arduino Mega2560
- 1x 90.9 kohm电阻
- 1x 10 kohm电阻
- 1x LCD(液晶显示器)
- 1x 5K电位器
- 1 x电路试验板
- 女性连接器
- 跳线
接线图
该实验的电路与实验#1完全相同,不同之处在于我们现在具有一个分压器,由90.9 kohm电阻和连接到输入的10个kohm电阻组成。请参阅下图。
程序
这个实验的程序与实验1几乎相同。唯一不同的是,现在我们必须将计算出来的电压除以R2/(R1 + R2),在这个例子中是10,000/(90,900 + 10,000)≈0.1。
代码
#include "LiquidCrystal.h" LiquidCrystal lcd(8, 9, 4, 5, 6, 7);Float input_voltage = 0.0;浮动temp = 0.0;Float R1 = 90900.0;float r2 = 10000.0;void setup() {Serial.begin(9600);//打开串行端口,将数据速率设置为9600 bps lcd.begin(16,2);////设置LCD的列和行号:LCD.Print(“数字电压表”);} void循环(){//转换公式int模拟_value = analogread(a0);temp =(smalim_value * 5.0)/ 1024.0; input_voltage = temp / (r2/(r1+r2)); if (input_voltage < 0.1) { input_voltage=0.0; } Serial.print("v= "); Serial.println(input_voltage); lcd.setCursor(0, 1); lcd.print("Voltage= "); lcd.print(input_voltage); delay(300); }
digital_voltmeter_with_arduino_1.ino.zip.zip.zip
视频
为自己提供这个项目!得到bom。
我目前正在进行这个项目,目前正在困惑。视频显示与给定图表不匹配。LCD连接到面包板,这是如何完成的?
“在这个实验中,我们将使用100 kohm和10个kohm电阻来创建10:1分隔线。”
抱歉:您的分压器公式不正确。
正确的公式是R1 + R2 / R2
你应该使用90 9KΩ和10 0KΩ电阻对。