美文网首页
PlotClock “小贱钟”彻底研究——角度计算

PlotClock “小贱钟”彻底研究——角度计算

作者: coolwind | 来源:发表于2021-11-03 12:24 被阅读0次

    背景

    硬件开源项目PlotClock,是一个很有趣的项目,通过控制两个舵机进行书写当前的时间。书写完成之后自行擦除,然后再书写,如此循环往复。


    image.png

    项目在github上有相关的资料下载,包含代码和3D打印件的图纸,需要使用arduino作为控制器件。

    阅读了源码,并在网上查阅了相关的教程文章,感觉把这个项目说的很透彻。如果要自己修改设计,又不想等比例放大原设计的情况下,各个部件的尺寸应该是多少?舵机的间距如何决定?可书写的范围如何确定?这些问题都没有答案。因此决定,彻底的对PlotClock的原理进行分析,从而回答以上的问题。

    分析

    小贱中工作时,通过转动舵机改变摆臂的角度,从而达到控制画笔位置的目的。那么,首先要解决的问题是根据目标位置,反向计算出舵机摆动的角度。解决了这个问题之后,我们可以根据要书写的内容,确定画笔的坐标,然后得到舵机的角度。通过控制舵机搬动到指定的角度,从而控制画笔进行书写。

    有了以上的分析我们就可以将问题简化为,根据画笔坐标点T(Xt,Yt),计算出两个舵机需要搬动的角度。

    几何计算

    为了方便后续的描述,首先为各摆臂部件命名,并为相关的数据进行命名。

    直接连接舵机的摆臂,称为一级摆臂。连接左右舵机的一级摆臂长度相同,长度为L1。

    连接在一级摆臂上的摆臂,称为二级摆臂。左右二级摆臂形状不同。左二级摆臂,由两部分组成,主摆臂以及延长的持笔夹。左二级摆臂的主摆臂与右二级摆臂长度相同,长度而L2。左二级摆臂延长的持笔夹长度为L3。


    image.png

    左二级摆臂的主摆臂与延长持笔夹的夹角,角度为135度。


    image.png

    定义好以上名称之后,我们就可以开始进行计算了。

    我们以左侧舵机转轴为原点,构建直角坐标系。目标就是根据持笔夹的持笔位置坐标,计算出左右一级摆臂的角度。

    假设笔的位置位于点T(Xt,Yt),连接点T与原点O,得到辅助线段TO。TO与X轴的夹角为α1,TO与左一级摆臂的夹角为α2,左一级摆臂与X轴的夹角为α。如下图:

    image.png

    这个α就是我们需要知道的角度。

    在开始计算之前,先说明一下需要使用到的个公式,

    公式1:勾股定理,在直角三角形中:

    image.png

    公式2,任意三角形边长关系

    image.png

    公式3,任意三角形中一直边长求角度的公式,有公式2推导,如果需要知道角A的角度可使用:

    image.png

    有了以上的准备我们就可以开始进行相关的计算了

    可计算α1的值


    image.png

    可计算α2的值


    image.png

    其中TO可计算


    image.png
    最终求出角α的值
    image.png

    到这里我们得到了左侧舵机的角度α

    下边我们开始计算右侧舵机的角度。在计算之前我们需要先求出,左二级摆臂的主摆臂末端K与原点的距离KO。如下图所示:连接KO,连接T与左一级摆臂末端。由于T与一级摆臂末端的距离是固定不变的,在实际项目中可以通过测量得到。所以直接使用这个长度L4。

    image.png

    为了求KO的距离我们,在一直L2、L1的情况下我们需要知道角β。通过分析,角β=β1-β2

    可求β1为


    image.png

    可求β2为


    image.png

    获得β即可计算KO的值


    image.png

    获得KO的值之后,我们可以连接K点和右舵机的轴点C,KC作为辅助线。

    image.png

    已知L1、L2以及KO的情况下,可以计算角γ1。


    image.png

    通过α和γ1可以计算角γ
    γ = 180 - α - γ1

    通过KO、OC的值以及角γ可以计算KC的长度

    image.png

    通过KC、OC和KO可以获得θ1的角度

    image.png

    通过KC、L1以及L2可以计算θ2的角度

    image.png

    最终获得θ的角度

    θ = 180 - θ1 - θ2

    有了α和θ就可以确定舵机需要转动的角度。

    最后梳理一下

    摆臂相关的4个长度L1、L2、L3、L4,其中L1、L2、L3通过摆臂的规格参数可以获得。L4则需要通过测量获得。

    两个舵机转动轴之间的距离OC,也需要通过测量获得。

    由此,所有计算中所有需要使用到的输入参数都可以获得。

    如果细心,可以发现左二级摆臂与持笔夹之间的夹角,并没有直接参与到计算过程中。实际上这个夹角会影响到L4的长度。

    那么在实际制作的时候,L1、L2、L3、L4以及OC的数值取多少合适,他们的取值有什么约束以及影响呢?为什么PlotClock写的字都是歪歪扭扭的?这些问题,我们将在下一篇文章中进行讨论。

    相关文章

      网友评论

          本文标题:PlotClock “小贱钟”彻底研究——角度计算

          本文链接:https://www.haomeiwen.com/subject/ocazaltx.html