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。
模式一 - 全深度
在此模式下,
- 丝杠先前进8cm,
- 丝杠再后退8cm,
- 循环做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。
模式二 - 半深度,
在此模式下,
- 丝杠先前进4cm,
- 丝杠再后退4cm,
- 循环做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。
模式三 - 九浅一深
模式三可以由模式一和二组合起来生成,
- 丝杠先前进4cm,
- 丝杠再后退4cm,
- 循环做9次;
- 丝杠先前进8cm,
- 丝杠再后退8cm,
- 循环做1次。
- 将1-6的动作循环3次。
模式四 - 三长两短
模式三可以由模式一和二组合起来生成,
- 丝杠先前进8cm,
- 丝杠再后退8cm,
- 循环做3次;
- 丝杠先前进4cm,
- 丝杠再后退4cm,
- 循环做2次。
- 将1-6的动作循环3次。
以上所有模式里面都重复3次的意思是,该模式下的动作至少重复3遍。
转载于:https://www.cnblogs.com/ironx/p/4841609.html
adult道具项目开发 - 模式相关推荐
- 项目开发流程_绿维文旅:旅游项目开发模式与流程
一.旅游项目开发模式 旅游综合开发是立足旅游项目自有资源基础,以旅游产业为主导,以市场为导向,以资本为驱动,以资源整合为核心,通过集中土地.资本.技术.交通.劳动力等生产要素,推进土地开发.交通建设. ...
- 软考高级信息系统项目管理师系列论文之三:论项目开发模式的选择与应用
软考高级信息系统项目管理师系列论文之三:论项目开发模式的选择与应用 一.摘要 二.正文 三.总结 一.摘要 2007 年7 月,我们作为项目负责人参与了<流媒体内容服务平台>项目开发:该项 ...
- 常见软件项目开发模式思考
一.软件项目 在2000左右 程序员还是一种比较罕见的工作,那是的个人台式机还是当时富裕家庭的高级娱乐用品,一开始网络程序员部分前后端,PHP.JSP.ASP这些技术形成了最早的网络程序.BS 系统 ...
- 周报(关于项目开发模式的一点总结)
项目完全进入测试阶段.总结一下该项目的开发模式–敏捷开发 什么是敏捷开发? 敏捷开发以用户的需求进化为核心,采用迭代,循序渐进的方式进行软件开发.把一个大项目分为多个相互联系,但也可独立运行的小项目, ...
- 软件项目开发模式_小晓_同学__新浪博客
螺旋开发模式:部分模块开发还可以再继续开发别的模块,适合于项目前期需求不确定的情况 对于每一个模块一个个开发:分析.设计.编码.测试.上线: 好处:有效的降低软件项目风险,(做出的产品要尽量满足客户需 ...
- quarkus 入门教程(二) -项目开发模式热更新及项目断点调试方法
quarkus 入门教程(二) -项目断点调试方法 1.项目热更新 quarkus:dev runs 方式启动,项目会以开发者模式启动,当修改了java文件或者resource文件后,项目会在后台编译 ...
- 大前端快闪二:react开发模式 一键启动多个服务
最近全权负责了一个前后端分离的web项目,前端使用create-react-app[1], 后端使用golang做的api服务. npx create-react-app my-app cd my-a ...
- 【经验】Qt项目开发必备工具
在实际的项目中,除了需要掌握Qt开发框架本身,还需要掌握一些开发工具.这些工具能起到事半功倍的效果,甚至某些工具是开发不可或缺的.下面笔者就介绍一些常用的开发工具的用法及下载地址,希望对缺少实际项目经 ...
- [Ext JS 7]的开发模式
文章目录 开发模式的分类及演进 开发模式一: 将Ext JS作为库使用 JS源码编译结果 样式文件编译结果 导入JS和CSS文件后使用Ext JS组件 使用Ext.application创建Ext J ...
最新文章
- Python3--baby网的数据爬取
- mysql event type_MySQL 【Row】下的 Event_type
- javascript做极简时钟特效,再简单没思路你也做不出来
- SphereEx 完成近千万美元 Pre-A 轮融资,连接企业数据与应用,构建新一代数据库生态引擎
- 织梦php网站修改教程,织梦DEDEcms织梦软件模型增加图集功能教程(含修改文件下载)...
- 容器编排技术 -- Kubernetes 在 Namespace 中配置默认的CPU请求与限额
- 一次执行truncate触发ORA-02266解决过程
- linux 网络内核 ko文件,编译内核模块 .ko文件缺少:mmzone.h bounds.h
- 为什么order by 数据都一样_每一只股票的开盘价格都不一样,为什么会这样?
- Java类加载信息的顺序:包括静态代码快、静态类变量、非静态代码快、构造方法、普通方法...
- C#创建单链表,翻转单链表
- C语言自学之路二(C语言数据类型)
- Linux Centos 78 计划任务 开机自动启动 查杀木马过程-使用 rootkit 隐藏踪迹
- 格林公式求圆并的面积及重心
- java.lang.UnsatisfiedLinkError: Couldn't load XXX
- 大数据运维架构师培训(5):大数据管理平台(Cloudera CM/CDH/CDP)
- Python类和对象以及继承多态(超详细,小白也可以懂)
- n918st能刷Android5吗?,中兴 N918st(V5S 双4G版)获取Root权限服务含精简系统方案
- MySQL5.7安装教程(workbench安装教程会在之后出)(32位和64位均可)
- 用户分析体系,该如何搭建
热门文章
- pixhawk position_estimator_inav.cpp思路整理及数据流
- 关于const变量的一点理解
- java swing刷新_Swing界面刷新问题(转)
- [BUUCTF-pwn]——pwn1_sctf_2016
- Hadoop单机环境配置
- Eclipse中DTD验证导致无法进行代码提示的问题 .
- 视图中的难点:主键表 About Key-Preserved Tables
- ORA-02287: sequence number not allowed here
- SpringMVC以及SSM整合
- controller 和 Action 之间的区别