• adult道具项目开发


    这个道具需要有几个模式,现在处于demo阶段,暂时想到4个模式:全深度抽插,半深度抽插,九浅一深,三长两短,

    模式要如何实现呢。手机APP通过蓝牙来设置控制器的模式,控制器会解析这个模式的具体含义,将其翻译成步进电机的运动模式。

    在我们这个道具中,步进电机上套有丝杆,单程全深度是8cm,步进电机转1圈丝杠前进8mm,完成整个单程需要10圈。

    步进电机驱动器的细分数设置成2,所选的步进电机每收到1个脉冲转1.8度,360度需要200个脉冲,加上细分数为2,步进电机需要400个脉冲才能转1圈。

    所以完成一个单程需要4000个脉冲。如果我们规定0.8s完成一个单程,那就是4000/0.8 = 5KHZ/S,平均频率是5KHZ。

    步进电机的平均速度是10r/0.8s = 10*60r/0.8m= 750rpm,也就是750圈每分钟。

    但是步进电机不可能在一上电就从平均速度开始转,而是从0开始加速到最高速度v,然后再需要转向或者停止时,从v减速到0。实际当中,步进电机不是从0起步,而是从启动速度开始起步,此处我们设置起步频率为1KHZ,步进电机起步速度为150rpm。

    模式一  -  全深度

    在此模式下,

    1. 丝杠先前进8cm,
    2. 丝杠再后退8cm,
    3. 循环做3次。

    对应的步进电机,先正转10圈,再反转10圈,循环做3次。

    我们设定丝杠前进8cm需要0.8s,也就是步进电机转10圈需要0.8s。那么在此模式下,完成一次抽插的动作是需要1.6s。

    在上面,我们已经知道步进电机转10圈需要4000个脉冲,如果是0.8s完成,则平均频率是5KHZ,最低频率也就是启动频率是1KHZ,那么最高频率呢。

    最高频率和加减速时间有关系。对步进电机采用梯形加速算法,相对S型简单一些。如下图所示。

    因为加减速的时间是相等的,把0.8s分成0.3+0.2+0.3,也就是各自0.3的加速和减速时间,最高速度匀速运动的0.2s时间。

    所以从梯形的特点我们可以得出,(F-1)K*(0.3+0.2) = 4K, F = 9。也就是最高频率是9KHZ。这就完了?后面会告诉此处计算公式是有误的。

    我们先按照这个计算结果继续进行,现在最低频率是1KHZ, 最高频率是9KHZ。

    要在0.3s的时间之内控制器输出频率是从1KHZ加速到9KHZ,对应步进电机的转速是从1KHZ/400 = 2.5RPS= 150RPM, 到9KHZ/400 = 22.5RPS = 1350RPM。

    因为对于步进电机而言,速度和频率成倍数关系,V=AF。所以我们讨论速度的加减速,其实就是频率的加减速。控制器需要按照以下的计算结果控制脉冲的输出。

    在加速过程中,一般的原则是低速可以加速时间短一点,高速需要加速时间长一点,高速的速度间隔尽量小。此处我们设置加速频率间隔为1KHZ,从1K加速到9K需要0.3s的时间

    1KHZ  -  0.03s;

    2KHZ  -  0.03s;

    3KHZ  -  0.03s;

    4KHZ  -  0.03s;

    5KHZ  -  0.04s;

    6KHZ  -  0.04s;

    7KHZ  -  0.05s;

    8KHZ  -  0.05s;

    9KHZ  -  0.2s。

    从1K到8K的加起来的时间是0.3s,也就是0.3s后频率就是9KHZ。

    然后再分别计算每个时间间隔内,在对应频率下,需要的脉冲个数:

    1KHZ  -  30;

    2KHZ  -  60;

    3KHZ  -  90;

    4KHZ  -  120;

    5KHZ  -  200;

    6KHZ  -  240;

    7KHZ  -  350;

    8KHZ  -  400;

    9KHZ  -  1800。

    那么0.8s内工作输出的脉冲个数是多少呢?(30+60+90+120+200+240+350+400)*2 + 1800 = 4780,乘以2是因为还有加速和减速时间是对等的。

    奇怪为什么总共输出了4780个脉冲,我们只需要400个脉冲哎!!!问题在哪里。

    仔细看上图,原来1KHZ下面还有空间咯,也就是说上面的公式(F-1)K*(0.3+0.2) = 4K,其实漏掉了这部分空间,(F-1)K*(0.3+0.2)  + (1K * 0.6) + (F * 0.2) = 4K。

    这样算下来最高频率就不是9K了。

    那么我们按照最高频率是9KHZ算呢,总共的脉冲个数4780,丝杠实际上前进了4780/400 * 8mm = 95.6mm = 9.56cm。

    我们重新修正公式(F-1)K*(0.3+0.2) + 1K * 0.8= 4K. 计算得到F = 7.4KHZ = 7400HZ。

    加速曲线修正如下:

    1K  -  30  -  0.03S

    2K  -  80  -  0.04S

    3K  -  90  -  0.03S

    4K  -  160  -  0.04S

    5K  -  250  -  0.05S

    6K  -  300  -  0.05S

    7K  -  350  -  0.05S

    7.4K  -  1480  -  0.2S

     总脉冲数 = (30+80+90+160+250+300+350)*2 + 1480 = 4000。

    总时间 = 0.78s,这是单程的时间,往返的时间是0.78*2 = 1.56s。

    模式二  -  半深度,

    在此模式下,

    1. 丝杠先前进4cm,
    2. 丝杠再后退4cm,
    3. 循环做3次。

    对应的步进电机,先正转5圈,再反转5圈,循环做3次。

    在加速过程中,一般的原则是低速可以加速时间短一点,高速需要加速时间长一点,高速的速度间隔尽量小。

    我们设定丝杠前进4cm需要0.6s,也就是步进电机转5圈需要0.6s。那么最低频率也就是启动频率是1KHZ,那么最高频率呢。

    我们设定加速为0.2s,匀速为0.2s,减速为0.2s。

    还是按照上面的公式:(F-1)K*(0.2+0.2) + 0.6 * 1K = 2K,得出F=4.5K。

    1K  -  50  -  0.05s;

    2K  -  100  -  0.05s;

    3K  -  150  -  0.05s;

    4K  -  200  -  0.05s;

    4.5K  -  900  -  0.2s;

    在0.6秒内总的脉冲个数是(500)*2+900 = 1900。丝杠实际前进了1900/400*8mm = 38mm = 3.8cm。

    模式三  -  九浅一深

    模式三可以由模式一和二组合起来生成,

    1. 丝杠先前进4cm,
    2. 丝杠再后退4cm,
    3. 循环做9次;
    4. 丝杠先前进8cm,
    5. 丝杠再后退8cm,
    6. 循环做1次。
    7. 将1-6的动作循环3次。

    模式四  -  三长两短

    模式三可以由模式一和二组合起来生成,

    1. 丝杠先前进8cm,
    2. 丝杠再后退8cm,
    3. 循环做3次;
    4. 丝杠先前进4cm,
    5. 丝杠再后退4cm,
    6. 循环做2次。
    7. 将1-6的动作循环3次。

    以上所有模式里面都重复3次的意思是,该模式下的动作至少重复3遍。

  • 相关阅读:
    gulp之压缩合并MD5清空替换加前缀以及自动编译自动刷新浏览器大全
    HTML5之文件API
    Angular2之路由学习笔记
    nodejs之主机不能访问到虚拟机的web服务器
    学习CSS3动画(animation)
    jQuery之ajax错误调试分析
    Angular2之管道学习笔记
    css3之3D魔方动画(小白版)
    关于二维网格导入autodyn的问题
    两个橡胶球自由落体撞击弹性板
  • 原文地址:https://www.cnblogs.com/ironx/p/4841609.html
Copyright © 2020-2023  润新知