这个道具需要有几个模式,现在处于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遍。

转载于:https://www.cnblogs.com/ironx/p/4841609.html

adult道具项目开发 - 模式相关推荐

  1. 项目开发流程_绿维文旅:旅游项目开发模式与流程

    一.旅游项目开发模式 旅游综合开发是立足旅游项目自有资源基础,以旅游产业为主导,以市场为导向,以资本为驱动,以资源整合为核心,通过集中土地.资本.技术.交通.劳动力等生产要素,推进土地开发.交通建设. ...

  2. 软考高级信息系统项目管理师系列论文之三:论项目开发模式的选择与应用

    软考高级信息系统项目管理师系列论文之三:论项目开发模式的选择与应用 一.摘要 二.正文 三.总结 一.摘要 2007 年7 月,我们作为项目负责人参与了<流媒体内容服务平台>项目开发:该项 ...

  3. 常见软件项目开发模式思考

    一.软件项目 在2000左右 程序员还是一种比较罕见的工作,那是的个人台式机还是当时富裕家庭的高级娱乐用品,一开始网络程序员部分前后端,PHP.JSP.ASP这些技术形成了最早的网络程序.BS 系统 ...

  4. 周报(关于项目开发模式的一点总结)

    项目完全进入测试阶段.总结一下该项目的开发模式–敏捷开发 什么是敏捷开发? 敏捷开发以用户的需求进化为核心,采用迭代,循序渐进的方式进行软件开发.把一个大项目分为多个相互联系,但也可独立运行的小项目, ...

  5. 软件项目开发模式_小晓_同学__新浪博客

    螺旋开发模式:部分模块开发还可以再继续开发别的模块,适合于项目前期需求不确定的情况 对于每一个模块一个个开发:分析.设计.编码.测试.上线: 好处:有效的降低软件项目风险,(做出的产品要尽量满足客户需 ...

  6. quarkus 入门教程(二) -项目开发模式热更新及项目断点调试方法

    quarkus 入门教程(二) -项目断点调试方法 1.项目热更新 quarkus:dev runs 方式启动,项目会以开发者模式启动,当修改了java文件或者resource文件后,项目会在后台编译 ...

  7. 大前端快闪二:react开发模式 一键启动多个服务

    最近全权负责了一个前后端分离的web项目,前端使用create-react-app[1], 后端使用golang做的api服务. npx create-react-app my-app cd my-a ...

  8. 【经验】Qt项目开发必备工具

    在实际的项目中,除了需要掌握Qt开发框架本身,还需要掌握一些开发工具.这些工具能起到事半功倍的效果,甚至某些工具是开发不可或缺的.下面笔者就介绍一些常用的开发工具的用法及下载地址,希望对缺少实际项目经 ...

  9. [Ext JS 7]的开发模式

    文章目录 开发模式的分类及演进 开发模式一: 将Ext JS作为库使用 JS源码编译结果 样式文件编译结果 导入JS和CSS文件后使用Ext JS组件 使用Ext.application创建Ext J ...

最新文章

  1. Python3--baby网的数据爬取
  2. mysql event type_MySQL 【Row】下的 Event_type
  3. javascript做极简时钟特效,再简单没思路你也做不出来
  4. SphereEx 完成近千万美元 Pre-A 轮融资,连接企业数据与应用,构建新一代数据库生态引擎
  5. 织梦php网站修改教程,织梦DEDEcms织梦软件模型增加图集功能教程(含修改文件下载)...
  6. 容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额
  7. 一次执行truncate触发ORA-02266解决过程
  8. linux 网络内核 ko文件,编译内核模块 .ko文件缺少:mmzone.h bounds.h
  9. 为什么order by 数据都一样_每一只股票的开盘价格都不一样,为什么会这样?
  10. Java类加载信息的顺序:包括静态代码快、静态类变量、非静态代码快、构造方法、普通方法...
  11. C#创建单链表,翻转单链表
  12. C语言自学之路二(C语言数据类型)
  13. Linux Centos 78 计划任务 开机自动启动 查杀木马过程-使用 rootkit 隐藏踪迹
  14. 格林公式求圆并的面积及重心
  15. java.lang.UnsatisfiedLinkError: Couldn't load XXX
  16. 大数据运维架构师培训(5):大数据管理平台(Cloudera CM/CDH/CDP)
  17. Python类和对象以及继承多态(超详细,小白也可以懂)
  18. n918st能刷Android5吗?,中兴 N918st(V5S 双4G版)获取Root权限服务含精简系统方案
  19. MySQL5.7安装教程(workbench安装教程会在之后出)(32位和64位均可)
  20. 用户分析体系,该如何搭建

热门文章

  1. pixhawk position_estimator_inav.cpp思路整理及数据流
  2. 关于const变量的一点理解
  3. java swing刷新_Swing界面刷新问题(转)
  4. [BUUCTF-pwn]——pwn1_sctf_2016
  5. Hadoop单机环境配置
  6. Eclipse中DTD验证导致无法进行代码提示的问题 .
  7. 视图中的难点:主键表 About Key-Preserved Tables
  8. ORA-02287: sequence number not allowed here
  9. SpringMVC以及SSM整合
  10. controller 和 Action 之间的区别