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

时间: 2024-12-31 03:44:07

adult道具项目开发 - 模式的相关文章

项目之开发模式

项目开发模式: 1.瀑布式: 设计好你能想到的最好的算法,然后開始实现 比如:做一辆摩托车,開始的时候就整合想着摩托车怎么做 弊病:开发周期太长,没有想好最优的算法不開始运行代码 2.迭代式: 迭代这两个字我见的也少,字面没法理解,举例吧,做摩托车,先做出一辆自行车,然后开发时间到了,能够先交出一个半成品,然后在自行车上加入发动机

讲讲项目开发生命周期

项目开发生命周期: 一:软件项目开发模式 螺旋开发模式: 螺旋开发模式 适合,项目前期 需求不确定的情况下: 对于每一个模块,一个个开发,进行分析,设计,编码,测试,上线. 好处; keyi可以 有效的 降低 软件风险,我尽量 做出来的产品尽量满足客户需求: 瀑布模式: 瀑布 模式:就是先进行 所有模块的 项目需求分析,当分析结束后,才进入项目的下一个阶段,即 设计,编码,测试,上线. 好处:更容易 进行 项目把控,和项目质量控制! 对项目质量非常高的 设计到军方的 都是瀑布 都是 这样的开发

Java EE 项目开发采用的模式

一.Java EE 传统开发采用的模式:Model1 模式 最原始的 Web 程序是基于 Java Servlet 编写的,后来 JSP 技术的出现,使得把 Web 程序中的 html/xhtml 文档与 Java 业务逻辑代码有效地分离成为可能.通常, JSP 负责动态生成 Web 网页,而业务逻辑则由其他可重用的组件(如 JavaBean)来实现.JSP 可通过 Java 程序片段来访问这些组件,于是就有了 JSP+JavaBean 这样一种通行的程序结构. 在这种模式下,JSP 集控制和显

【开发模式】项目过早优化现象:处女座专属鸡汤

最近在Coursera上看机器学习,顺便梳理了下算法体系. 其中Andrew Ng就有提到一个"过早优化"的观点非常喜欢:         与其将大把时间花费在挑选学习算法.更换模型上,然后花费6.7个月收集数据,(潜台词:这是愚蠢的做法,bad idea) 不如         凭直觉先随意挑个算法.用少量数据在1,2天内进行实现,然后通过学习曲线.误差分析来调整这个学习算法,并判断特征是否足够区分,是否需要加入新的特征变量,直到有证据表明目前特征适合且只欠缺样本量/数据后再开始收集

MVC模式学习--雇员管理系统项目开发

1, 项目开发,使用原型开发, ① 开发流程: 需求分析->设计阶段->编码阶段->测试阶段->发布阶段/维护阶段 需求阶段:PM/项目经理 对客户 设计阶段:技术人员(架构师,组长,程序员)->设计数据库 开发阶段:组长,程序员 测试阶段:测试人员 发布阶段:实施工程师 维护阶段:开发人员 ② 对应于php研发流程: 需求阶段:PM与项目经理定好需求,美工UI(ps画图)->网页前端人员UE(div+css),PM和项目经理根据静态页面与客户探讨不断修改: 设计阶段:

基于ASP.NET WPF技术及MVP模式实战太平人寿客户管理项目开发(Repository模式)

亲爱的网友,我这里有套课程想和大家分享,如果对这个课程有兴趣的,可以加我的QQ2059055336和我联系. 课程背景 本课程是教授使用WPF.ADO.NET.MVVM技术来实现太平人寿保险有限公司保险客户管理系统,是学习WPF开发中的一门主打课程之一. WPF是一个框架,它供程序员开发出媲美Mac程序的酷炫界面. Blend是一种工具,可以在美工板上绘制形状.路径和控件,然后修改其外观和行为,从而直观地设计应用程序 Repository\MVVM\MVP设计模式是WPF常用的系统架构 Auto

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

项目中生产模式和开发模式的切换

1 #ifndef NetMacro_h 2 #define NetMacro_h 3 4 5 #define TEST_ENVIRONMENT // 当前为开发模式,若注释到这行代码即为生产模式 6 7 #ifndef TEST_ENVIRONMENT 8 // 这里写开发模式下需要用到的URL 9 // 如: 10 #define HTTP_PORTAL @"10.0.0.26:8080" 11 12 13 #else 14 // 这里写生产模式下需要用到的URL 15 // 如:

第八章 企业项目开发--分布式缓存memcached

注意:本节代码基于<第七章 企业项目开发--本地缓存guava cache> 1.本地缓存的问题 本地缓存速度一开始高于分布式缓存,但是随着其缓存数量的增加,所占内存越来越大,系统运行内存越来越小,最后系统会被拖慢(这一点与第二点联系起来) 本地缓存存于本机,其缓存数量与大小受本机内存大小限制 本地缓存存于本机,其他机器的访问不到这样的缓存 解决方案:分布式缓存 Jboss cache:缓存还存于本机,但是会同步更新到其他机器(解决了第三个问题,解决不了第一和第二个问题),如果缓存机器数量很多