美文网首页嵌入式
CC2530 步进电机正反转加减速

CC2530 步进电机正反转加减速

作者: 老中医167788 | 来源:发表于2022-03-08 21:10 被阅读0次

    1.实验目的

    1)、过实验掌握 CC2530 芯片 GPIO 的配置方法
    2)、掌握步进电机控制原理

    2.实验设备

    硬件:PC 机一台 ZB2530(底板、核心板、仿真器、USB 线) 一套
    软件:2000/XP/win7 系统,IAR 8.10 集成开发环境

    3.代码分析

    #include <ioCC2530.h>
    
    typedef unsigned char uchar;
    typedef unsigned int  uint;
    
    
    #define A1 P0_4 //定义步进电机连接端口
    #define B1 P0_5
    #define C1 P0_6
    #define D1 P0_7
    
    uchar phasecw[4] ={0x80,0x40,0x20,0x10};//正转 电机导通相序 D-C-B-A
    uchar phaseccw[4]={0x10,0x20,0x40,0x80};//反转 电机导通相序 A-B-C-D
    
    void MotorData(uchar data)
    {
      A1 = 1&(data>>4);
      B1 = 1&(data>>5);
      C1 = 1&(data>>6);
      D1 = 1&(data>>7);
    }
    
    //ms延时函数
    void Delay_MS(uint x)
    {
      uint i,j;
      for(i=0;i<x;i++)
        for(j=0;j<535;j++);
    }
    
    //顺时针转动
    void MotorCW(uchar Speed)
    {
      uchar i;
      for(i=0;i<4;i++)
      {
        MotorData(phasecw[i]);
        Delay_MS(Speed);//转速调节
      }
    }
    //逆时针转动
    void MotorCCW(uchar Speed)
    {
      uchar i;
      for(i=0;i<4;i++)
      {
        MotorData(phaseccw[i]);
        Delay_MS(Speed);//转速调节
      }
    }
    
    //停止转动
    void MotorStop(void)
    {
      MotorData(0x00);
    }
    
    /****************************************************************************
    * 名    称: InitIO()
    * 功    能: 初始化IO口程序
    * 入口参数: 无
    * 出口参数: 无
    ****************************************************************************/
    void InitIO(void)
    {
      P0SEL &= 0x0F;  //P04 05 06 07定义为普通IO
      P0DIR |= 0xF0;  //P04 05 06 07定义为输出
    }
    
    /****************************************************************************
    * 程序入口函数
    ****************************************************************************/
    void main(void)
    {
      uint i;
      uchar ucSpeed;
      
      InitIO();
      
      //改变这个参数可以调整电机转速,数字越小,转速越大,力矩越小
      ucSpeed = 3;    //调整速度   建议在2-10范围内
    
      Delay_MS(50);   //等待系统稳定
      while(1)
      {
        for(i=0;i<500;i++)
        {
          MotorCW(ucSpeed); //顺时针转动
        } 
        MotorStop();        //停止转动   
        Delay_MS(2000);
        
        for(i=0;i<500;i++)
        {
          MotorCCW(ucSpeed);//逆时针转动
        } 
        
        MotorStop();        //停止转动
        Delay_MS(2000);  
      }
    }
    

    4.实验现象

    点击按照指定的速度 顺时针转动—停止---逆时针转动—停止 如下图:


    image.png

    相关文章

      网友评论

        本文标题:CC2530 步进电机正反转加减速

        本文链接:https://www.haomeiwen.com/subject/rfczrrtx.html