兴趣爱好交流网站源码分享(兴趣爱好页面网站)

大家好,今天小编来为大家解答以下的问题,关于兴趣爱好交流网站源码分享,兴趣爱好页面网站这个很多人还不知道,现在让我们一起来看看吧!

我们将逐步构建一个万用表。我们将分别看到所有部分,最后我们将所有部分加在一起。首先,我们将使用非常简单的arduino配置来构建一个简单的欧姆表。我们将在每种情况下看到arduino代码。对于每个示例,我们将首先在测量值的arduino监视器上进行串口打印,最后使用使用i2c通信在LCD屏幕显示出来。我们还将构建一个电容表,一个电感表,最后建立电流表和功率计。

电阻表

因此,我们将使用最基本的分压器来计算阻值。众所周知,分压器由两个串联的电阻(R1和R2)组成。中间点的输出电压为[R2/(R1+R2)]Vin。使用该公式并了解两个电阻之一的值并测量Vout,可以很容易地计算出电阻的阻值。

我们知道Vin将是arduino的5伏。我们也知道R2是1k欧姆。我们可以使用Arduino的模拟输入之一测量Vout,例如引脚A0。通过所有这3个值,我们现在可以计算出电阻器R1的未知值。所以像这样我们自己做了一个电阻表。但问题是精度。当R2=1k欧姆时,我们能够以非常好的精度测量0到1k欧姆的电阻。但是为了测量更高的阻值,我们必须改变R2的值。我们将使用R2=2k来测量0到2k之间的电阻,对于2K到20k之间的值,R2=20k,对于20k到200k之间的值,R2=200k,最后R2=1M,以测量200k到1M欧姆之间的值。

好的,我们想测量未知电阻的电阻。因此,我们将数字引脚D2连接到它,在写代码时我们将其切换到OUTPUTHIGH或INPUT,以便在需要时施加5V或高阻态。使用旋钮开关我们可以改变档位。记得在旋转开关引脚上放一些下拉电阻。我们将5V连接到旋转开关的中间引脚,将4个引脚连接到数字引脚D9,D10,D11和D12。当D9为高时,我们将在0到2k欧姆范围内。因此我们将D2设置为高电平,使未知电阻器的电压为5伏,并将D5设置为OUTPUT和LOW状态。我们必须将D3,D4,D6设置为INPUTS,以使引脚具有高阻抗,因此没有电流会流过其他3个电阻。当我们改变比例时,我们需要做的就是将其中一个引脚更改为OUTPUT为LOW状态,并将其他引脚设置为INPUTS。复制下面的代码并将其上传到您的Arduino。我使用得是ArduinoUNO,但你可以使用任何类型的Arduino。首先,为了使用带有i2c通信的LCD屏幕,您必须在您的ArduinoIDE中安装i2cLyquidCrystal库。

你可以下载Lyquidcrystal库,要安装它,我们只需转到Sketch->Include库,然后打开我们刚刚下载的.zip文件。

文件详情见微信公众号电子爱好讨论分享

源代码:

//LCDconfig

include<LiquidCrystal_I2C.h>

LiquidCrystal_I2Clcd(0x3f,20,4);//sometimestheadressisnot0x3f.Changeto0x27ifitdosn’twork.

intanalogPin=0;

intV_measured=0;

intVin=5;

floatVout=0;

intapply_voltage=2;

floatR2=0;

floatbuffer=0;

intch2K=5;

intch20K=4;

intch200K=3;

intch1M=6;

intScale2k=9;

intScale20k=12;

intScale200k=11;

intScale1M=10;

voidsetup()

{

lcd.init();

lcd.backlight();

Serial.begin(9600);

pinMode(V_measured,INPUT);

pinMode(analogPin,INPUT);

pinMode(apply_voltage,OUTPUT);

//Detecttherangemode(0-1kK;10k-100k;100k-1M)

pinMode(Scale2k,INPUT);

pinMode(Scale20k,INPUT);

pinMode(Scale200k,INPUT);

pinMode(Scale1M,INPUT);

//Wesetthispinsasinputfornow.

pinMode(ch2K,INPUT);

pinMode(ch20K,INPUT);

pinMode(ch200K,INPUT);

pinMode(ch1M,INPUT);

}

voidloop()

{

///////////////////-2k-/////////////////////

if(digitalRead(Scale2k))

{

digitalWrite(apply_voltage,HIGH);

pinMode(ch2K,OUTPUT);

pinMode(ch20K,INPUT);

pinMode(ch200K,INPUT);

pinMode(ch1M,INPUT);

digitalWrite(ch2K,LOW);

floatR1=2;//SetthisvaluestothevalueoftheusedresistorinKohms

V_measured=analogRead(analogPin);//in8bits

buffer=V_measured*Vin;

Vout=(buffer)/1024.0;//involts

buffer=(Vin/Vout)-1;

R2=R1*buffer*1000;//*1000becauseweexpressitinohms

if(R2>2000)

{

Serial.print(“Increasescale”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Increasescale”);

lcd.setCursor(0,1);

lcd.print(“orinsertresist”);

delay(1000);

}

if(R2<2000)

{

Serial.print(“—-[2K]—-“);

Serial.print(“\\n”);

Serial.print(“\\n”);

Serial.print(“Resistance:”);

Serial.print(R2);

Serial.print(“”);

Serial.print(“ohms”);

Serial.print(“\\n”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“SCALE:0-2K”);

lcd.setCursor(0,1);

lcd.print(R2);

lcd.setCursor(10,1);

lcd.print(“ohms”);

delay(1000);

}

}

////////////////////////////////////////////

///////////////////-20k-/////////////////////

if(digitalRead(Scale20k))

{

digitalWrite(apply_voltage,HIGH);

pinMode(ch2K,INPUT);

pinMode(ch20K,OUTPUT);

pinMode(ch200K,INPUT);

pinMode(ch1M,INPUT);

digitalWrite(ch20K,LOW);

floatR1=20;//SetthisvaluestothevalueoftheusedresistorinKohms

V_measured=analogRead(analogPin);//in8bits

buffer=V_measured*Vin;

Vout=(buffer)/1024.0;//involts

buffer=(Vin/Vout)-1;

R2=R1*buffer;

if(R2>20)

{

Serial.print(“Increasescale”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Increasescale”);

lcd.setCursor(0,1);

lcd.print(“orinsertresist”);

delay(1000);

}

if(R2<20)

{

Serial.print(“—-[20K]—-“);

Serial.print(“\\n”);

Serial.print(“\\n”);

Serial.print(“Resistance:”);

Serial.print(R2);

Serial.print(“”);

Serial.print(“Kohms”);

Serial.print(“\\n”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“SCALE:2-20K”);

lcd.setCursor(0,1);

lcd.print(R2);

lcd.setCursor(10,1);

lcd.print(“Kohms”);

delay(1000);

}

}

////////////////////////////////////////////

///////////////////-200k-/////////////////////

if(digitalRead(Scale200k))

{

digitalWrite(apply_voltage,HIGH);

pinMode(ch2K,INPUT);

pinMode(ch20K,INPUT);

pinMode(ch200K,OUTPUT);

pinMode(ch1M,INPUT);

digitalWrite(ch200K,LOW);

floatR1=220;//SetthisvaluestothevalueoftheusedresistorinKohms

V_measured=analogRead(analogPin);//in8bits

buffer=V_measured*Vin;

Vout=(buffer)/1024.0;//involts

buffer=(Vin/Vout)-1;

R2=R1*buffer;

if(R2>200)

{

Serial.print(“Increasescale”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Increasescale”);

lcd.setCursor(0,1);

lcd.print(“orinsertresist”);

delay(1000);

}

if(R2<200)

{

Serial.print(“—-[200K]—-“);

Serial.print(“\\n”);

Serial.print(“\\n”);

Serial.print(“Resistance:”);

Serial.print(R2);

Serial.print(“”);

Serial.print(“Kohms”);

Serial.print(“\\n”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“SCALE:20-200K”);

lcd.setCursor(0,1);

lcd.print(R2);

lcd.setCursor(10,1);

lcd.print(“Kohms”);

delay(1000);

}

}

////////////////////////////////////////////

///////////////////-1M-/////////////////////

if(digitalRead(Scale1M))

{

digitalWrite(apply_voltage,HIGH);

pinMode(ch2K,INPUT);

pinMode(ch20K,INPUT);

pinMode(ch200K,INPUT);

pinMode(ch1M,OUTPUT);

digitalWrite(ch1M,LOW);

floatR1=1;//SetthisvaluestothevalueoftheusedresistorinMohms

V_measured=analogRead(analogPin);//in8bits

buffer=V_measured*Vin;

Vout=(buffer)/1024.0;//involts

buffer=(Vin/Vout)-1;

R2=R1*buffer;

if(R2>2)

{

Serial.print(“Increasescale”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Increasescale”);

lcd.setCursor(0,1);

lcd.print(“orinsertresist”);

lcd.setCursor(10,1);

lcd.print(“Mohms”);

delay(1000);

}

if(R2<2)

{

Serial.print(“—-[1M]—-“);

Serial.print(“\\n”);

Serial.print(“\\n”);

Serial.print(“Resistance:”);

Serial.print(R2);

Serial.print(“”);

Serial.print(“Mohms”);

Serial.print(“\\n”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“SCALE:200-1M”);

lcd.setCursor(0,1);

lcd.print(R2);

lcd.setCursor(10,1);

lcd.print(“Mohms”);

delay(1000);

}

}

////////////////////////////////////////////

if((digitalRead(Scale2k)==LOW)&&(digitalRead(Scale20k)==LOW)&&(digitalRead(Scale200k)==LOW)&&(digitalRead(Scale1M)==LOW))

{

Serial.print(“Selectscale”);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(“Selectscaleand”);

lcd.setCursor(0,1);

lcd.print(“insertresistor”);

Serial.print(“\\n”);

delay(1000);

}

}

现在,打开串口监视器或连接LCD屏幕并放入未知值的电阻器。

关于兴趣爱好交流网站源码分享的内容到此结束,希望对大家有所帮助。

站内搜索