DIY:使用Arduino和旋转编码器测量轮/测量仪的轮子

验船师的车轮也可以通过其他名称所知,如:点轮,Hodometer,Waywiser,滚轮,测量轮或围裙。所有这些设备都提供单一的目的,即测量距离。

测量师轮的起源来自里程表。里程表只计算车轮的旋转次数。由车轮行进的距离与车轮的半径成比例。

在数字测量师的轮子中,旋转编码器连接到车轮上。该旋转编码器精确地计算旋转次数。它还计算旋转角度,因此数字系统更精确,然后机械系统。

一个Arduino Nano.用作控制单元。它读取来自旋转编码器的脉冲,并计算LCD(液晶显示器)上的行驶距离和打印。

组件

成分 规格 数量
arduino. 纳米 1
旋转编码器 1
液晶 16x2 1
电池 9伏 1
电池架 1
电池架 1
转变 1
车轮 1
预设 10k. 1
跳线电线 3.

在职的

当旋转编码器旋转时,它将脉冲发送到Arduino。旋转编码器的输出引脚连接到Arduino的引脚D2和引脚D3。Arduino识别车轮的旋转和方向(顺时针或逆时针)。Arduino通过使用一些称为校准的基本数学操作来计算脉冲并将它们转换为距离。现在计算的距离显示在LCD上。

使用Arduino和Rotary编码器测量轮/测量仪的轮子

旋转编码器

在旋转编码器间隔开的导体放置在盘上并连接到公共销。编码器有两个输出引脚(OUT1和OUT2),当编码器旋转时,输出引脚给出零一个。零点和Out1中的图案有助于确定方向和旋转。

arduino.

Arduino是整个项目的大脑,衡量旋转。Arduino使用校准将旋转转换为距离,并显示LCD上的信息。

液晶

LCD(液晶显示器)是输出装置;它显示了厘米的测量距离。

在这个项目中,我们使用16×2 LCD(16列和2行)。LCD具有16个引脚,有些引脚是动力引脚,6个引脚连接到Arduino,两个引脚用于背光。预设还连接到LCD的3RD引脚,其用于LCD的对比度控制。

电路

在电路Arduino,LCD和旋转编码器是主要组件。旋转编码器有三个引脚。一个引脚连接到GND,两个引脚连接到Arduino的D2和D3销。LCD通过引脚D0至D5连接到Arduino。Arduino的VIN PIN通过开关由9伏电池供电。

使用Arduino和Rotary编码器测量轮/测量仪的轮子

在该项目中,使用Eagle CAD软件设计了PCB。如果您在PCB蚀刻中良好,您可以使用下面提供的图形到DIY。

使用Arduino和旋转编码器测量轮/测量仪轮
使用Arduino和旋转编码器测量轮/测量仪轮

您还可以使用下面的图像在面包板或零PCB上进行电路。

测量轮/测量仪轮PCB设计
测量轮/测量仪轮PCB设计

单击轮换,Hodometer,Waywiser,滚轮,围裙

制作这种设计的原型

您是否计划制作这个设计的原型板?如果是这样,您可以考虑服务PCBWAY.。我们已经尝试过他们的原型PCB多次打印。显然,有很多其他公司印刷PCB,但是让这些家伙不同的是低量要求。它们实际上没有规定的最低要求。如果您只想要那么多副本,您可以订购低至5件。我们刚刚建议我们发现一个服务。你可以自由选择你喜欢的那个。

使用Arduino和Rotary编码器测量轮/测量仪的轮子
测量轮/测量仪的轮子

视频

校准

在这个DIY项目中,旋转编码器测量旋转的数量,但我们必须将旋转转换为行驶距离。行驶距离取决于车轮的直径。

旋转编码器在一个完全旋转(360度)中移动22个步骤。每个旋转的步骤取决于可以从8到48更改的旋转编码器,但在我们的情况下它是22。

假设n是每个旋转的步骤,并且R是车轮的半径。

  • 一次旋转的行驶距离是=2xπxr
  • 在一步中的行驶距离是=2xπxr/ n

在我们的情况下

  • n = 22.
  • r = 7.

通过解决

  • 在一步中行驶距离是= 2r

代码

下载程序/代码

代码的开头“FinultCryStal.h”标题文件用于LCD显示。在它通过功能中声明LCD之后,“液晶LCD(5,6,7,8,9,10)”,其中销钉在括号中声明。

在第5行和6行中,两个整数由名称PIN1和PIN2声明,即Arduino的中断引脚。三个整数在第8,9和10行中声明,其中POS是旋转编码器的当前位置。其他两个整数是“状态”和“姓氏”。

现在,“常量浮动”由名称“PI”声明,该名称为“PI”,其等于3.14。两个恒定的整数由“R”声明为半径,即“n”是旋转编码器的每次旋转的步骤。现在,浮动按名称宣告“距离”,这是测量距离

在void设置部分中,通过输入声明PIN1和PIN2。

在第23行中,LCD在LCD中开始,在LCD上显示24“测量员轮”。

在第26行中,如果“PIN1”,则“持久”是数字读取值。在空隙循环部分中,整数状态等于“DigitalRead(PIN1)”。在第30行中使用“如果”循环,当“状态”和“持久”不等于时,它变为真实。在循环中也使用“if”,当“DigitalRead(PIN2)”不等于“状态”时,它变为真实。在这种环路中,“POS”增加和“POS”减少。

现在测量距离为2 * pi * r / n,这是圆圈(轮)的情况。其中PI为3.14,R是半径,n是旋转编码器的每次旋转的步骤。现在,在LCD上打印此距离,结束“持久状态变为”等于“状态”。

作者

7.注释

  1. 杰克霍顿

    您如何为4针光学旋转编码器修改此操作?

  2. 峡谷

    您好,您的项目非常好,我想用它来测量水位。请指定旋转设备的类型。谢谢乔治_cz

  3. 泰隆罗宾逊

    你好,

    我在这次讨论中很晚,但有没有办法衡量mm?

  4. Priya.

    我们可以在不使用句柄的情况下自动制作它吗?

  5. 大卫班莱

    是否有可能获取代码列表?

    通常,编码器中的轴承将失败是用于轮的轴。如果该项目具有长寿命,请为滚轮提供轴承,将轮轴连接到具有柔性联轴器的编码器轴。

    • 约翰

      嗨David ..代码已上传。