我们发现很难读取电阻上的颜色代码以找到其电阻。为了克服查找电阻值的困难,我们将使用Arduino构建一个简单的欧姆表。该项目的基本原理是分压器网络。未知电阻的值显示在16 * 2 LCD显示屏上。该项目还可以用作与Arduino接口的16 * 2 LCD显示器。
所需组件:
- Arduino Uno
- 16 * 2 LCD显示屏
- 电位计(1千克欧姆)
- 电阻器
- 面包板
- 跳线
电路原理图:
Arduino Uno:
Arduino Uno是基于ATmega328p微控制器的开源微控制器板。它具有14个数字引脚(其中6个引脚可用作PWM输出),6个模拟输入,板载稳压器等。Arduino Uno具有32KB闪存,2KB SRAM和1KB EEPROM。它的时钟频率为16MHz。Arduino Uno支持用于与其他设备进行通信的Serial,I2C,SPI通信。下表显示了Arduino Uno的技术规格。
微控制器 | ATmega328p |
工作电压 | 5伏 |
输入电压 | 7-12V(推荐) |
数字I / O引脚 | 14 |
模拟引脚 | 6 |
快闪记忆体 | 32KB |
SRAM | 2KB |
EEPROM | 1KB |
时钟速度 |
16兆赫 |
16x2 LCD:
16 * 2 LCD是嵌入式应用中广泛使用的显示器。这是有关16 * 2 LCD显示器的引脚和工作原理的简要说明。LCD内有两个非常重要的寄存器。它们是数据寄存器和命令寄存器。命令寄存器用于发送命令,例如清晰显示,在家中的光标等;数据寄存器用于发送要在16 * 2 LCD上显示的数据。下表显示了16 * 2 LCD的引脚说明。
销 |
符号 |
输入输出 |
描述 |
1个 |
VS |
-- |
地面 |
2 |
Vdd |
-- |
+ 5V电源 |
3 |
Vee |
-- |
电源控制对比度 |
4 |
RS |
一世 |
RS = 0,用于命令寄存器, RS = 1用于数据寄存器 |
5 |
读写器 |
一世 |
R / W = 0用于写入,R / W = 1用于读取 |
6 |
Ë |
输入输出 |
启用 |
7 |
D0 |
输入输出 |
8位数据总线(LSB) |
8 |
D1 |
输入输出 |
8位数据总线 |
9 |
D2 |
输入输出 |
8位数据总线 |
10 |
D3 |
输入输出 |
8位数据总线 |
11 |
D4 |
输入输出 |
8位数据总线 |
12 |
D5 |
输入输出 |
8位数据总线 |
13 |
D6 |
输入输出 |
8位数据总线 |
14 |
D7 |
输入输出 |
8位数据总线(MSB) |
15 |
一种 |
-- |
+ 5V背光 |
16 |
ķ |
-- |
地面 |
电阻颜色代码的概念:
要确定电阻值,我们可以使用以下公式。
R = {(AB * 10 c)Ω±T%}
哪里
A =第一个波段中的颜色值。
B =第二个波段中的颜色值。
C =第三波段的颜色值。
T =第四波段的颜色值。
下表显示了电阻器的颜色代码。
颜色 |
颜色的数值 |
倍增系数(10 c) |
公差值(T) |
黑色 |
0 |
10 0 |
-- |
棕色 |
1个 |
10 1 |
±1% |
红 |
2 |
10 2 |
±2% |
橙子 |
3 |
10 3 |
-- |
黄色 |
4 |
10 4 |
-- |
绿色 |
5 |
10 5 |
-- |
蓝色 |
6 |
10 6 |
-- |
紫色 |
7 |
10 7 |
-- |
灰色 |
8 |
10 8 |
-- |
白色 |
9 |
10 9 |
-- |
金 |
-- |
10 -1 |
±5% |
银 |
-- |
10 -2 |
±10% |
没有乐队 |
-- |
-- |
±20% |
例如,如果颜色代码为棕色–绿色–红色–银色,则电阻值的计算方式为:
棕色= 1绿色= 5红色= 2银色=±10%
从前三个频段,R = AB * 10 c
R = 15 * 10 +2 R = 1500Ω
第四带表示±10%的公差
1500的10%= 150对于+ 10%,该值为1500 + 150 =1650Ω对于-10%,该值为1500 -150 =1350Ω
因此,实际电阻值可以在1350Ω至1650Ω之间。
为了使其更方便,这里是“电阻颜色代码计算器”,您只需在电阻上输入环的颜色即可获得电阻值。
使用Arduino欧姆表计算电阻:
电阻表的工作非常简单,可以使用下面显示的简单分压器网络进行解释。
从电阻器R1和R2的分压器网络,
Vout = Vin * R2 /(R1 + R2)
从上面的等式,我们可以推导出R2的值为
R2 = Vout * R1 / /(Vin – Vout)
其中R1 =已知电阻
R2 =未知电阻
Vin = Arduino的5V引脚产生的电压
Vout = R2上相对于地的电压。
注意:所选的已知电阻(R1)值为3.3KΩ,但用户应将其替换为所选电阻的电阻值。
因此,如果我们获得未知电阻两端的电压值(Vout),我们可以轻松计算出未知电阻R2。在这里,我们已使用模拟引脚A0(参见电路图)读取了电压值Vout,并将这些数字值(0 -1023)转换为电压,如下面的代码所述。
如果已知电阻的值远大于或小于未知电阻的值,则误差会更大。因此,建议使已知电阻值更接近未知电阻。
代码说明:
在该项目的末尾给出了该项目的完整Arduino程序和演示视频。该代码分为多个有意义的小块,并在下面进行说明。
在这部分代码中,我们将定义16 * 2 LCD显示器连接到Arduino的引脚。16 * 2 LCD的 RS 引脚连接到arduino的数字引脚2。16 * 2 LCD的 使能 引脚连接到Arduino的数字引脚3。16 * 2 LCD的数据引脚(D4-D7)连接到Arduino的数字引脚4,5,6,7。
液晶(2,3,4,5,6,7); // rs,e,d4,d5,d6,d7
在这部分代码中,我们定义了一些在程序中使用的变量。Vin是arduino的5V引脚提供的电压。Vout是电阻器R2相对于地的电压。
R1是已知电阻的值。R2是未知电阻的值。
整数Vin = 5; // arduino float Vout = 0的5V引脚上的电压; // arduino float R1的A0引脚的电压= 3300; //已知电阻浮点值R2 = 0; //未知电阻值
在这部分代码中,我们将初始化16 * 2 lcd display。这些命令被赋予16 * 2 LCD显示屏以用于不同的设置,例如清晰屏幕,光标闪烁显示等。
lcd.begin(16,2);
在此部分代码中,电阻器R2(A0引脚)上的模拟电压被转换为数字值(0至1023)并存储在变量中。
a2d_data = AnalogRead(A0);
在这部分代码中,数字值(0至1023)被转换为电压,以进行进一步的计算。
缓冲区= a2d_data * Vin; Vout =(缓冲器)/1024.0;
的 Arduino的乌诺ADC 是10位分辨率的(所以从0的整数值- 2 ^ 10 = 1024个值)。这意味着它将把0到5伏之间的输入电压映射为0到1023之间的整数值。因此,如果将输入 anlogValue 乘以 (5/1024),则可以得到输入电压的数字值。在这里了解如何在Arduino中使用ADC输入。
在这部分代码中,未知电阻的实际值使用上述过程计算。
缓冲区= Vout /(Vin-Vout); R2 = R1 *缓冲区;
在这部分代码中,未知电阻的值打印在16 * 2 LCD显示屏上。
lcd.setCursor(4,0); lcd.print(“欧姆表”); lcd.setCursor(0,1); lcd.print(“ R(ohm)=”); lcd.print(R2);
这是我们可以使用Arduino轻松计算未知电阻器的电阻。还要检查:
- Arduino频率计
- Arduino电容表