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

    文章

    21

    浏览量

    13969
  • Arduino
    +关注

    关注

    187

    文章

    6462

    浏览量

    186613
收藏 人收藏

    评论

    相关推荐

    万能转换开关的作用有哪些

    万能转换开关是一种广泛应用于工业自动化、电力系统、机械设备等领域的电气元件。它具有多种功能和优点,能够实现对电路的控制、保护和转换。 电路控制功能 万能转换开关最基本的作用是对电路进行控制。它可
    的头像 发表于 08-20 10:18 747次阅读

    万能转换开关是什么的主令电器

    万能转换开关,作为一种高度灵活多变的主令电器,在电力工程及工程技术领域扮演着重要角色。其英文名称为CAM switch,即Highly Versatile Change-Over Switch
    的头像 发表于 08-20 10:11 1008次阅读

    万能断路器参数设置的基本原则

    万能断路器是一种广泛应用于电力系统、工业自动化和建筑电气等领域的保护和控制设备。它具有过载保护、短路保护、欠压保护等多种功能,能够有效地保护电气设备和线路的安全运行。为了确保万能断路器的正常工作
    的头像 发表于 08-14 15:50 778次阅读

    万能断路器跳闸后如何复位

    万能断路器是一种广泛应用于电力系统中的保护装置,其主要作用是在电路发生故障时,能够迅速切断电路,以保护电气设备和人身安全。然而,在实际使用过程中,万能断路器可能会出现跳闸现象,这时候就需要进行复位
    的头像 发表于 07-31 15:24 1326次阅读

    万能断路器合不上闸的原因

    以下是万能断路器合不上闸的原因的主要内容: 万能断路器的基本原理和功能 万能断路器是一种用于保护电力系统的设备,可以自动切断故障电路,以防止设备损坏和事故的发生。 万能断路器的主要功能
    的头像 发表于 07-31 15:21 1851次阅读

    万能断路器参数如何设置

    万能断路器是一种广泛应用于电力系统、工业自动化和建筑电气领域的电气设备,其主要功能是在电路中起到过载、短路、欠压等保护作用。正确设置万能断路器参数对于确保设备安全运行和提高系统可靠性具有重要意义
    的头像 发表于 07-31 15:19 1520次阅读

    万能式断路器怎么调电流大小

    万能式断路器(Universal Circuit Breaker)是一种广泛应用于电力系统、工业自动化和建筑电气领域的电气保护设备。它具有过载保护、短路保护和欠压保护等多种功能,能够有效地保护电路
    的头像 发表于 07-31 15:06 1017次阅读

    简述万能电桥测量电容的步骤

    万能电桥是一种测量电感和电容的仪器,具有测量范围广、精度高、操作简便等特点。在测量电容时,万能电桥可以准确地测量出电容的值,为电子电路设计和维修提供了重要的参考数据。下面介绍万能电桥测量电容的步骤
    的头像 发表于 07-26 09:58 741次阅读

    python函数的万能参数

    我们通过一个简单的事例来展示一下函数的万能参数,我们先写一个最简单的函数。
    的头像 发表于 07-17 14:56 301次阅读
    python函数的<b class='flag-5'>万能</b>参数

    AG32的“万能管脚”

    推荐新设计了,也就是说原厂停产这款芯片已经进入倒计时了。客户听说我们的MCU是“万能管脚”的,所以想试一试看能否替换。AG32的确是目前MCU产品中最接近于“万能
    的头像 发表于 07-09 10:00 78次阅读
    AG32的“<b class='flag-5'>万能</b>管脚”

    万能表如何测量电瓶

    电瓶作为汽车、摩托车等交通工具的重要能源储存装置,其性能的好坏直接影响到车辆的正常运行。因此,定期检查电瓶的状态,确保其电量充足、性能稳定,是每位车主都应重视的事项。在众多的电瓶检测工具中,万能表
    的头像 发表于 05-20 17:02 1343次阅读

    万能表和摇有什么区别?

    万能表(也称万用表或多用电表)和摇(兆欧)是两种不同类型的电气测量工具,它们在电气检测中发挥着各自独特的作用。
    的头像 发表于 05-11 11:27 1934次阅读

    数字万能表使用及功能介绍

    公司主营出售/回收:示波器、频谱分析仪、网络分析仪、信号发生器、万用表/示波器校准仪、手机综合测试仪、噪声系数分析仪、数据采集器、NI-GPIB卡、阻抗/LCR测试仪,音频分析仪、蓝牙/WANL测试仪、电源、电池测试仪、探头/配件、天馈线测试仪、光谱分析仪 频率计、功率计等各类仪器仪表!
    的头像 发表于 03-19 10:55 1064次阅读

    万能表怎么测短路电流?

    在测量交流电流时,需要使用特定的夹子或夹具来确保良好的电流接触,并注意电路选路的连通性,以确保准确测量。
    的头像 发表于 02-03 14:57 2290次阅读

    万能遥控器的设置和使用方法

    万能遥控器是一种能够控制不同品牌电器的设备,它可以将多个遥控器的功能整合到一个遥控器上,方便用户操作。在本文中,我将详细介绍万能遥控器的设置和使用方法。 设置万能遥控器 步骤一:准备工作 在开始设置
    的头像 发表于 01-24 10:57 1.4w次阅读