42步进电机_42步进电机驱动 - CSDN
精华内容
参与话题
  • 42步进电机的控制的参考资料

    千次阅读 2018-02-02 08:51:40
    基于stm32单片机,keil5编译平台 又一参考资料 ... 应该是指使用TB6600电机驱动器之类的...我们已经有了一个同时控制四个步进电机的例程,你可以去参考 硬石步进电机资料(2016-06-06更新) http://www.ing10bbs.com/fo

    基于stm32单片机,keil5编译平台
    又一参考资料
    http://www.ing10bbs.com/forum.php?mod=viewthread&tid=93&fromuid=4

    应该是指使用TB6600电机驱动器之类的吧
    我们已经有了一个同时控制四个步进电机的例程,你可以去参考
    硬石步进电机资料(2016-06-06更新)
    http://www.ing10bbs.com/forum.ph … id=93&fromuid=4
    (出处: 硬石社区)

    资源帖:http://www.ing10bbs.com/forum.php?mod=viewthread&tid=1458&fromuid=4

    /**
      ******************************************************************************
      * 文件名程: main.c 
      * 作    者: 硬石嵌入式开发团队
      * 版    本: V1.0
      * 编写日期: 2015-10-04
      * 功    能: 步进电机控制实现
      ******************************************************************************
      * 说明:
      * 本例程配套硬石stm32开发板YS-F1Pro使用。
      * 
      * 淘宝:
      * 论坛:http://www.ing10bbs.com
      * 版权归硬石嵌入式开发团队所有,请勿商用。
      ******************************************************************************
      */
    /* 包含头文件 ----------------------------------------------------------------*/
    #include "stm32f1xx_hal.h"
    #include "StepMotor/bsp_STEPMOTOR.h"
    #include "key/bsp_key.h"
    
    /* 私有类型定义 --------------------------------------------------------------*/
    /* 私有宏定义 ----------------------------------------------------------------*/
    #define STEPMOTOR_MICRO_STEP      32  // 步进电机驱动器细分,必须与驱动器实际设置对应
    
    /* 私有变量 ------------------------------------------------------------------*/
    uint8_t dir=0; // 0 :顺时针   1:逆时针 
    uint8_t ena=0; // 0 :正常运行 1:停机
    
    /* 扩展变量 ------------------------------------------------------------------*/
    extern __IO uint16_t Toggle_Pulse; /* 步进电机速度控制,可调节范围为 650 -- 3500 ,值越小速度越快 */
    
    /*
    *    当步进电机驱动器细分设置为1时,每200个脉冲步进电机旋转一周
    *                          为32时,每6400个脉冲步进电机旋转一周
    *    下面以设置为32时为例讲解:
    *    pulse_count用于记录输出脉冲数量,pulse_count为脉冲数的两倍,
    *    比如当pulse_count=12800时,实际输出6400个完整脉冲。
    *    这样可以非常方便步进电机的实际转动圈数,就任意角度都有办法控制输出。
    *    如果步进电机驱动器的细分设置为其它值,pulse_count也要做相应处理
    *
    */
    __IO uint32_t pulse_count; /*  脉冲计数,一个完整的脉冲会增加2 */
    
    /* 私有函数原形 --------------------------------------------------------------*/
    /* 函数体 --------------------------------------------------------------------*/
    /**
      * 函数功能: 主函数.
      * 输入参数: 无
      * 返 回 值: 无
      * 说    明: 无
      */
    int main(void)
    {  
      uint8_t key1_count=1;
    
      /* 复位所有外设,初始化Flash接口和系统滴答定时器 */
      HAL_Init();
      /* 配置系统时钟 */
      SystemClock_Config();
    
      KEY_GPIO_Init();
    
      /* 高级控制定时器初始化并配置PWM输出功能 */
      STEPMOTOR_TIMx_Init();
    
      /* 确定定时器 */
      HAL_TIM_Base_Start(&htimx_STEPMOTOR);
      /* 启动比较输出并使能中断 */
      HAL_TIM_OC_Start_IT(&htimx_STEPMOTOR,TIM_CHANNEL_1);
    
      /* 无限循环 */
      while (1)
      {
        if(KEY1_StateRead()==KEY_DOWN)  // 功能选择
        {
           key1_count++;
           if(key1_count==5)
             key1_count=1;
        }
        if(KEY2_StateRead()==KEY_DOWN)  // 功能调节
        {
          switch(key1_count)
          {
            case 1:
              Toggle_Pulse-=50;
              if(Toggle_Pulse<300)  // 最快速度限制
                Toggle_Pulse=300;
              break;
            case 2:
              Toggle_Pulse+=100;
              if(Toggle_Pulse>3500)         // 最慢速度限制
                Toggle_Pulse=3500;
              break;  
            case 3:                // 方向控制
              if(dir==0)
              {
                STEPMOTOR_DIR_REVERSAL();  // 反转
                dir=1;
              }
              else
              {
                STEPMOTOR_DIR_FORWARD();   // 正转
                dir=0;
              }
              break;  
            case 4:                // 脱机使能控制
              if(ena==0)
              {
                STEPMOTOR_OUTPUT_ENABLE(); // 停机
                ena=1;
              }
              else
              {
                pulse_count=0;            // 重新计数
                STEPMOTOR_OUTPUT_DISABLE();  // 正常运行
                ena=0;
              }
              break;
            default:
              break;          
          }
        }
        if(pulse_count==STEPMOTOR_MICRO_STEP*200*2*10)  // 转动10圈后停机 
        {
          STEPMOTOR_OUTPUT_DISABLE(); // 停机
        }
      }
    }
    
    /**
      * 函数功能: 定时器比较输出中断回调函数
      * 输入参数: htim:定时器句柄指针
      * 返 回 值: 无
      * 说    明: 无
      */
    void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef *htim)
    {
      __IO uint16_t count;
      count=__HAL_TIM_GET_COUNTER(&htimx_STEPMOTOR);
      __HAL_TIM_SET_COMPARE(&htimx_STEPMOTOR,TIM_CHANNEL_1,count+Toggle_Pulse);
      pulse_count++;
    }
    
    /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式开发团队 *****END OF FILE****/
    
    展开全文
  • stm32 和42步进电机

    2020-07-29 14:21:47
    STM32F103C8T6和42步进电机,搭配A4988的程序源码,建议使用此源码的小白先补下42步进电机的基本知识
  • 基于STC89C51和L298N的42步进电机控制

    万次阅读 多人点赞 2020-06-19 09:17:19
    步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。步进电机必须由双环形...

        步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。步进电机必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。

        技术指标:

        (1)、相数-----------电机内部的线圈组数。电机相数不同,一般二相电机的步距角为0.9°/1.8°。

        (2)、步距角--------表示控制系统每发一个步进脉冲信号,电机所转动的角度。二相四线步进电机步距角为0.9°/1.8°(表示 半步工作时为0.9°、整步工作时为1.8°),这个步距角称为“电机固有步距角”。

        (3)、拍数-----------完成一个 磁场周期性变化所需要脉冲数或导电状态。

     

        工作原理:

            两相四线步进电机以8拍方式工作,则每个脉冲旋转0.9°,即每旋转一圈需要400个脉冲信号来励磁。步进电机的正、反转由励磁脉冲产生的顺序来控制,它的控制等效电路如图所示:

        它有4条励磁信号引线1,2,3,4分别代表A,-A, B, -B。通过控制这4条引线上励磁脉冲产生的时刻,即可控制步进电机的转动。每出现一个脉冲信号,步进电机只走一步。因此,只要依序不断送出脉冲信号,步进电机就能实现连续转动。

        一-二相励磁-----为一相励磁与二相励磁交替导通的方式。每送一个励磁信号,步进电机旋转0.9°。

    励磁顺序表:

       STEP              A            -A           B               -B

        1                    1            0            0                0

        2                    1            0            1                0

        3                    0            0            1                0

        4                    0            1            1                0

        5                    0            1            0                0

        6                    0            1            0                1

        7                    0            0            0                1

        8                    1            0            0                1

     

    L298N引脚图:

    逻辑输入IN1~IN4分别与单片机的控制引脚相连,输出A和输出B(OUT1~OUT4)分别与电机的A、-A、B、-B相连。

    12V供电和GND使用稳压电源(可以电源适配器6-12V,我使用的是8.2V)。

    注意:同时GND还要与单片机的GND相连接,这样才能控制。

    最后STC89C51的步进电机控制代码代码:

    其中IN1~IN4分别与P1.0~P1.3口连接。使用定时器T0实现准确延时。

    //*********************************************
    //Developer:Saber
    //Project:Motor Control
    //Time:2018/4/18
    //*********************************************
    #include <reg52.h>
    #define uchar unsigned char
    #define uint unsigned int
    
    static unsigned int count;
    static unsigned int endcount;
    //八拍驱动方式正转表 A-B- --> B- --> B-A --> A --> AB --> B
    // --> BA- --> A- --> A-B-
    uchar upstep8_table[]={0x05,0x01,0x09,0x08,0x0A,0x02,0x06,0x04};
    
    //四拍驱动方式正转表 A --> B --> A- --> B-
    uchar upstep4_table[]={0x08,0x02,0x06,0x01};
    
    void delay(uint ims);               //变量延时函数
    void Interrupt0_Init();				//中断0初始化
    void MotorSpeedOrDirection(uint var, uchar state);        //控制电机转速和方向
    void ConStep(uchar var);			//步进控制器
    void MotorStop(void);    			//停止
    
    void main()
    {
    	unsigned int sum=0;
    
    	P1 = 0x00;
    	count = 0;
    	Interrupt0_Init();
    	while(1)
    	{
    		MotorSpeedOrDirection(1, 0);
    	}
    }
    
    
    //******************************
    //		步进电机停止函数
    //作用:停止
    //******************************
    void MotorStop(void)
    {
    	P1 = 0x00;
    }
    
    
    //******************************
    //		外部中断0初始化函数
    //作用:初始化外部中断
    //******************************
    void Interrupt0_Init()
    {
    	EA = 1;
    	TMOD = 0x11;
    	ET0 = 1;
    
    //	TH0=0xFF;
    //	TL0=0x28;
    	TH0=(65536-1000)/256;
    	TL0=(65536-1000)%256;
    
    	TR0=1;
    }
    
    
    //******************************
    //		中断处理函数
    //作用:定时器0的中断处理
    //******************************
    void timeint(void) interrupt 1
    {
    //	TH0=0xFF;
    //	TL0=0x28;   //216----234us
    //  定时器定时1ms
    	TH0=(65536-1000)/256;
    	TL0=(65536-1000)%256;
    
    	count++;
    }
    
    
    //******************************
    //
    //延时i ms
    //******************************
    void delay(uint ims)
    {
    	endcount=ims;
    	count=0;
    	do{}while(count<endcount);
    }
    
    
    //******************************
    //		步进电机驱动函数
    //作用:通过变量var控制电动机的转速高低,通过变量state判断电动机的正反转
    //			state:0 正转,state: 1 反转
    //使用8拍能够实现比较平滑的转动,使用4拍时电机震动比较大。
    //******************************
    void MotorSpeedOrDirection(uint var, uchar state)
    {
    	uchar i=0;
    	if(!state)
    	{
    		for(i=0; i<8; i++)
    		{
    			P1=upstep8_table[i];
    			delay(var);
    		}
    	}else{
    		for(i=7; i>0; --i)
    		{
    			P1=upstep8_table[i];
    			delay(var);
    		}
    	}
    }
    
    
    //******************************
    //		步进控制函数
    //作用:通过变量var控制旋转圈速
    //******************************
    void ConStep(uchar var)
    {
    	uchar i=0,j=0,m=0,k=0;
    	while(k++<var)
    	{
    		for(i=0;i<20;i++)
    		{
    			for(m=0;m<20;m++)
    			{
    				P1=upstep8_table[j];
    				j++;
    				if(j>=8)             //每8次一个循环
    					j=0;
    				delay(1);
    			}
    		}
    	}
    }

     

    展开全文
  • 42步进电机参数

    千次阅读 2019-09-25 10:22:52
    42两相步进电机  品 牌:锐特  产品类型 :两相步进电机  型 号:42系列两相步进电机  规格:42CM0442CM0642CM08  极 数: 双极  额定功率:0.22N.M  耐压:500V AC 1minute  产品认证:CE认证  ...

    42两相步进电机

      品 牌:锐特

      产品类型 :两相步进电机

      型 号:42系列两相步进电机

      规格:42CM0442CM0642CM08

      极 数: 双极

      额定功率:0.22N.M

      耐压:500V AC 1minute

      产品认证:CE认证

      应用范围:自动化设备

      

    42两相步进电机

     

      步距精度:±5%(整步、空载)

      温度:80°CMax

      环境温度: -20°C~+50°C

      产品用途:我司各42系列两相步进电机目前已广泛应用于雕刻机、激光机、数控机床、纺织服装机械、医疗设备、测量设备、电子加工设备、包装机械设备等各种自动化设备和仪器上。

      锐特EC系列步进伺服电机,基于Cz优化磁路设计,

      采用高磁密度的定、转子材料,具有较高的能量效率。

      

    42两相步进电机

     

      内置高分辨率编码器。

      轻巧的尺寸设计,缩小电机安装空间。

      制动器可选,匹配Z轴运动。

      锐特机电提供基座42、57、60、86的步进伺服电机,默认情况下,位置传感器为1000线分辨率的增量式光电编码器。

    转载于:https://www.cnblogs.com/szruite/p/11162995.html

    展开全文
  • TB6600+stm32+42步进电机测试

    千次阅读 热门讨论 2019-04-25 11:02:53
    手头正好在调TB6600+stm32+42的控制,以前都是调5相四线,但现在需要用42电机调控制台的盖板起降,那就开始搞吧。设备产品化我不打算用TB6600,用8825(8825调通了我再贴图),现阶段手头就这个了! 接线:用的...

    最近半年忙的一塌糊涂,最近做一体机微诊室心情很烦躁啊,赶紧过来安安静静打会字调整一下。

    手头正好在调TB6600+stm32+42的控制,以前都是调5相四线,但现在需要用42电机调控制台的盖板起降,那就开始搞吧。设备产品化我不打算用TB6600,用8825(8825调通了我再贴图),现阶段手头就这个了!

     

    接线:用的共阴接线DIR-和PUL-接GND;DIR+接GPIOA7、PUL+接GPIOA8,。

    拨码开关:000,110。说白了前三位调速度,后三位调电流(根据实际电机电流调,大了会发热严重到烫手)

     

    直接上代码,模板用的ministm32的LED代码改的

    #include "led.h"
    #include "delay.h"
    #include "sys.h"
    //ALIENTEK miniSTM32¿ª·¢°åʵÑé1
    //ÅÜÂíµÆʵÑé  
    //¼¼ÊõÖ§³Ö£ºwww.openedv.com
    //¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾
     int main(void)
     {	
    	 int x ;
    	 
    	delay_init();	    	 //ÑÓʱº¯Êý³õʼ»¯	  
    	LED_Init();		  	//³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
    	
    	 while(1)
    	{
    		GPIO_SetBits(GPIOA,GPIO_Pin_7);//LED1Êä³ö¸ß
    		
    		for(x = 0; x < 10000; x++) {
    		GPIO_ResetBits(GPIOA,GPIO_Pin_8); //LED0Êä³öµÍ
    		
    		delay_ms(5);
    		GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0Êä³ö¸ß
    
    		delay_ms(5);
    		}
    		
    		GPIO_ResetBits(GPIOA,GPIO_Pin_7);
    		for(x = 0; x < 10000; x++) {
    		GPIO_ResetBits(GPIOA,GPIO_Pin_8); //LED0Êä³öµÍ
    		
    		delay_ms(5);
    		GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0Êä³ö¸ß
    
    		delay_ms(5);
    		}		
    		
    		
    	}
     }

     

     

    展开全文
  • 用arduino 控制42步进电机转动,正反循环旋转。实现了基本的转动,方法简单。
  • Arduino 控制42步进电机(TB6560驱动模块) 简单的正转、反转、转动特定角度函数等; 引脚连接在程序中有注释;
  • 【arduino】arduino uno + A4988控制42步进电机

    万次阅读 多人点赞 2017-12-02 09:21:09
    MS1 , MS2 , MS3 跳线说明:(例子里是低电平,悬空或接地线,使用全步进模式) ...分别是全步进,1/2步进,1/4...步进电机走一步是1.8度,一圈就是200步。例如使用1/16步进,则需要走3200步才等于一圈。 ms1 
  • A4988与42步进电机

    千次阅读 2019-08-08 21:29:02
    A4988电机驱动板引脚 VMOT:电源正(8~35V),供电机 GND:电机接地 2B,2A:电机绕组2控制引脚 1A.1B:电机绕组1控制引脚 VDD:驱动板电源正(3~5V) GND:驱动板地 ENABLE:引脚低电平,A4988才能进行电机驱动...
  • 51单片机控制TB6600驱动器驱动42步进电机

    万次阅读 多人点赞 2020-08-15 10:45:44
    51单片机控制TB6600驱动器驱动42步进电机功能实现目标硬件简介硬件连接程序代码功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个...
  • stm32控制42步进电机(1月24日暂存)

    千次阅读 2018-01-24 01:30:33
    http://www.geek-workshop.com/thread-12695-1-1.html
  • 实验目的:利用Arduino+TB6600驱动模块控制两相四线42减速步进电机 材料: Arduino Nano *1 TB6600驱动器 *1 42减速步进电机*1 面包板 *1 12V电源适配器*1 导线 若干 接线: 12V电源适配器正负极分别接驱动器VCC...
  • arduino UNO 用TB6560驱动42步进电机

    万次阅读 2017-06-25 16:19:23
    arduino UNO 用TB6560驱动42步进电机
  • 如果没有细分,那么步进电机每接受一个脉冲,就会转动一个步距角。加入驱动器的细分后,则每发出一个脉冲,电机旋转的角度=步距角/细分数。
  • 很多用户误以为步进电机驱动器的细分越高,步进电机的精度就越高,其实这是一种错误的观念,比如步进电机驱动器细分较高的可以达到60000个脉冲一转,而步进电机实际是无法分辨这个精度的,当驱动器设置为60000个脉冲...
  • 使用Arduino与A4988 驱动步进电机

    万次阅读 多人点赞 2019-10-20 16:47:00
    初识Arduino,有什么错漏的地方请指正. 学会使用A4988驱动电机对于DIY3D打印机,...实验目的:Arduino与A4988驱动42步进电机 材料如下: Arduino uno *1 A4988 *1 42步进电机 *1 面包板 *1 9V外接电源 *1 导线 若干 s...
  • 步进电机的控制 (驱动板为TB6560)

    万次阅读 2014-05-24 16:35:43
    本文主要讲述了利用单片机对42步进电机进行
  • 步进电机一圈脉冲数

    千次阅读 2018-04-11 17:11:46
    根据步进电机电机步距角,一般为0.9或1.8;如步角距为1.8度的话,电机转一周为200个脉冲(360/1.8)。 如果步进电机带细分的话,每个脉冲前进的度数就是步距角除以细分数,如2细分,电机转一周需要(360/0.9)=400;...
  • 步进电机基础及工作原理

    万次阅读 2017-10-18 21:14:48
    步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于控制脉冲信号的频率和脉冲数。 脉冲数越多,电机转动的角度越大。 脉冲的频率越高,电机转速越快,...
  • Arduino(2560)控制两个步进电机通过控制器

    万次阅读 多人点赞 2018-05-01 14:41:33
    准备工具:两个步进电机(我用的是J42):Arduino板(我用的是2560):步进电机控制器:电源适配器:一 储备知识:1.步进电机的绕组:A+:黑A-:绿B+:红B-:蓝(这个问题就查了好久..)2.细分:步进电机每200(360÷1.8)...
1 2 3 4 5 ... 20
收藏数 7,590
精华内容 3,036
关键字:

42步进电机