PCM开发板模块实验指导--步进电机按指定时间运行指定距离实验

模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762

        61---步进电机按指定时间运行指定距离实验:

                硬件需求:PC机,PCM模块一个,microUSB线,5V/0.5A直流电源,12V/1A直流电

                源,42步进电机1个,A4988步进电机驱动器一个,导线若干;

                软件需求:PCM编译软件,串口调试助手;

                供电方式:12V电源供电给+5V电源,+5V电源输出的5V给PCM模块供电;

                连接电路:如图93(步进电机正反转实验)

                        在第60个实验步进电机运行指定距离实验中,使用指令steprundist指令让电机以1.5

                弧度每秒的最大速度运行3200个脉冲,如果增大运行速度,电机走3200个脉冲的时间就

                会变少,如果减小速度,电机走3200个脉冲的时间就会变大。

                        如果想让电机走3200个脉冲,并且用7秒时间走完,该如何操作呢?本实验就是介

                绍如何使用stepcalspeed指令先计算出,用7秒时间走完3200个脉冲应该运行的最大速

                度。

                        指令stepcalspeed,通过距离,加减速时间,总运行时间,可以计算出马达运行的

                最大速度,然后通过指令steprundist就可以让马达在指定的时间运行到指定的位置。

                        实验程序如下:

                1 intpro int0 //马达停止中断程序

                2         stepgetdist 0 d3 //获取通道0马达运行的距离,保存到D3,单位脉冲数

                3         prints "step moto stoped\r\n" //输出马达停止的信息

                4         prints "total distance is %d pulses\r\n" d3 //打印马达运行的距离

                5         mov 0 d0 //清零D0,

                6 endint

                7 subpro sub1 //子程序

                8         mov 1 d0 //D0=1

                9         while d0 //循环

                10                 stepgetspeed 0 f0 //获取通道0马达速度,单位弧度每秒

                11                 stepgetdist 0 d3 //获取通道0马达运行的距离,保存到D3,单位脉冲数

                12         ​​​​​​​        prints "speed is %f rad/s\r\n" f0 //打印马达运行的速度

                13         ​​​​​​​        prints "distance is %d pulse\r\n" d3 //打印马达运行的距离

                14         ​​​​​​​        delay 1000 //延时1S

                15         endwhile

                16 endsub

                17 main

                18         intinit s0 int0 //初始化马达停止中断

                        //步进马达初始化0通道,电机转一圈3200个脉冲,步进马达运行停止后会置位Sn

                19         stepinit 0 3200 s0

                20         mov 3200 d2 //d2=3200

                21         mov 1 f7 //f7=1

                22         mov 7 f8 //f8=7

                        //此指令通过距离D2,加减速时间F7,总运行时间F8,计算出最大速度,保存到F9

                23         stepcalspeed 0 d2 f7 f8 f9

                24         prints "max speed is %fs\r\n" f9 //打印最大速度

                        //启动通道0步进电机,d2=3200表示正转3200个脉冲,f7为加减速时间1S,

                        //f9是最大速度,F10保存马达运行3200个脉冲需要的时间,单位S;

                25         steprundist 0 d2 f7 f9 f10

                26         prints "total run time is %fs\r\n" f10 //打印运行总时间

                27         call sub1 //调用子程序

                28         sub 0 d2 d2 //d2=-3200

                        //启动通道0步进电机,d2=-3200表示反转3200个脉冲,f7为加减速时间1S,

                        //f9是最大速度,F10保存马达运行3200个脉冲需要的时间,单位S;

                29         steprundist 0 d2 f7 f9 f10

                30         prints "total run time is %fs\r\n" f10 //打印运行总时间

                31         call sub1 //调用子程序

                32 endmain

                        此实验程序与第60个实验不同之处在于,在使用steprundist指令之前,先使用

                stepcalspeed指令根据脉冲数,加减速时间,总运行时间,计算出最大速度,然后再使

                用steprundist指令时使用此最大速度,这样步进马达就会在指定时间内移动指定的距

                离。

                        下图96为串口输出的信息。

        图96         步进电机按指定的时间运行指定距离实验串口输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值