如何使用Arduino构建一个简单的欧姆表

描述

我们发现很难读取电阻器上的颜色代码来找到其电阻。为了克服查找电阻值的困难,我们将使用Arduino构建一个简单的欧姆表。该项目背后的基本原则是分压器网络。未知电阻值显示在16*2液晶显示屏上。

所需组件:

Arduino Uno

16*2液晶显示屏

电位器(1公斤欧姆)

电阻

面包板

跳线

威廉希尔官方网站 图:

欧姆表

Arduino Uno:

阿杜伊诺Uno是一款基于ATmega328p微控制器的开源微控制器板。它具有 14 个数字引脚(其中 6 个引脚可用作 PWM 输出)、6 个模拟输入、板载稳压器等。Arduino Uno具有32KB闪存,2KB的SRAM和1KB的EEPROM。它的工作时钟频率为16MHz。 Arduino Uno支持串行,I2C,SPI通信,用于与其他设备通信。下表显示了Arduino Uno的技术规格。

 

微控制器 ATmega328p
工作电压 5V
输入电压 7-12V(推荐)
数字 I/O 引脚 14
模拟引脚 6
闪存 32KB
SRAM 2KB
电丙胺 1KB
时钟速度 16兆赫

 

16x2 液晶显示器:

16 * 2 LCD是嵌入式应用中广泛使用的显示器。以下是有关16 * 2液晶显示器的引脚和工作的简要说明。LCD内部有两个非常重要的寄存器。它们是数据寄存器和命令寄存器。命令寄存器用于发送清晰显示、光标在家乡等命令,数据寄存器用于发送要在16*2 LCD上显示的数据。下表显示了16 * 2 LCD的引脚说明。

 

象征 I/O 描述
1 VSS -
2 Vdd - +5V电源
3 V形 - 用于控制对比度的电源
4 RS RS=0 为命令寄存器 ,
RS=1 用于数据寄存器
5 乌尔曼 R/W=0 表示写入,R/W=1 表示读取
6 E I/O 使
7 D0 I/O 8位数据总线
8 D1 I/O 8位数据总线
9 D2 I/O 8位数据总线
10 D3 I/O 8位数据总线
11 D4 I/O 8位数据总线
12 D5 I/O 8位数据总线
13 D6 I/O 8位数据总线
14 D7 I/O 8位数据总线
15 一个 - +5V背光
16 K -

 

电阻颜色代码的概念:

为了确定电阻值,我们可以使用以下公式。

R= { (AB*10c)Ω  ± T% }

哪里

A = 第一个波段中颜色的值。

B = 第二波段中颜色的值。

C = 第三波段中颜色的值。

T = 第四波段中颜色的值。

下表显示了电阻器的颜色代码。

 

颜色 颜色的数值 乘法因子(10c) 公差值(T)
0 100 -
棕色 1 101 ± 1%
2 102 ± 2%
3 103 -
黄色 4 104 -
绿 5 105 -
6 106 -
7 107 -
灰色 8 108 -
9 109 -
- 10-1 ± 5%
- 10-2 ± 10%
无乐队 - - ± 20%

 

例如,如果颜色代码为棕色 – 绿色 – 红色 – 银色,则电阻值的计算公式为:

Brown = 1 Green = 5 Red = 2 Silver = ± 10%

从前三个波段开始,R = AB*10c

R = 15 * 10+2 R = 1500 Ω

第四波段表示公差± 10%

10% of 1500 = 150 For + 10 percent, the value is 1500 + 150 = 1650Ω For - 10 percent, the value is 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。

LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7
在代码的这一部分中,我们将定义一些在程序中使用的变量。Vin 是由 arduino 的 5V 引脚提供的电压。Vout是电阻R2处相对于地的电压。

R1是已知电阻的值。R2是未知电阻的值。

int Vin=5; //voltage at 5V pin of arduino
float Vout=0; //voltage at A0 pin of arduino
float R1=3300; //value of known resistance
float R2=0; //value of unknown resistance
在代码的这一部分中,我们将初始化16 * 2 LCD显示器。这些命令提供给16 * 2 LCD显示器,用于不同的设置,例如清晰的屏幕,光标闪烁时的显示等。

lcd.begin(16,2);
在代码的这一部分中,电阻R2(A0引脚)的模拟电压被转换为数字值(0至1023)并存储在变量中。

a2d_data = analogRead(A0);
在代码的这一部分中,数字值(0至1023)被转换为电压以供进一步计算。

buffer=a2d_data*Vin;
Vout=(buffer)/1024.0;
Arduino Uno ADC 具有 10 位分辨率(因此整数值从 0 - 2^10 = 1024 个值)。这意味着它将 0 到 5 伏之间的输入电压映射到 0 到 1023 之间的整数值。因此,如果我们将输入 anlogValue 乘以 (5/1024),则得到输入电压的数字值。在此处了解如何在 Arduino 中使用 ADC 输入。

在代码的这一部分中,未知电阻的实际值是使用上述程序计算的。

buffer=Vout/(Vin-Vout);
R2=R1*buffer;
在代码的这一部分,未知电阻的值印在16*2液晶显示器上。

lcd.setCursor(4,0);
lcd.print("ohm meter");
lcd.setCursor(0,1);
lcd.print("R (ohm) = ");
lcd.print(R2);

这是我们可以使用Arduino轻松计算未知电阻器的电阻。

#include


LiquidCrystal lcd(2,3,4,5,6,7); //rs,e,d4,d5,d6,d7


int Vin=5; //voltage at 5V pin of arduino

float Vout=0; //voltage at A0 pin of arduino

float R1=3300; //value of known resistance

float R2=0; //value of unknown resistance

int a2d_data=0; 

float buffer=0; 


void setup() 

{

lcd.begin(16,2);

}


void loop()

{

a2d_data=analogRead(A0);

if(a2d_data)

{

buffer=a2d_data*Vin;

Vout=(buffer)/1024.0;

buffer=Vout/(Vin-Vout); 

R2=R1*buffer;


lcd.setCursor(4,0);

lcd.print("ohm meter");


lcd.setCursor(0,1);

lcd.print("R (ohm) = ");

lcd.print(R2);



delay(1000);

}

}

 


 

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

全部0条评论

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

×
20
完善资料,
赚取积分