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



STM32 步进电机开发板 TFT 2.8 L6205 DMX512控制_第1张图片


关键性矢量算法


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

*

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

*                                

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

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

                {

                    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;

            }

        }

    }


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

}

你可能感兴趣的:(STM32 步进电机开发板 TFT 2.8 L6205 DMX512控制)