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

    浏览量

    14221
  • Arduino
    +关注

    关注

    190

    文章

    6499

    浏览量

    192662
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    吉时利KEITHLEY DMM7510数字万用表吉时利DMM7510七位半万用表

    DMM7510 集高精度、高分辨率数字万用表 (DMM)、图形触摸屏显示器和高速、高分辨率数字化器于一身,是第一款图形采样万用表。其具有 pA 灵敏度和 1M 个样点/秒的采样率,准确测量超低睡眠模式
    发表于 07-24 11:01

    便携式经济型万用表常见疑问汇总

    智能触屏万用表虽然配备了智能触屏,但同样注重便携性。它的外壳采用高强度、轻量化的材料制作,整体尺寸经过精心设计,在保证功能齐全的同时,尽可能减小体积。重量也控制在合理范围内,方便用户随时随地进行测量工作
    发表于 06-12 16:37

    突破工业接口壁垒!ARK(方舟微)DMZ42C10S让PLC\\\"万能适配\\\"成为现实!

    突破工业接口壁垒!ARK(方舟微)DMZ42C10S让PLC\"万能适配\"成为现实!
    发表于 03-27 15:20

    万能七彩充开关电源电器的制作

    手机万能七彩充电器的制作过程JC820型手机万能充电器套件制成后,适合充容量为250~3000mA锂离子、镍氢电池;充电时,七彩灯闪烁,指示灯的颜色依次变化,发出绚丽多彩的七彩光芒,饱和后熄灭
    发表于 03-26 14:17

    效率大升!AI赋鸿蒙万能卡片开发

    万能卡片,作为鸿蒙生态应用和元服务的重要展示形式,凭借将关键信息和核心操作前置,实现服务直达、减少跳转层级的体验效果,备受用户和开发者青睐。但传统卡片的设计和编码流程相对繁琐,影响了万能卡片的搭建
    的头像 发表于 01-13 13:44 ?860次阅读
    效率大升!AI赋<b class='flag-5'>能</b>鸿蒙<b class='flag-5'>万能</b>卡片开发

    华星MT315A05-1-XC-7黑屏维修案例

    模块,逻辑板如下图;图3 用万能板点亮屏幕,刚开始时图像和亮度都正常。接着屏幕亮度时亮时暗,约一分钟后变黑屏,没有图像,用万能表测量逻辑板上的VGH电压,亮度正常时为26.8V,接着电压随亮度的变化
    发表于 10-06 14:19

    万用表怎么测功放输出电压

    万用表是一种多功能的测量工具,可以测量电压、电流、电阻等多种电气参数。在测量功放输出电压时,我们需要了解一些基本的电气知识和万用表的使用方法。 1. 万用表的基本知识 万用表,又称为多
    的头像 发表于 09-29 17:00 ?5452次阅读

    万能断路器欠压线圈的工作原理是什么

    万能断路器欠压线圈的工作原理主要基于电磁感应和磁性材料的特性。以下是对其工作原理的解释: 一、基本组成 万能断路器中的欠压线圈,也称为欠电压线圈,是电磁式继电器中的一种常见类型。它主要由一个绕制在
    的头像 发表于 09-19 10:30 ?3013次阅读

    万能转换开关的基本结构、工作原理及性能特点

    万能转换开关是一种广泛应用于工业自动化、电力系统、电气设备等领域的电气开关设备。它具有结构简单、操作方便、性能稳定等特点,能够实现对电路的快速切换和控制。 一、万能转换开关的基本结构 外壳 万能
    的头像 发表于 08-20 10:20 ?7259次阅读

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

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

    万能转换开关的定位结构一般采用哪些

    万能转换开关是一种广泛应用于工业自动化、电力系统、通讯设备等领域的电气开关设备。其主要功能是实现对电路的通断控制、信号转换、状态指示等。在万能转换开关的设计和制造过程中,定位结构的设计至关重要,它
    的头像 发表于 08-20 10:12 ?6704次阅读

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

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

    万能转换开关的基本概念、工作原理及结构特点

    万能转换开关是一种广泛应用于工业自动化控制领域的电气设备,它具有多种功能和优点,可以满足不同场合的控制需求。 一、万能转换开关的基本概念 1.1 定义 万能转换开关是一种具有多种控制功能的电气设备
    的头像 发表于 08-20 10:09 ?6865次阅读

    万能式断路器怎么手动合闸

    万能式断路器是一种广泛应用于电力系统中的保护和控制设备。它具有多种功能,包括过载保护、短路保护和远程控制等。手动合闸是断路器操作的一种方式,通常在自动控制失效或需要手动干预的情况下使用。 1.
    的头像 发表于 08-14 15:52 ?4009次阅读

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

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