一、应用场景

步进电机带动齿轮旋转,齿轮过孔和托盘孔重合之后,停止旋转,保证每次齿轮和托盘的过孔重合之后再停止工作。适用于齿轮下药装置。

二、分析

1.步进电机有3个控制脚:PUL脉冲、电机正反转、电源开关

2.电机旋转起始和停止位置,考虑失步情况

3.加一个霍尔开关传感器(DH627)用于校准起始位置和控制停止位置,解决失步问题

三、实现思路

齿轮上盖加开槽一个霍尔开关,齿轮开孔加一个磁铁,当霍尔开关和磁铁距离1cm以内时,输入脚(DH627_OnOff)为高电平,反之,则低电平。

1.上电校准

每次上电检测霍尔开关输入脚是否为高电平,如果为低电平则开启电机旋转(正转、反转根据需求),直到检测到DH627_OnOff为高电平,则校准完成,即为起始位置。

2.开始工作

启动电机:开启电源(高电平)--输入方向(0或1)--PUL脉冲(低电平),开启定时器,加一个电机开始标志位(MONTOR_START_FLAG),这时候先让电机脱离霍尔感应区域再判断DH627_OnOff是否为高电平,高则停止旋转,这里是一个小逻辑,用来解决电机工作之后判断停止位置。代码如下:(这一段代码放在定时器中)

     if(Start_Motor_Calibration)                               //开机回归原点检测{if(DH627_OnOff){           GPIO_ResetBits(GPIO_MOTOR_PUL,GPIO_Pin_MOTOR_PUL);//PUL脉冲GPIO_ResetBits(GPIO_MOTOR_DIR,GPIO_Pin_MOTOR_DIR);//方向MOTOR_POWER_OFF;                                  //关闭步进电机电源                                                               TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE);         //关闭定时器3中断  Start_Motor_Calibration=0;}}if(MONTOR_START_FLAG)                                     //电机开启{if(!DH627_OnOff){MONTOR_START_FLAG=0;MONTOR_LEAVE_FLAG=1;}}if(MONTOR_LEAVE_FLAG){if(DH627_OnOff){MONTOR_LEAVE_FLAG=0;GPIO_ResetBits(GPIO_MOTOR_PUL,GPIO_Pin_MOTOR_PUL);GPIO_ResetBits(GPIO_MOTOR_DIR,GPIO_Pin_MOTOR_DIR);MOTOR_POWER_OFF;                                 //关闭步进电机电源                                                           }}

DRV8818步进电机一种应用场景及实现思路相关推荐

  1. java get请求传参_Java-ThreadLocal三种使用场景

    ThreadLocal对于每一位Java读者而言我想可能都不陌生,因为面试基本都会被问到. Java-ThreadLocal三种使用场景 关于ThreadLocal JDK1.2的版本中就提供java ...

  2. Numpy中np.mashgri() 函数介绍及2种应用场景

    @[toc](Numpy中np.mashgri() 函数介绍及2种应用场景 文章目录:) 近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法. 但总觉得印象不深刻,不 ...

  3. Java CountDownLatch的两种常用场景

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120506758 本文出自[赵彦军的博客] 文章目录 简介 场景1 让多个线程等待: ...

  4. Redis 几种应用场景

    Redis 几种应用场景 字符串缓存 <?php$redis = new Redis();$redis->connect('127.0.0.1',6379);$strKey = 'test ...

  5. 面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景

    一.Spring事务管理的两种方式 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种. 编程式事务:是指在代码中手动的管理事务的提交.回滚 ...

  6. table表头固定4种方法_在常见的3种工资条场景中,教你4种批量打印工资条的方法...

    私信回复关键词[福利]~ 获取丰富办公资源,助你高效办公早下班! 打印工资条估计是财务老师的痛,要把一行行的数据,变成一条条的工资条. 数据很多,表头很复杂. 一个个复制粘贴?那是不可能的! 那怎么办 ...

  7. Synchronized 的 8 种使用场景!

    blog.csdn.net/x541211190/article/details/106272922 简介 本文将介绍8种同步方法的访问场景,我们来看看这8种情况下,多线程访问同步方法是否还是线程安全 ...

  8. 应用Quick BI实现首购用户和用户首购的三种运营场景监控

    导读: 首购用户和用户首购是互联网公司运营中最简单.最常遇到.也最容易混淆的两个概念.运营人员与BI经常在首购用户和用户首购上沟通不畅,信息不对称造成理解偏差,导致数据仓库模型或者BI仪表板一改再改. ...

  9. mysql replace 效率,MySQL replace实用场景 MySQL实现replace函数的几种实用场景

    想了解MySQL实现replace函数的几种实用场景的相关内容吗,_陈哈哈在本文为您仔细讲解MySQL replace实用场景的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:MySQL,r ...

最新文章

  1. 两个有序单链表的并交差运算
  2. RequisitePro SQL SERVER数据库的配置
  3. 高效算法——E - 贪心-- 区间覆盖
  4. nlp 中文停用词数据集
  5. 【小记】-006--关于高度塌陷的问题
  6. 前端学习(6):javascript简介
  7. 鸿蒙思维和小央美,中心路汝南路站附近艺术培训
  8. 适合新手入门的8个python项目_推荐:一个适合于Python新手的入门练手项目
  9. 渐进式app_如何编写渐进式Web App新闻网站
  10. bash: !: event not found
  11. Djanog结合jquery实现ajax
  12. 异常:由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。...
  13. vmware workstation中Linux虚拟机固定IP
  14. Elasticsearch refresh
  15. 【转载】深入了解scanf()/getchar()和gets()等函数,C++系列教程,C++实例教程,C++
  16. Atlas 200 HiLens Kit
  17. OKRs, How Google sets goals, Startup Lab workshop | Chatopera
  18. Mac pro20版本的Endnote20关联word经历
  19. Linux 安装gcc编译器
  20. 数字图像处理习题(一)

热门文章

  1. Navicat for MySQL 12破解
  2. 图谱实战 | 百度基于异构互联知识图谱的多模内容创作技术
  3. QT开发(二十二)——QMainWindow主窗口
  4. 网红品牌的“敦刻尔克大撤退”
  5. C语言中 .c 和 .h 文件有什么关系?
  6. STC单片机看门狗验证程序
  7. C语言函数大全-- m 开头的函数(1)
  8. java set list map_Java中的Set,List,Map
  9. 频谱、频谱密度、功率谱密度、能量谱密度
  10. LINUX静默安装ORACLE19C详细步骤