你的位置:首页 > 操作系统

[操作系统]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。

那么我们就要求丝杠做成9.56厘米好了,刚好多出来的部分留作余量。

 

模式二  -  半深度,

在此模式下,

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

 

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

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

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

从1K加速到6K的时间我们设定为0.2s,也就是0.2s后面频率就是6KHZ了。

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

1KHZ  -  0.04s;

2KHZ  -  0.04s;

3KHZ  -  0.04s;

4KHZ  -  0.04s;

5KHZ  -  0.04s;

6KHZ  -  0.2s;

 

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

1KHZ  -  40;

2KHZ  -  80;

3KHZ  -  120;

4KHZ  -  160;

5KHZ  -  200;

6KHZ  -  1000;

在0.6秒内总的脉冲个数是(40+80+120+160+200)*2+1000 = 2200。丝杠实际前进了2200/400*8mm = 44mm = 4.4cm。

 

模式三  -  九浅一深

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

  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遍。