14713| 0
|
[动态] 基于MicroPython的距离测量仪 |
本帖最后由 Jason97 于 2022-9-9 06:33 编辑 Measure with Encoder (MicroPython) 现在打开百度地图,输入起点和终点,两地之间的距离马上显示在手机屏幕上。相比以往的地图,现在的电子地图,地理信息量更大。距离计算的更加精确。可这么大的面积,是怎么测量出来的呢?卫星、卷尺还是其他的。卫星能勘探地形、地面资源。但所测距离的精确度不高;卷尺灵活性不够,所测的距离不够长。排除以上两种还有其他测距工具吗?前段时间在马路上看见有人手持一个滚轮沿着马路边滚动,觉得很是新奇,上前询问,原来他是地图工作者,现在正在绘制路线,并测量两地之间的距离。原来他所用的就是用测距轮。这种测距工具,方便携带,灵活性高,测量精准度高。其实听起来高大上的仪器也只用到一个小小的旋转编码。 本文就介绍了如何利用Beetle ESP32-C3设计一款建议的距离测量仪。 首先,旋转编码器是一种特殊类型的开关,它将开关的运动(顺时针或逆时针)转换为输出信号,可用于确定旋钮旋转的方向。与仅能旋转约3/4 圈的电位器相比,旋转编码器能够连续旋转 ! 旋转编码器最适合使用位置变化而不是精确位置的情况。应用广泛,例如手动音量控制或汽车音响调节等。 本文中使用机械电刷式增量旋转编码器。它有三个引脚:A、C 和 B。C 是 A 和 B 的公共地。A 和 B 是信号引脚。当您旋转旋钮时,A 和 B 会与公共接地引脚接触,具体顺序取决于您旋转旋钮的方向。当每个引脚与公共地接触时,它们会产生一个信号。当一个引脚在另一个引脚之前连接时,这些信号彼此异相(正交编码)。我们需要检测这些引脚及其脉冲方式,从而确定方向和步数。 顺时针旋转时,首先连接 A 引脚,然后连接 B 引脚。逆时针旋转时,B 引脚先连接,然后 A 引脚连接。通过跟踪每个引脚何时连接和断开接地,我们可以使用信号变化来确定旋钮旋转的方向。它们更改的顺序取决于旋钮的旋转方向。从而我们将旋转编码器跟踪信号变化作为增量输入。(编码器详细介绍可以参见下面这篇文档) 硬件
如果是在C语言中,可以用Arduino编写代码来手动跟踪这些信号变化,并确定旋转方向和增量变化。对于本文,我们可以通过MicroPython较简便地编写程序[1]。
点击下载烧录工具 运行【flash_download_tool_3.9.3.exe】,选择【ESP32-C3】主控,然后将Beetle ESP32-C3的引脚9连接GND,然后通过USB线连接电脑。 选择下载的固件,擦除flash后烧录固件
进入软件,对解释器进行设置【Run->Configure interpreter...】 点击下载thonny至此环境搭建完毕。 代码 首先我们导入我们需要的库machine和machine。这些都内置在MicroPython 中,不需要任何外部库文件。 接下来,我们创建要在我们的代码中驱动编码器。首先要定义已引脚并将其初始化。我使用的是引脚0、引脚1和 引脚4。
然后设置旋转标志位right_assist来识别旋转编码器何时移动,以及计旋转数变量count。 以及设置识别引脚电平状态下降沿的中断函数,其中4号引脚的下降沿作为旋转方向的判断标准,将旋转标志位right_assist置1,0号引脚的下降沿用来将计数count清零:
最后进入循环中,不停判断旋转标志位right_assist的值,并将计数count的值输出到终端里。
实物演示 参考
|
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed