STM32 步进电机开发板 TFT 2.8 L6205 DMX512控制

介绍:

1.第2版资料 REV2.0

2.STM32 V3.5版本的库   标准库。

3.FSMC 和 M1 M2 可同时工作 多线程概念。

4.主要功能还是电机的控制

a.当然如果一点步进电机基础都没有的 建议看一下基础 比较好入手。
b.涉及步进电机细分控制理论,速度控制理论。这里我要说的是 我当前在程序中使用的。 当然这方面的理论很多。
c.矢量控制算法,如果不需要就使用最精简版。程序里面有注释 这样更容易入门。
d.最高细分16细分 轻量级 (质量)为Basic版本  PRO版本未发行 重量级 可以到128细分 或是256细分。


基于SVPWM控制原理 步进电机细分控制 低噪音 低速高力矩 


http://yonyon.taobao.com





关键性矢量算法


/*****************************************************************************************

*

* 步进电机根据当前位置 控制 速度 达到指定位置 驱动函数 

*                                

*****************************************************************************************/

static void Motor1PostionControlSpeed(void)          // LOOP IN T0

{


//---------------------------------------------------------------------------------------

if (CheckValChange3(Motor1_dynamic_postion_gap))

{

  if (((Motor1_user_postion_gap-step_startstop*MaxStep) < Motor1_dynamic_postion_gap) && (Motor1_dynamic_postion_gap <= Motor1_user_postion_gap))

            LineFlag = 1;  //1 加速  0 减速  2 匀速 (停止)  

}


    Motor1_drive(Motor1_speed_postion_dir,MotorXSpeedPos);


//MicroStep and MaxStep  Motor1_postion_Current  Motor1_dynamic_postion_gap

//-------- CheckValChange --------

    if (CheckValChange2(Motor1_dynamic_postion_gap/MaxStep))

    {

        if (Motor1WillBackFlag==0)

        {   //-----------------------------------------------------------------

            if ((0 < Motor1_dynamic_postion_gap) && (Motor1_dynamic_postion_gap <= MotorXSpeedPos*MaxStep))  //loop 20*256/x (256-32) 20为20步

            {

                if (MotorXSpeedPos)

                {

                    MotorXSpeedPos--;  //减速制动

                    LineFlag = 0;

                }

            }//-----------------------------------------------------------------

            else if ((step_startstop*MaxStep < Motor1_dynamic_postion_gap) && (Motor1_dynamic_postion_gap <= (Motor1_user_postion_gap-step_startstop*MaxStep)))

            {

                LineFlag = 2;

            }//-----------------------------------------------------------------

            else if (((Motor1_user_postion_gap-step_startstop*MaxStep) < Motor1_dynamic_postion_gap) && (Motor1_dynamic_postion_gap <= Motor1_user_postion_gap))

            {

                if (MotorXSpeedPos<step_startstop)

                {

                    MotorXSpeedPos++;  //加速启动

                    LineFlag = 1;

                }

            }//-----------------------------------------------------------------

            else if (Motor1_dynamic_postion_gap > Motor1_user_postion_gap)

            {

                Motor1WillBackFlag = 1;  //减速制动

            }

        }

        //----------------------------------------------------------------------------------------

        else if ((Motor1WillBackFlag==1))

        {   

            if (MotorXSpeedPos)

            {

                MotorXSpeedPos--;

                LineFlag = 0;

            }

            else

            {

                Motor1WillBackFlag = 0;

            }

        }

    }


//----------------------------------------------------------------------------------------------------------------------------------------------

}

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值