原文:https://circuitdigest.com/microcontroller-projects/arduino-lc-meter-measure-inductance

使用Arduino的LC电表:测量电感和频率

ARDUINO的

经过**萨达姆** 2018年9月5日

使用Arduino的LC表:测量电感和频率

所有嵌入式爱好者都熟悉万用表,它是测量电压,电流,电阻等的绝佳工具。万用表可以轻松地对其进行测量。但是有时我们需要测量电感和电容,而这是普通万用表无法实现的。有一些特殊的万用表可以测量电感和电容,但价格昂贵。我们已经使用Arduino构建了频率表,电容表和电阻表。因此,今天我们将使用Arduino制造电感****LC仪表。在这个项目中,我们将在16x2 LCD显示屏上显示电感和电容值以及频率。电路中有一个按钮,用于在电容和电感显示之间切换。

所需组件

  1. Arduino Uno
  2. 741运算放大器IC
  3. 3v电池
  4. 100欧姆电阻
  5. 电容器
  6. 电感器
  7. 1N4007二极管
  8. 10k电阻
  9. 10k pot
  10. 电源供应
  11. 按钮
  12. 面包板或PCB
  13. 连接线

计算频率和电感

在本项目中,我们将通过并联使用LC电路测量电感和电容。该电路就像一个环或铃,以一定的频率开始谐振。每当我们施加一个脉冲时,该LC电路就会开始谐振,并且该谐振频率采用模拟(正弦波)形式,因此我们需要将其转换为Squire波形。为此,我们将此模拟谐振频率应用于运算放大器(在本例中为741),它将在占空比为50%的情况下将其转换为单正弦波(频率)。现在,我们使用Arduino测量频率,并通过一些数学计算可以找到电感或电容。我们使用了给定的LC电路频率响应公式

f = 1 /(2 *time)

其中时间是*pulseIn()*函数的输出

现在我们有了LC电路的频率:

f = 1/2 * Pi *(LC)的平方根

我们可以解决它以获得电感:

f 2 = 1 /(4Pi 2 LC)
L = 1 /(4Pi 2 f 2 C)
L = 1 /(4 * Pi * Pi * f * f * C)

正如我们已经提到的,我们的波是正弦波,因此它在正振幅和负振幅中具有相同的时间段。这意味着比较器会将其转换为占空比为50%的方波。这样我们就可以使用Arduino的pulseIn()函数对其进行测量。此功能将为我们提供一个时间段,可以通过反转时间段轻松地将其转换为频率。由于pulseIn功能仅测量一个脉冲,因此现在要获得正确的频率,我们必须将其乘以2。现在我们可以使用上述公式将其转换为电感频率。

***注意:***在测量电感(L1)时,电容器(C1)的值应为0.1uF,而在测量电容(C1)时,电感器(L1)的值应为10mH。

电路图和说明

在此LC Meter电路图中,我们使用Arduino来控制项目操作。在此,我们使用了LC电路。该LC电路由一个电感器和一个电容器组成。为了将正弦谐振频率转换为数字或方波,我们使用了运算放大器741。在这里,我们需要对运放施加负电源以获得准确的输出频率。因此,我们使用了极性相反的3v电池,这意味着741的负极引脚连接到电池负极端子,而电池的正极引脚连接到其余电路的接地端。有关更多说明,请参见下面的电路图。

无论测量电感还是电容,这里都有一个按钮可以更改操作模式。16x2 LCD用于显示LC电路频率下的电感或电容。一个10k的电位器用于控制LCD的亮度。使用Arduino 5v电源为Circuit供电,我们可以使用USB或12v适配器通过5v为Arduino供电。

测量频率和电容

测量频率和电感

编程说明

LC Meter项目的编程部分非常容易。本文结尾给出了完整的Arduino代码。

首先,我们必须包括LCD的库,并声明一些引脚和宏。

#include<LiquidCrystal.h>
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);#define serial#define charge 3
#define freqIn 2
#define mode 10#define Delay 15double frequency, capacitance, inductance;typedef struct
{int flag: 1;
}Flag;Flag Bit;

之后,在设置功能中,我们**初始化了LCD和串行通讯,**以通过LCD和串行监视器显示测量值。

void setup()
{
#ifdef serialSerial.begin(9600);
#endiflcd.begin(16, 2);pinMode(freqIn, INPUT);pinMode(charge, OUTPUT);pinMode(mode, INPUT_PULLUP);lcd.print(" LC Meter Using ");lcd.setCursor(0, 1);lcd.print("     Arduino    ");delay(2000);lcd.clear();lcd.print("Circuit Digest");delay(2000);
}

然后在循环功能中,向LC电路施加一个固定时间周期的脉冲,该脉冲将为LC电路充电。去除脉冲后,LC电路开始谐振。然后,我们使用*pulseIn()*函数读取来自运算放大器的方波转换,然后乘以2进行转换。这里我们也对此进行了一些采样。这就是频率的计算方式

void loop()
{for(int i=0;i<Delay;i++){digitalWrite(charge, HIGH);delayMicroseconds(100);digitalWrite(charge, LOW);delayMicroseconds(50);double Pulse = pulseIn(freqIn, HIGH, 10000);if (Pulse > 0.1)frequency+= 1.E6 / (2 * Pulse);delay(20);}frequency/=Delay;
#ifdef serialSerial.print("frequency:");Serial.print( frequency );Serial.print(" Hz     ");
#endiflcd.setCursor(0, 0);lcd.print("freq:");lcd.print( frequency );lcd.print(" Hz      ");

获得频率值后,我们使用给定的代码将其转换为电感

capacitance = 0.1E-6;inductance = (1. / (capacitance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E6;
#ifdef serialSerial.print("Ind:");if(inductance>=1000){Serial.print( inductance/1000 );Serial.println(" mH");}else{Serial.print( inductance );Serial.println(" uH");}
#endiflcd.setCursor(0, 1);lcd.print("Ind:");if(inductance>=1000){lcd.print( inductance/1000 );lcd.print(" mH            ");}else{lcd.print( inductance );lcd.print(" uH              ");}}

通过使用给定的代码,我们计算出电容

if (Bit.flag){inductance = 1.E-3;capacitance = ((1. / (inductance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E9);if((int)capacitance < 0)capacitance=0;
#ifdef serialSerial.print("Capacitance:");Serial.print( capacitance,6);Serial.println(" uF   ");
#endiflcd.setCursor(0, 1);lcd.print("Cap: ");if(capacitance > 47){lcd.print( (capacitance/1000));lcd.print(" uF                 ");}else{lcd.print(capacitance);lcd.print(" nF                 ");}}

这就是我们使用Arduino计算频率,电容和电感并将其显示在16x2 LCD上的方式。

#include<LiquidCrystal.h>
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);#define serial#define charge 3
#define freqIn 2
#define mode 10#define Delay 15double frequency, capacitance, inductance;typedef struct
{int flag: 1;
}Flag;Flag Bit;void setup()
{
#ifdef serialSerial.begin(9600);
#endiflcd.begin(16, 2);pinMode(freqIn, INPUT);pinMode(charge, OUTPUT);pinMode(mode, INPUT_PULLUP);lcd.print(" LC Meter Using ");lcd.setCursor(0, 1);lcd.print("     Arduino    ");delay(2000);lcd.clear();lcd.print("Circuit Digest");delay(2000);
}void loop()
{for(int i=0;i<Delay;i++){digitalWrite(charge, HIGH);delayMicroseconds(100);digitalWrite(charge, LOW);delayMicroseconds(50);double Pulse = pulseIn(freqIn, HIGH, 10000);if (Pulse > 0.1)frequency+= 1.E6 / (2 * Pulse);delay(20);}frequency/=Delay;
#ifdef serialSerial.print("frequency:");Serial.print( frequency );Serial.print(" Hz     ");
#endiflcd.setCursor(0, 0);lcd.print("freq:");lcd.print( frequency );lcd.print(" Hz      ");if (Bit.flag){inductance = 1.E-3;capacitance = ((1. / (inductance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E9);if((int)capacitance < 0)capacitance=0;
#ifdef serialSerial.print("Capacitance:");Serial.print( capacitance,6);Serial.println(" uF   ");
#endiflcd.setCursor(0, 1);lcd.print("Cap: ");if(capacitance > 47){lcd.print( (capacitance/1000));lcd.print(" uF                 ");}else{lcd.print(capacitance);lcd.print(" nF                 ");}}else{capacitance = 0.1E-6;inductance = (1. / (capacitance * frequency * frequency * 4.*3.14159 * 3.14159)) * 1.E6;
#ifdef serialSerial.print("Ind:");if(inductance>=1000){Serial.print( inductance/1000 );Serial.println(" mH");}else{Serial.print( inductance );Serial.println(" uH");}
#endiflcd.setCursor(0, 1);lcd.print("Ind:");if(inductance>=1000){lcd.print( inductance/1000 );lcd.print(" mH            ");}else{lcd.print( inductance );lcd.print(" uH              ");}}if (digitalRead(mode) == LOW){Bit.flag = !Bit.flag;delay(1000);while (digitalRead(mode) == LOW);}delay(50);
}

使用Arduino的LC电表:测量电感和频率相关推荐

  1. 使用Arduino的LC测量仪:测量电感和频率

    所有嵌入式爱好者都熟悉万用表,它是测量电压.电流.电阻等的绝佳工具.万用表可以轻松测量它们.但有时我们需要测量电感和电容,这些是普通万用表无法测量的.有一些特殊的万用表可以测量电感和电容,但它们很昂贵 ...

  2. 【Arduino开源项目】LCR(电感/电容/电阻)电桥测试仪

    [Arduino开源项目]LCR(电感/电容/电阻)电桥测试仪 Github地址:https://hub.fastgit.org/Mikrocontroller-net/transistorteste ...

  3. 为什么使用RLC表测量电感在不同的频率测量值不同呢?

    ■ 问题的提出 为什么 使用RLC表测量电感在不同的频率下所测量得到的电感不同呢? . ▲ TH2821A RLC表以及测量电感|电感来自于一个继电器的线圈 选取了 一个继电器线圈 使用便携RLC表 ...

  4. 【 Arduino 和水流量传感器测量水流量和体积】

    Arduino 和水流量传感器测量水流量和体积 前言 所需元器件 YFS201水流量传感器 电路原理图 Arduino水流传感器代码 Arduino水流量传感器工作 完整代码 前言 通过使用带有 Ar ...

  5. 使用Arduino进行磁场强度测量

    原文地址:https://circuitdigest.com/microcontroller-projects/arduino-magnetic-field-measurement 使用Arduino ...

  6. 电感器的正确测量电感同BuH的关系

    电感器的正确测量 电感器是由电线环绕一个磁芯所组成,其特性视使用的磁芯材料而定.要制作电感器,空气可说是最简单的磁芯材料,但由于电感量与所用磁芯的磁导率成正比,空气磁导率极小,由于体积效率的关系,不利 ...

  7. 使用红外传感器和Arduino制作数字转速表测量RPM

    在本篇文章中,我们使用红外传感器(IR Sensor)和Arduino开发板设计了一款数字转速表,用于测量旋转电机的转数RPM.只需将红外传感器模块与Arduino和1602 LCD显示模块连接即可. ...

  8. arduino DIY 电子创意作品——测量水的可饮用教程

    这是一个arduino电子创意作品测量水的可饮用教程,含代码. 总溶解固体(TDS)测量水的可饮用性是一种方法.人类和水生生物都需要适当水平的水分来生存.TDS值>1000ppm表示溶解固体过量 ...

  9. 试说明在下列情况,用万用电表测量图P3.13的12端得到的电压各为多少

    TTL门电路,万用表测量输入端的电压 与非门内部电路图 根据数电书阎石那本,116页的内容,可以等效为下边的图 B 1 B_1 B1​处的电压最少为1.4V才导通 当A输入是悬空或者高电平或者接了个很 ...

最新文章

  1. 第二课 , 启动 ./start-all.sh
  2. 自定义Title(可以实现类似于携程网上价格的显示方式)
  3. 09--MySQL自学教程:多表查询之内连接、外连接以及【子查询】
  4. mssql 计划怎每隔n秒_前端:调你一个接口6秒还配资深工程师?后端:有24部分需要处理!...
  5. 从网络、编码、内容感知、存储、分发看视频云端到端技术实践
  6. 物理知识(量子物理)
  7. Ubuntu系统中docker本地镜像的位置
  8. python的输入输出语句_Python基本输出语句/输入语句/变量解析
  9. 标签概述及GoodMES云标签的创新应用
  10. 分享个大厂PRD模板
  11. Windows2000 安装VMware Tools所需KB835732 补丁包
  12. office图标修复工具_超好用的流程图绘图工具你还没get吗?
  13. 接口(interface、implement)
  14. go kegg_GO分析和KEGG分析都是啥?
  15. PBRT学习笔记:在单位圆内部均匀采样
  16. 宝贝不哭,妈妈打它--转贴
  17. 如何去掉a标签的下划线 各种样式详解
  18. STM32跳入HardFault Handler中断分析
  19. 中国残疾人福利基金会开展麻风救助行动
  20. 【C语言】案例十一:分支结构(任意三个数的升序排列)

热门文章

  1. php a 标签后 刷新,a链接刷新页面与js刷新页面用法
  2. 车牌怎么识别?说两种识别途径
  3. 不要重复造轮子 Stop Trying to Reinvent the Wheel
  4. ptgui创建全景图设置_使用Microsoft图像合成编辑器创建高级全景图
  5. 台北淡水 渔人码头之行
  6. 哈工大计算机学院博士补助,哈尔滨工业大学关于博士生学制和第五年级博士生助研津贴管理工作的规定...
  7. CCF-CSP-202112-1/2:序列查询(新解)
  8. 论文复现:模拟风电不确定性——拉丁超立方抽样生成及缩减场景(Matlab全代码)
  9. 双重预防机制数字化系统赋能施工企业安全隐患闭环管理,安全风险分级管控
  10. es文件浏览器有linux版么,【ES 文件浏览器】ES 文件浏览器TV版_ES 文件浏览器TV版官网_-沙发管家TV版应用市场...