×

具有三个步进器的反向运行模拟时钟

消耗积分:0 | 格式:zip | 大小:0.79 MB | 2022-11-02

分享资料个

描述

我想制作一个逆时针运行的模拟时钟。一个很好的教训是不要假设正常是非常正常的。除了惯例之外,真的没有其他理由让时钟绕着它绕着圆圈转动方向。

由于我实现的经典 DIY 定位伺服系统具有 180 度的工作范围,因此我决定使用步进电机。

一个圆也只是按照惯例分成 360 度。但是,360这个数字还是很方便的,因为数字的数量可以整除360。小时、分钟和秒的数量可以整除360。因此每小时代表30度的旋转行程,每分钟是6度旅行和同样的几秒钟。

这段代码在计算绝对“MoveTo”位置时会考虑到这些信息。

但是,有一个我无法解决的错误。该代码使用 AccelStepper 库,并且有一个不正确的举动,我无法在代码/逻辑中找到错误。由于问题每 60 秒出现一次,因此在秒针上更为明显。问题在小时和分钟上是相同的,但更容易容忍,因为在时针上每天发生两次,在分针上每小时只发生一次。

重现问题的具体步骤:

秒针从秒值 58 到 59 以逆时针方向正确移动 6 度。从 59 移动到 0 也是如此。分针在秒针从 59 到 0 的过渡时移动 6 度。但是,在下一次秒针移动时(从 0-1),秒针伺服器沿顺时针方向进行长距离移动。

电机最终赶上来,因为它的运行速度超过每秒 6 度。其他电机的代码也存在同样的问题。我尝试了负速度命令和其他东西但没有成功。

由于累积误差,我更喜欢不使用增量移动,并且需要编写代码将电机置于 Arduino 时钟时间的实际秒值之前,以便在时钟时间“通过”当前电机位置或类似位置时同步。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !