制作Arduino欧姆表测量电阻值

  • 内容
  • 评论
  • 相关

在DIY制作中我们经常会使用到电阻,电阻值的测量一般会通过万用表或直接读取电阻器上的色环代码来完成。没万用表怎么办?色环颜色不易分辨怎么办?为了克服这些困难,那就使用Arduino来制作一个简单的欧姆表,并在LCD 1602显示屏上显示被侧电阻的值。

制作Arduino欧姆表测量电阻值

Arduino欧姆表原理

在利用Arduino来制作欧姆表的这个项目中,基本原理是基于分压器电路。它的计算公式是:Vout= (Vin x R2) / (R1 + R2),Vin是输入电压;Vout是输出电压。

分压器电路图

根据欧姆定律,可以推导出以下公式:

  1. Vin = I x (R1+R2),输入电压=电流x电阻值。
  2. Vout = I x R2,输出电压=电流 x R2的值。
  3. I = Vin  /(R1+R2),电流=输入电压/电阻值。
  4. I = Vout  / R2,电流=输出电压 / R2电阻值。
  5. Vout / R2 = Vin  /(R1+R2
  6. Vout= (Vin x R2) / (R1 + R2)

16x2 LCD显示屏

显示屏的引脚可查看:1602 LCD液晶屏引脚定义图

电阻色环值的计算

为了能通过色环计算电阻的值,我们可以使用下面的公式:R= [ (AB*10c)Ω ± T% ]

其中:

  • A:第一个色环的值;
  • B:第二个色环的值;
  • C:第三个色环的值;
  • T:第四个色环的值。

色环电阻识别表

假设,上图电阻色环是“红-橙-黄-银”,其电阻值的计算过程是:

通过电阻的色环阻值表,可以得到 红=2 ;橙=3 ;黄=4;银=10。然后通过上面的公式:R= [ (AB*10c)Ω ± T% ]计算,AB=23;10c=104;T%=10%,得到R = 230000Ω ,精度为± 10%。因此,实际电阻值介于207KΩ~ 253KΩ 之间。

用Arduino欧姆表计算电阻的过程

Arduino欧姆表电路图

Arduino欧姆表计算电阻的过程非常简单,它依然可以分压器电路来解释。在电阻R1和R2组成的分压器网络中,Vout = Vin * R2 / (R1 + R2 ),由此可以推导出R2的值,R2 = Vout * R1 / (Vin – Vout)R1 是已知电阻;R2 是未知电阻。因此,如果我们得到未知电阻(Vout )的电压值,我们可以很容易地计算出未知电阻R2。电路中使用Arduino的模拟引脚A0读取电压值Vout (参见电路图),并将这些值(0 -1023)转换为电压,如下面的代码所示。

注:如果已知电阻的值远远大于或小于未知电阻,测量误差会比较大。因此,建议保持已知的电阻值与未知的电阻相对接近。

代码释义

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

在代码的这一部分中,定义连接到Arduino的16*2 LCD显示器的引脚。16*2 lcd的RS引脚连接Arduino的数字引脚2。16*2 lcd的 Enable 引脚连接Arduino的数字引脚3。16*2 lcd的数据引脚(D4-D7)连接Arduino的数字引脚4,5,6,7。

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

在这部分代码中,定义了程序中使用的一些变量。Vin是Arduino的5V 引脚提供的电压。Vout是电阻R2的对地电压。R1是已知电阻的值。R2是未知电阻的值。

lcd.begin(16,2);

在这部分代码中,我们将初始化LCD 1602液晶显示器模块。这些命令用于LCD 1602液晶显示器的显示设置,比如屏幕对比度、光标闪烁等。

a2d_data = analogRead(A0);

在代码的这一部分,是将电阻R2 (A0引脚)上的模拟电压转换为数字值(0到1023)并存储在变量中。

buffer=a2d_data*Vin;
Vout=(buffer)/1024.0;

在代码的这一部分,是将数字值(0-1023)转换为电压,然后进行进一步的计算。Arduino Uno ADC的分辨率是10-bit (所以值范围是:0 — 210 = 1024)。意味着它将把输入电压从0 - 5V映射成0-1023之间的整数。如果将输入 anlogValue 乘以 (5/1024) 就可以得到输入电压的数字值。

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);

这部分代码,主要完成将未知电阻的值显示在1602显示屏上。这样通过Arduino,我们可以很容易地计算出未知电阻的电阻值了。

完整代码如下:

#include<LiquidCrystal.h>

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);
  }
}