找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 16518|回复: 24
收起左侧

用PWM细分控制步进电机,包含原理和程序

  [复制链接]
ID:194750 发表于 2017-4-29 12:32 | 显示全部楼层 |阅读模式
农民讲习所
这是俺一个关于打印机项目中步进马达中的内容,使用的原理为电流矢量图(a),为减少矢量表的误差,改进为(g).(误
差大的时候,Ia和 Ib 的绝对值变大,角度不变,即比例不变)

磁场合成决定步进马达当前的位置。
我们常用的是图(b),用电压驱动时和线圈个数有关系,直接驱动它们,合成的最小角度都是固定的。
细分最常见的是电流细分,电流引起的磁场的合成就决定马达的角度。所以我们一般用电流合成图来代替磁场合成图。
用电流合成电路复杂一点(用 MCU+DA+L298实现也不难)。

这里俺用 PWM方式,用控制电压的方式代替电流。原因:在电压稳定后,线圈的电流和电压成正比。稳定是 PWM细分的
要点,也决定马达速度不能太高。

在细分的情况下,电机分两相和四相是没意义的。可以把四相电机当两相使用。

下面是俺的程序,使用 MEGA16,因为有PWM。
0.png
  1. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. //2 相步进马达驱动
  3. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  4. #define Step_OutMode()      DDRB|=BIT(6)|BIT(7)
  5. #define Step_InMode()       DDRB&=~(BIT(6)|BIT(7))
  6. #define Step_ReadIO()       (PORTB&( ~(BIT(6)|BIT(7)) ))
  7. #define Step_WriteIO(x)     PORTB=x

  8. struct Motor2P_Table{                   //细分表结构
  9.     unsigned char mQuadrant;            //象限 0-3
  10.     unsigned char mX_Pwm;               //x输出的PWM
  11.     unsigned char mY_Pwm;               //y输出的PWM
  12. };

  13. struct Motor2P{
  14.     unsigned char mTableId;             //细分表 ID
  15.     unsigned char mTask;                //马达驱动的任务转移号

  16.     unsigned char mSaveTimer;           //马达驱动节电模式使用的计数器

  17.     unsigned char mReg;                 //马达驱动使用的寄存器
  18.     unsigned char mTimer;               //对 2MS 的计数器,时间扩展

  19.     unsigned int  mSteps;               //马达要走的步数
  20.     unsigned char mDirect;              //马达走动方向

  21.     unsigned char mStepRunTimer;        //步进时输出有效的时间寄存器
  22.     unsigned char mStepIdleTimer;       //步进时输出节电的时间寄存器
  23.     unsigned char mStepCount;           //细分表走动步长。1-2-4-8-16
  24. };

  25. //------------------------------------------------------------
  26. #ifdef dMotor2P_Main
  27.     #define Motor2P_Head
  28. #else

  29. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

完整代码和教程下载:
用PWM-细分步进电机-包含原理和程序.pdf (157.01 KB, 下载次数: 349)
回复

使用道具 举报

ID:229577 发表于 2017-12-5 18:26 | 显示全部楼层
怎么没人回复呢
回复

使用道具 举报

ID:229577 发表于 2017-12-6 08:51 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:124921 发表于 2018-1-21 21:31 | 显示全部楼层
学习了,感谢楼主分享
回复

使用道具 举报

ID:114132 发表于 2018-5-15 16:31 | 显示全部楼层
谢谢楼主买楼主好人啊
回复

使用道具 举报

ID:263693 发表于 2018-5-23 08:47 | 显示全部楼层
且让老夫一探究竟
回复

使用道具 举报

ID:381620 发表于 2018-8-1 11:26 | 显示全部楼层
先评论,再下载。。。。。。。。一探究竟。
回复

使用道具 举报

ID:391860 发表于 2018-8-31 09:31 | 显示全部楼层
寄存器的版本??!!
回复

使用道具 举报

ID:399824 发表于 2018-9-19 09:13 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:38792 发表于 2018-9-20 21:17 | 显示全部楼层
谢谢分享。多谢。
回复

使用道具 举报

ID:403806 发表于 2018-9-28 21:30 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:240941 发表于 2018-12-6 18:00 | 显示全部楼层
谢谢大大分享
回复

使用道具 举报

ID:472041 发表于 2019-1-23 13:40 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:472041 发表于 2019-1-23 13:41 | 显示全部楼层
谢谢分享,正好用上。
回复

使用道具 举报

ID:462700 发表于 2019-1-27 16:20 | 显示全部楼层
不错不错
回复

使用道具 举报

ID:250270 发表于 2019-4-25 17:06 | 显示全部楼层
对可以 5V_4相_5线步进电机_全新步进电机.doc (58 KB, 下载次数: 13)
回复

使用道具 举报

ID:537928 发表于 2019-5-21 14:34 | 显示全部楼层
谢谢,下载下来看看
回复

使用道具 举报

ID:560202 发表于 2019-6-24 18:14 | 显示全部楼层
资料很好呢,最近在写一个细分控制程序,正需要这类资料呢,谢谢了
回复

使用道具 举报

ID:578133 发表于 2019-7-4 20:54 | 显示全部楼层
这个不错 刚好需要呀
回复

使用道具 举报

ID:578133 发表于 2019-7-4 20:55 | 显示全部楼层
这个真的不错  刚好需要   谢谢
回复

使用道具 举报

ID:473308 发表于 2019-9-26 19:50 | 显示全部楼层
学习了
回复

使用道具 举报

ID:652775 发表于 2019-12-13 08:54 | 显示全部楼层
我怎么只看到pdf,没看到源程序呀。谢楼主享分
回复

使用道具 举报

ID:617305 发表于 2019-12-13 09:14 | 显示全部楼层
好资料,正在学习中~
回复

使用道具 举报

ID:298008 发表于 2020-2-15 12:14 | 显示全部楼层
谢谢楼主分享!!!!
回复

使用道具 举报

ID:475340 发表于 2022-7-4 11:23 | 显示全部楼层
先评论,再下载。。。。。。。。一探究竟。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表