实习公司项目需要控制步进电机,电机方面主要包括控制运动、加减速、限位。
下面介绍一下在电机控制方面的心得,由于对于电机的控制不需要很精确,并且自身能力有限,相比于大牛有很大的差距。

1.需要实现的功能

主要是控制滑块的运动,开始运动时需要加速,当稳定在最高速度时匀速运动,检测到下端限位信号时,开始减速直到停止,然后进行反向加速,匀速,检测到上端限位时停止运动。

加速——匀速——减速——停止——反向——加速——匀速——停止

2.硬件部分

本次电机为两相四线步进电机,两相:电机有两个线圈(绕组),四线:电机有四根线,一般是A+ A- B+ B-。有些电机不会标注出线的极性,其实可以用万用表测,短接的就是同一个绕组,或者短接之后电机转动很费力,也代表是同一个绕组。

  • 驱动

电机的运动需要较大的电流,这取决于电机本身和负载,所以通常需要驱动芯片。而且驱动芯片可以实现许多附加的功能,包括细分、休眠、保护等。本次采用的是DRV8825驱动芯片模块。模块的介绍图如图所示:

引脚介绍:

1.ENABLE/:使能引脚,高电平停止工作,低电平正常工作;

2.M0-M2:代表细分,最大可以达到32细分,这部分可以参考datasheet;

3.RESET/ 、SLEEP/:低电平会休眠和复位,因此电机正常工作时,两个引脚接高电平;

4.STEP:最重要的引脚,通过单片机给这个引脚PWM信号,控制电机运动;

5.DIR:0和1控制电机方向;

6.VMOT:供电引脚,一般用12-20V就可以了;

7.B2-A1:接电机四根线;

8.FAULT/:接高电平工作;

  • 光电限位

光电限位采用的反射型,型号为sy1200,感应距离为1-4mm,当没有遮挡时,输出低电平;有遮挡时,代表有光反射回来,输出高电平;测试过程中,发现最好采用白色的平面反射,效果更好。

3.软件部分

 软件主要就是通过stm32输出PWM脉冲,脉冲的频率决定了电机的速度。

PWM通过定时器产生,决定频率的主要是arr重装载值,以及psc预分频值。最终输出的PWM频率为72000k/(arr*psc)。

  • 加减速
    由于需要做到加减速,也就意味着PWM的频率是改变的,因此arr的值需要改变。参考网上对于加减速的一些方法:主要有T型加减速和S型加减速,实现方法有公式法或者查表法。由于公式法比较麻烦,就直接采用了查表法。所以根据需要的频率,计算出不同频率下的arr值,写到数组里,就可以实现频率的改变。不过这种方法下,频率的改变是根据时间做线性或者S型变化,这种方法对吗?还是根据步数来改变?

  • S型加减速:

    T型加速就是匀加速,固定加速度。S型加速需要根据公式计算,详细说明如下:

    其中Fcurrent代表某个点的频率:Fmin代表最小频率;Fmax代表最大频率;Flexible为S曲线区间系数,越大代表压缩的最厉害,中间(x坐标0点周围)加速度越大;越小越接近匀加速。理想的S曲线的取值为4-6;num:频率点/2;
    例如想要从1kHz加速到40kHz,中间经过40个点,Fmin=1kHz,Fmax=40kHz,num=40/2=20,最后通过excel计算出各个频率值,可以发现在末端的加速是非常缓慢的,中间加速比较大。问题就是,初始速度并不是1khz了,他取决于系数的取值,取6时,初始速度就越小。

  • 软件中实现:
    采用定时器3输出PWM脉冲,定时器2用于计数中断(更精确的控制可以通过定时器2来计算出给出多少个脉冲,也就是电机运动的步数,那样的话就可以精确控制电机运动,形成开环反馈)

// 加减速实现部分
void TIM2_IRQHandler(void) //
{

if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //
{TIM_ClearITPendingBit(TIM2, TIM_IT_Update);  //time++;if(time>=35)//{time=0;        //每x个周期进入定时后,对time进行清零,然后重新进行累加if(jiasu==1)   //加速状态{n=n+1;fre=freq[n];    }if(jiasu==0)   //减速状态,检测到下端的限位后进行减速,此时的n应该等于加速之后的最大值,也就是频率最大的时候,接下来进行递减,速度降低{n=n-1;fre=freq[n];    }if(n>=38)//{n=38;    }if(n<=0)      //根据前面速度递减,当减到第一个数时,速度已经降到了1k,可以让电机开始停止然后转向{GPIO_SetBits(GPIOC,GPIO_Pin_6);    // 拉高步进电机的enable,停止运动DIR0=!DIR0;   //转向delay_ms(100);n=0;fre=freq[n];    jiasu=1;GPIO_ResetBits(GPIOC,GPIO_Pin_6);    // 转向之后拉低电机的enable,开始运动}TIM3_PWM_Init(fre,9);TIM_SetCompare4(TIM3,fre/2);// 改变TIM3的输出频率,从而改变电机的速度}}
}

stm32控制步进电机加减速相关推荐

  1. 基于STM32控制直流电机加减速正反转设计

    本设计基于STM32控制直流电机加减速正反转设计(程序+仿真+论文) 仿真:proteus8.9 程序编译器:keil 5 编程语言:C语言 编号C0011 资料下载链接 功能说明: 本设计由STM3 ...

  2. K_A08_013 基于 STM32等单片机驱动大功率MOS管模块按键控制直流电机加减速启停

    目录 一.资源说明 二.基本参数 参数 引脚说明 三.驱动说明 大功率MOS模块驱动 对应程序: 四.部分代码说明 接线说明 STC89C52RC+大功率MOS模块 STM32F103C8T6+大功率 ...

  3. 利用stm32控制步进电机 速度加速度控制

    因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 利用stm32控制步进电机 尝试用42系步进电机做倒立摆,总结步进 ...

  4. STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序

    STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序 一.ULN2003驱动器 1.工作原理 2.步距角以及一圈所需步数的计算 二.硬件连接 三.STM32F103定时器中断 ...

  5. STM32控制步进电机:工作原理及库函数(标准库) / HAL库控制程序(不定期更新)

    STM32控制步进电机:工作原理并附带库函数/HAL库程序 一.步进电机的基本工作原理 1.步进电机工作原理 2.混合式步进电机工作原理 二.步进电机参数解析(后续学习会继续补充此处内容

  6. 单片机步进电机加减速表生成软件

    单片机步进电机加减速表生成软件 介绍 功能细节 使用步骤 匀加速效果 平滑效果 软件链接 介绍 使用场景: 基于中断的查表法步进控制程序: 每中断一次就更新一次比较值,并输出一个步进(若翻转电平,速度 ...

  7. STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数

    STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数 一.步进电机闭环驱动器 二.CubeMx配置 1.Clock Configuration 2.脉冲端 定时器配置 3. ...

  8. 步进电机c语言源代码 stm32,STM32控制步进电机源代码

    单片机源程序如下: #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "misc. ...

  9. 【C语言】STM32控制步进电机——一种S形加减速曲线的推导与实现

    目录 1 前言 2 理论分析 2.1 选择曲线 2.2 计算函数方程 2.3 单位分析 2.4 模拟验证 3 两种代码实现 3.1 速度与时间关系 3.1.1 原理 3.1.2 优点 3.1.3 缺点 ...

最新文章

  1. 动态更新ViewPager?
  2. ogr 缓冲区_GDAL的几何操作
  3. 企业搜索引擎(Enterprise Search Engine)的2007中重要的功能
  4. 发展大数据还有啥问题:数据孤岛、技术差距、人才短缺
  5. 获取 NodeJS 程序退出码
  6. c语言小学生加法考试题程序4,c语言编程题与答案4.doc
  7. android选择选择图片封装库,Android_Album_android图片选择库
  8. grubbs准则 matlab_MATLAB-格拉布斯准则(MATLAB-Grubbs criterion)_0
  9. 小程序毕设作品之微信美食菜谱小程序毕业设计成品(6)开题答辩PPT
  10. TracePro模拟
  11. MySQL例题一 综合案例(多条件组合查询)
  12. cuda 原子锁多线程操作通用原子操作
  13. C++中的delete与delete[]
  14. 仿热血江湖游戏类46地面物品类
  15. matplotlib简单做图
  16. 彩色喷头程序开发项目外包
  17. 基于3D Vision眼镜的OSG立体显示 【转】
  18. 判断三个数是否能构成三角形_七年级 初一下册数学三角形专题复习提纲及经典例题...
  19. PyGmae:有限状态机实践(十三)
  20. 数字信号处理--加窗

热门文章

  1. php安装及PDO配置
  2. 使用Vitamio打造自己的Android万能播放器—— 手势控制亮度、音量、缩放
  3. 智能ABC中快速切换 输入特殊符号
  4. 工作组计算机访问用户名和密码错误,加入域的电脑访问工作组共享打印机经常出问题...
  5. 有限元分析中常用的模量介绍
  6. 整理Android应用程序权限(AndroidManifest)
  7. KBE实践——登录案例
  8. 模拟电话拨号器数字界面 以及跳转到拨打界面
  9. 弘辽科技:影响淘宝流量的因素有哪些 怎么增加流量
  10. 2.4G5G WiFi 5V供电大短路,维修更换5G芯片