0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Arduino制作万能表

454398 来源:wv 2019-10-18 11:24 次阅读

步骤1:材料

这是要使用的材料。

集成:

IC ATMEGA 328P(Arduino UNO/Duemilanove )

LM741

LM393

稳压L7805CV

LCD 16X2

晶体16MHz

电容器

0.33uF

100nF

2 x 22pF 《1》聚酯1uF 《电阻:10K电位计

7 x 10K

2 x 220欧姆

1 M 《150》 330欧姆

二极管

1N4004

连接器

端子块2针

4 x MOLEX 100支2针

4针MOLEX花费100

4 x Borne

2 x开关

2 x按键盒

步骤2:代码和性能

作为测量骨骼电容的三个功能,电感和电阻,我们必须选择我们想做的,要选择功能并使用2位可以计数0-0,0-1,1-0,1-1。

所以我们使用两个开关进行选择,使它们用作下拉开关,将它们用作下拉开关,以测量电感为0-0,电容为0-1,电阻为1-0,这就是方法我们选择衡量。

要测量电感,请使用LM393比较器来测量LM741的电容,并使用10k电阻轻松地测量电阻并制作一个分压器。

假设我们要计算R1。我们知道R2的值为10k,我们知道Vin的值为5V(通常在Arduino环境中可以找到),并且在Arduino的模拟Vout引脚上的读数是750。

1 。-我们知道ADC Arduino的分辨率为10位,这意味着对于0V到5V之间的输入值,可以进行1024分频(将2提升到10)。因此,如果我们在模拟引脚上施加5V,则其值为1023(1024不会记住从0开始计数,而不是从1开始计数)。如果我们在引脚上施加0V,其值将为0,例如,如果我们将其设为2.5V,其值将为511。

因此,如果以数字值提供读取模拟引脚的值是750,我们可以计算出Vout,即分压器的输出电压。

》》 5V/1024格= 0,00488V/格

》》 0.00488伏/格•750格= 3.66V

2.-我们可以已经清除了R1,那就是问题:

》》 Vout =(R2/R1 + R2)•Vin

》》 3.66 V =(10k/R1 + 10k)•5V

》》 R1 + 10k = 10k•5V/3.66V

》》 R1 =(10k•5V/3.66V)-10k =3.66KΩ

通常,我们可以将R1的值计算为:

》》 R1 =(R2•Vin/Vout)-R2

相同的代码在西班牙语文档中,因此如果您如有任何疑问,请这样说:

#include LiquidCrystal lcd(13, 8, 7, 5, 4, 2);

#define R_1 A1

#define R_2 A2

#define IND_1 6

#define IND_2 12

#define fuente_pin 11

#define switch_pin 10

#define descarga_pin 9

#define PIN_1 A3

#define PIN_2 A4

//Variables leer pines

int pin_1;

int pin_2;

//Variables para inductometro

double pulso;

double frecuencia;

double capacitancia;

double inductancia;

//Capacimetro

float R = 1.0e6;

float C = 0;

float RC = 0;

long t_inicio = 0;

volatile long t_alto = 0;

long T = 0;

float VCC = 4.50;

float Vref = VCC / 2;

float V0 = 0;

float error_correccion = 40.;

int retardo_delay = 20;

//Variables resistometro

int vR_1 = 0;

int vR_2 = 0;

float Vin = 5;

float Vout = 0;

float Res_1 = 10000;

float Res_2 = 9000000;

float r_1 = 0;

float r_2 = 0;

float Resistor_1[8];

float Resistor_2[5];

float ResArreglo_1;

float ResArreglo_2;

void setup() {

lcd.begin(16, 2);

//Configuracion de pines

pinMode(PIN_1, INPUT);

pinMode(PIN_2, INPUT);

//Configuracion Inductometro

pinMode(IND_1, INPUT);

pinMode(IND_2, OUTPUT);

capacitancia = 0.000001021;

//delay(200);

//Configuracion de Resistometro

pinMode(R_1, INPUT);

pinMode(R_2, INPUT);

//Configuracion Capacimetro

attachInterrupt(1, stop, RISING);

Vref = VCC / 2;

pinMode(fuente_pin, OUTPUT);

digitalWrite(fuente_pin, LOW);

pinMode(switch_pin, INPUT);

pinMode(descarga_pin, INPUT);

}

void loop() {

leerpines();

if (pin_1 == LOW && pin_2 == LOW) {

digitalWrite(IND_2, HIGH);

delay(5);

digitalWrite(IND_2, LOW);

delayMicroseconds(100);

pulso = pulseIn(IND_1, HIGH, 5000);

lcd.clear();

if (pulso 》 0.1) {

frecuencia = 1.E6 / (2 * pulso);

inductancia = 1. / (capacitancia * frecuencia * frecuencia * 4.*3.1459 * 3.14159);

inductancia *= 1E6;

lcd.setCursor(2, 0);

lcd.print(“INDUCTANCIA:”);

//delay(200);

if (inductancia 》= 1000) {

lcd.setCursor(0, 1);

int valor = (inductancia / 1000) - 0.5;

lcd.print(valor);

lcd.setCursor(6, 1);

lcd.print(“mH”);

} else {

lcd.setCursor(0, 1);

int valor_2 = inductancia + 10;

lcd.print(valor_2);

lcd.setCursor(6, 1);

lcd.print(“uH”);

}

} else if (pulso 《 0.1) {

lcd.setCursor(2, 0);

lcd.print(“INSERTAR IND”);

}

delay(300); } if (pin_1 == LOW && pin_2 == HIGH) {

lcd.clear();

for (int i = 0 ; i 《= 7; i++) {

Resistor_1[i] = analogRead(R_1);

ResArreglo_1 = ResArreglo_1 + Resistor_1[i];

}

vR_1 = (ResArreglo_1 / 8.0);

Vout = (Vin * vR_1) / 1023;

r_1 = Res_1 * (1 / ((Vin / Vout) - 1));

lcd.setCursor(2, 0);

lcd.print(“RESISTENCIA:”);

if (r_1 《= 999) {

lcd.setCursor(0, 1);

lcd.print(r_1);

lcd.setCursor(9, 1);

lcd.print(“Omhs”);

} else if (r_1 》= 1000) {

r_1 = r_1 / 1000;

lcd.setCursor(0, 1);

lcd.print(r_1);

lcd.setCursor(9, 1);

lcd.print(“KOmhs”);

}

delay(500);

ResArreglo_1 = 0;

} if (pin_1 == HIGH && pin_2 == LOW) {

lcd.clear();

if (debounce(switch_pin) == LOW)

{

pinMode(descarga_pin, OUTPUT);

digitalWrite(descarga_pin, LOW);

delay(100);

pinMode(descarga_pin, INPUT);

digitalWrite(fuente_pin, HIGH);

t_inicio = micros(); } if (t_alto 》 0 && t_inicio 》 0 && (t_alto - t_inicio) 》 0 )

{

T = (t_alto - t_inicio);

RC = -T / log((Vref - VCC) / (V0 - VCC));

//Vref = VCC/2

//V0 = 0V

C = RC / R; //Valor en uF

lcd.setCursor(0, 0);

lcd.print(“C:”);

lcd.setCursor(3, 0);

lcd.print(C * 1000, 1);

lcd.setCursor(13, 0);

lcd.print(“nF”);

lcd.setCursor(0, 1);

lcd.print(“C:”);

lcd.setCursor(3, 1);

lcd.print(C * 1000000 - error_correccion , 0);

lcd.setCursor(13, 1);

lcd.print(“pF”); t_inicio = 0;

t_alto = 0; digitalWrite(fuente_pin, LOW);

delay(2000);

}

}

}void leerpines() {

pin_1 = digitalRead(PIN_1);

pin_2 = digitalRead(PIN_2);

}void stop()

{

t_alto = micros();

}int debounce(int pin)

{

int estado;

int previo_estado;

previo_estado = digitalRead(pin);

for (int i = 0; i 《 retardo_delay; i++)

{

delay(1);

estado = digitalRead(pin);

if ( estado != previo_estado)

{

i = 0;

previo_estado = estado;

}

}

return estado;

}

步骤3:电路,原理图和PCB

在这里您可以看到原理图中所有内容的连接方式,我上传了用老鹰。

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

    关注

    1

    文章

    19

    浏览量

    13875
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184832
收藏 人收藏

    评论

    相关推荐

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 2次下载

    使用模数转换器AD9684时,PCB板上电后ADC的供电电压AVDD2会被拉低怎么解决?

    ),AVDD3轨上会测到1.9V的电压(应该是毫无关系的两个电压轨)。但是使用万能表测试AVDD2和AVDD3之间的阻值也在1K欧姆左右,说明并未断路,PCB版图排查没有问题,现在怀疑要么是芯片焊接
    发表于 12-13 08:03

    HarmonyOS开发案例分享:万能卡片也能用来玩游戏

    一、前言 作为一名开发爱好者,从大了讲,我学习并进行 HarmonyOS 相关开发是为了能为鸿蒙生态建设尽一份绵薄之力,从小了讲,就是为了自己的兴趣。而万能卡片是一个让我非常感兴趣的东西。 很多
    发表于 12-01 09:35

    arduino做一个功能强大的一体化万用表

    教你用arduino做一个功能强大的一体化万用表。附带资料包含PCB设计图、相关代码等。你也可以简单自己制作
    发表于 09-27 07:06

    利用Arduino制作逆变器原理

    开源硬件-使用 Arduino 在家制作逆变器,逆变器原理图设计分享。
    发表于 07-07 17:22 7次下载
    利用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>逆变器原理

    制作Arduino控制的机器人

    电子发烧友网站提供《制作Arduino控制的机器人.zip》资料免费下载
    发表于 07-06 14:21 0次下载
    <b class='flag-5'>制作</b><b class='flag-5'>Arduino</b>控制的机器人

    Arduino制作音效

    电子发烧友网站提供《用Arduino制作音效.zip》资料免费下载
    发表于 07-06 10:13 0次下载
    用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>音效

    arduino uno制作暗/亮电平表

    电子发烧友网站提供《用arduino uno制作暗/亮电平表.zip》资料免费下载
    发表于 07-04 09:35 0次下载
    用<b class='flag-5'>arduino</b> uno<b class='flag-5'>制作</b>暗/亮电平表

    如何制作基于Arduino的自动开门

    电子发烧友网站提供《如何制作基于Arduino的自动开门.zip》资料免费下载
    发表于 06-29 10:14 0次下载
    如何<b class='flag-5'>制作</b>基于<b class='flag-5'>Arduino</b>的自动开门

    如何制作Arduino蓝牙控制的汽车

    电子发烧友网站提供《如何制作Arduino蓝牙控制的汽车.zip》资料免费下载
    发表于 06-26 10:21 0次下载
    如何<b class='flag-5'>制作</b><b class='flag-5'>Arduino</b>蓝牙控制的汽车

    万能表测绘出电路板的原理图不怎么准确要怎么解决?

    我使用的欧姆档测的,可是不怎么准确,请问各位大师还有什么好的办法嘛?我是个新手所以对怎么翻版子不怎么在行!
    发表于 06-19 08:47

    Arduino制作OLED位图图形

    电子发烧友网站提供《在Arduino制作OLED位图图形.zip》资料免费下载
    发表于 06-16 10:34 1次下载
    在<b class='flag-5'>Arduino</b>中<b class='flag-5'>制作</b>OLED位图图形

    Arduino Uno制作的四轴飞行器

    电子发烧友网站提供《Arduino Uno制作的四轴飞行器.zip》资料免费下载
    发表于 06-15 09:26 4次下载
    <b class='flag-5'>Arduino</b> Uno<b class='flag-5'>制作</b>的四轴飞行器

    万能表怎么测短路

    万能表可以用来测试电路中的短路。短路是指电路中两个电极之间出现低电阻的情况,导致电流流过电路时被短路部分吸收,从而影响电路的正常工作。下面是如何使用万能表来测试电路中的短路的介绍。
    的头像 发表于 06-03 09:36 9806次阅读