步进电机_步进电机控制 - CSDN
步进电机 订阅
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电动机。 [1] 展开全文
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电动机。 [1]
信息
外文名
stepping motor
别    称
脉冲电动机 [1]
工作原理
按电磁学原理,将电能转为机械能
中文名
步进电机
属    性
感应电机的一种
步进电机简介
步进电机又称为脉冲电机,基于最基本的电磁铁原理,它是一种可以自由回转的电磁铁,其动作原理是依靠气隙磁导的变化来产生电磁转矩。其原始模型是起源于1830年至1860年间。1870年前后开始以控制为目的的尝试,应用于氢弧灯的电极输送机构中。这被认为是最初的步进电机。二十世纪初,在电话自动交换机中广泛使用了步进电机。由于西方资本主义列强争夺殖民地,步进电机在缺乏交流电源的船舶和飞机等独立系统中得到了广泛的使用。二十世纪五十年代后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。到了八十年代后,由于廉价的微型计算机以多功能的姿态出现,步进电机的控制方式更加灵活多样。 [2]  步进电机相对于其它控制用途电机的最大区别是,它接收数字控制信号(电脉冲信号)并转化成与之相对应的角位移或直线位移,它本身就是一个完成数字模式转化的执行元件。而且它可开环位置控制,输入一个脉冲信号就得到一个规定的位置增量,这样的所谓增量位置控制系统与传统的直流控制系统相比,其成本明显减低,几乎不必进行系统调整。步进电机的角位移量与输入的脉冲个数严格成正比,而且在时间上与脉冲同步。因而只要控制脉冲的数量、频率和电机绕组的相序,即可获得所需的转角、速度和方向。 [2]  我国的步进电机在二十世纪七十年代初开始起步,七十年代中期至八十年代中期为成品发展阶段,新品种和高性能电机不断开发,目前,随着科学技术的发展,特别是永磁材料、半导体技术、计算机技术的发展,使步进电机在众多领域得到了广泛应用。 [2]  作为一种控制用的特种电机,步进电机无法直接接到直流或交流电源上工作,必须使用专用的驱动电源(步进电机驱动器)。在微电子技术,特别计算机技术发展以前,控制器(脉冲信号发生器)完全由硬件实现,控制系统采用单独的元件或者集成电路组成控制回路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路。这就使得需要针对不同的电机开发不同的驱动器,开发难度和开发成本都很高,控制难度较大,限制了步进电机的推广。 [2]  由于步进电机是一个把电脉冲转换成离散的机械运动的装置,具有很好的数据控制特性,因此,计算机成为步进电机的理想驱动源,随着微电子和计算机技术的发展,软硬件结合的控制方式成为了主流,即通过程序产生控制脉冲,驱动硬件电路。单片机通过软件来控制步进电机,更好地挖掘出了电机的潜力。因此,用单片机控制步进电机已经成为了一种必然的趋势,也符合数字化的时代趋。 [2] 
收起全文
  • 步进电机

    千次阅读 2018-04-17 21:24:35
    1.步进电机使用的几个概念:电机转动一圈的脉冲数=(步进电机)一圈的脉冲数 =细分数*每转脉冲数*减速比。 =(无刷伺服电机)一圈的脉冲数 = 编码器线数 *4 / 电子齿轮*减速比。:电机转动一圈的脉冲数即是转动360...

    1.步进电机使用的几个概念:

    电机转动一圈的脉冲数=(步进电机)一圈的脉冲数 =细分数*每转脉冲数*减速比。

                                     =(无刷伺服电机)一圈的脉冲数 = 编码器线数 *4 / 电子齿轮*减速比。

    :电机转动一圈的脉冲数即是转动360度所需脉冲,一般步进电机会与步进电机驱动器配合使用,这就需要明确细分数、步距角、减数比这三个概念。

    (1)细分数:步进电机的细分技术实质上是一种电子阻尼技术,其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。比如对于步进角为1.8°的两相混合式步进电机,如果细分驱动器的细分数设置为4,那么电机的运转分辨率为每个脉冲0.45°,电机的精度能否达到或接近0.45°,还取决于细分驱动器的细分电流控制精度等其它因素。不同厂家的细分驱动器精度可能差别很大;细分数越大精度越难控制。

    (2)步距角:也就是每转脉冲数,一般步距角在步进电机厂家虎

    (3)减数比:即减速装置的传动比,是传动比的一种,是指减速机构中瞬时输入速度与输出速度的比值,用符号“i”表示减速比的意思:比如减速比1/64,:如果步进电机输出1N.m的转矩的话,通过减速箱转换后的输出力矩64N.m,当然转速降低为原转速的1/64。

    展开全文
  • stm32简说步进电机(有代码)!!!

    万次阅读 多人点赞 2016-07-25 12:57:01
    步进电机(也称脉冲电机)是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速,停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载的变化,即给电机一个脉冲信号,电机则转过一个...


    步进电机(也称脉冲电机)(将电脉冲转换为相应的角位移或线位移的电磁机械装置,具有快速启动,停能力,在电机的负荷不超过它能提供的动态转矩时,可以通过输入脉冲来控制它在一瞬间的启动或者停止。在非超载的情况下,步距角和转速只和输入的脉冲频率有关,和环境温度,气压,振动无关,也不受电网电压的波动和负载变化的影响,因此,控制较为精准)即给电机一个脉冲信号,电机则转过一个步距角


    步进电机是一种感应电机,它的工作原理:利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器,就是说:必须用由双环形脉冲信号功率驱动电路等组成的控制系统方可使用。


    步距角:控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给了一个步距角的值,如:86BYG250A型      电机的值为0.9、1.8(表示半步工作时为0.9,整步为1.8),被称之为“电机的固有步距角”,但是不一定是      电机实际工作时的真正步距角,真正的步距角和驱动器有关


    相数:电机内部的线圈组数,目前常用的有二相,三相,四相,五相步进电机。电机相数不同,其步距角也就不同了,          一般二相电机的步距角为0.9/1,8,三相为0.36/0.72,五相为0.36/0.72。在没有细分驱动器的情况下,用户主要            靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,那么相数好像也就没有了意义

    拍数:完成一个磁场周期性变化所需脉冲数或导电状态,或指电机转过一个步距角所需脉冲数。以如下的四相电机为            例,有四相四拍运行方式,AB-BC-CD-DA-AB;四相八拍:A-AB-B-BC-C-CD-D-DA-A

               


    失步:电机运转时运转的步数不等于理论上的步数,称之为失步


    开环控制与闭环控制:(主要看系统中有没有反馈环节)(反馈指的是动作所引起的效果)

    (反馈简单的理解就是:“你打了别人一巴掌,我们看到了它的脸是红的,嗯嗯,这就是眼睛所得到的反馈”)

    闭环控制:存在反馈环节的控制,就是当前的系统能够实时的检测控制的输出结果,并将检测到的信息通过反馈环节反映到输入端,调整输入量,达到修正控制误差,提高控制精度的目的,(对外部扰动和系统参数变化不敏感)如:

    (闭环)

    全自动洗衣机,给洗衣机加水时,里边有一个红外传感器,扫描到水位高低,当水位合适时,洗衣机自动停止加水


    家用空调根据传感器采集到当前的温度,然后比较设定温度,通过设定指令,控制室内外机的工作情况,改变频率,压缩机的转速等进行简单的调节,然后不断地进行控制


    寻迹小车时,两边的红外传感器不断的检测黑线,将返回的结果输入到相应i/o口上,我们对这些i/o口进行中断检测就可以知道,当前时刻的位置,然后可以执行相应的操作(左转,右转);


    调节平衡天平的时候,其中一种方法就是利用mpu6050获取当前所处位置的角度,调用PID算法,对当前的位置或者角度进行处理,然后对调整后的角度再次进行反馈处理

    (家用空调调节温度)

    家用空调调节指定的温度,靠的是电子传感器,(电子传感器就是一个热敏电阻,不同的温度会有不同的阻值),利用也可以理解为电子膨胀,不同的温度会有不同的阻值。利用对入风口的空气进行取样,把数据传输到控制板上,然后,在与设定的温度进行比较,产生一个指令来实现控制。(制冷的话,比较之后:输出室内风机和室外机的开机指令,内外机开始工作(室外机包括压缩机,室外风机,四通阀等部件),工作一定温度的话,室内温度将会:1,(定频空调)达到设定值,室外机停止工作,室内机保持工作,保证空气循环,当室内温度逐渐上升,大于设定值2-3度时,室外机重新启动制冷,室内温度将又开始下降,重复这个过程,室内温度就能保持在设定温度值上下1度左右范围内波动; 2,(变频空调)接近设定值,室外机的变频板输出的频率下降,压缩机转速下降,制冷量也相应降低,室内温度保持在与设定值相同的数值下。随着室内热源的变化,室内机温度传感器实时检测温度的变化,主控板输出的控制信号使变频器跟随变化调节压缩机工作频率,从而改变瞬时制冷量,确保室内温度稳定)



    开环控制:不存在反馈环节的控制,也就是控制器与被控制对象间只有顺序作业而无反方向联系且控制单方向进行,

                      ,无自动纠偏能力,不用取输出量变化信号控制输入量。

                      

                       如:在开车的过程中,我们来控制方向盘

                       人工转换电扇的档位实现转速的控制,不用反馈回来实际的转速

                       给洗衣机加水时:我们通过来观察水位来确定什么时候关掉水龙头

    (所以,简单的说:就是看有没有反馈:开环没有,闭环有,对于用到机器上来说,每一件事都是有反馈的,只是情况不同而已,当反馈是人自己来判断的话,那么这个系统就是开环的,如果反馈是机器自己来判断的话,那么这个系统就是闭环的)                   



    从整体的角度来看:

    主控程序+按键+步进电机


    主控程序(test.c)

    #include "sys.h"
    #include "usart.h"		
    #include "delay.h"	
    #include "led.h" 
    #include "key.h"
    #include "motor.h"
    
    int main(void)
    {		 
    	u8 t;	  
    	Stm32_Clock_Init(9); 	//系统时钟设置
    	delay_init(72);	     	//延时初始化 
    	LED_Init();		  	 	//初始化与LED连接的硬件接口
    	KEY_Init();          	//初始化与按键连接的硬件接口
    	LED0=0;					//点亮LED
    	MOTOR_Init();
    	while(1)
    	{
    		MOTOR();
    	}		 
    }


    整体截图:

     


    然后接下来就是:led.c

    #include "sys.h"   
    #include "led.h"
    //	 	    
    //LED IO初始化
    void LED_Init(void)
    {
    	RCC->APB2ENR|=1<<2;    //使能PORTA时钟	   	 
    	RCC->APB2ENR|=1<<5;    //使能PORTD时钟	   	 
    	GPIOA->CRH&=0XFFFFFFF0; 
    	GPIOA->CRH|=0X00000003;//PA8 推挽输出   	 
        GPIOA->ODR|=1<<8;      //PA8 输出高
    											  
    	GPIOD->CRL&=0XFFFFF0FF;
    	GPIOD->CRL|=0X00000300;//PD.2推挽输出
    	GPIOD->ODR|=1<<2;      //PD.2输出高 
    }
    
    led.h

    #ifndef __LED_H
    #define __LED_H	 
    #include "sys.h"
    						  
    // 	   
    
    //LED端口定义
    #define LED0 PAout(8)	// PA8
    #define LED1 PDout(2)	// PD2	
    
    void LED_Init(void);	//初始化		 				    
    #endif
    

    然后就是:key.c

    #include "key.h"
    #include "delay.h"
    //	 
    //本程序只供学习使用,未经作者许可,不得用于其它任何用途
    //ALIENTEK Mini STM32开发板
    //按键输入 驱动代码		   
    //正点原子@ALIENTEK
    //技术论坛:www.openedv.com
    //修改日期:2014/3/06
    //版本:V1.0
    //版权所有,盗版必究。
    //Copyright(C) 广州市星翼电子科技有限公司 2009-2019
    //All rights reserved									   
    //	 
     	    
    //按键初始化函数 
    //PA0.15和PC5 设置成输入
    void KEY_Init(void)
    {
    	RCC->APB2ENR|=1<<2;     //使能PORTA时钟
    	RCC->APB2ENR|=1<<4;     //使能PORTC时钟
    	JTAG_Set(SWD_ENABLE);	//关闭JTAG,开启SWD
    	GPIOA->CRL&=0XFFFFFFF0;	//PA0设置成输入	  
    	GPIOA->CRL|=0X00000008;   
    	GPIOA->CRH&=0X0FFFFFFF;	//PA15设置成输入	  
    	GPIOA->CRH|=0X80000000; 			 
    	GPIOA->ODR|=1<<15;	   	//PA15上拉,PA0默认下拉
    	GPIOC->CRL&=0XFF0FFFFF;	//PC5设置成输入	  
    	GPIOC->CRL|=0X00800000;   
    	GPIOC->ODR|=1<<5;	   	//PC5上拉 
    } 
    //按键处理函数
    //返回按键值
    //mode:0,不支持连续按;1,支持连续按;
    //返回值:
    //0,没有任何按键按下
    //KEY0_PRES,KEY0按下
    //KEY1_PRES,KEY1按下
    //WKUP_PRES,WK_UP按下 
    //注意此函数有响应优先级,KEY0>KEY1>WK_UP!!
    u8 KEY_Scan(u8 mode)
    {	 
    	static u8 key_up=1;//按键按松开标志
    	if(mode)key_up=1;  //支持连按		  
    	if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
    	{
    		delay_ms(10);//去抖动 
    		key_up=0;
    		if(KEY0==0)return KEY0_PRES;
    		else if(KEY1==0)return KEY1_PRES;
    		else if(WK_UP==1)return WKUP_PRES; 
    	}else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1; 	     
    	return 0;// 无按键按下
    }
    

    key.h

    #ifndef __KEY_H
    #define __KEY_H	 
    #include "sys.h"
    //	 
    //本程序只供学习使用,未经作者许可,不得用于其它任何用途
    //ALIENTEK Mini STM32开发板
    //按键输入 驱动代码		   
    //正点原子@ALIENTEK
    //技术论坛:www.openedv.com
    //修改日期:2014/3/06
    //版本:V1.0
    //版权所有,盗版必究。
    //Copyright(C) 广州市星翼电子科技有限公司 2009-2019
    //All rights reserved									   
    //	 
    
    #define KEY0_PRES	1		//KEY0按下
    #define KEY1_PRES	2		//KEY1按下
    #define WKUP_PRES	3		//WK_UP按下
    
    #define KEY0  PCin(5)   	//PC5
    #define KEY1  PAin(15)	 	//PA15 
    #define WK_UP PAin(0)	 	//PA0  WK_UP
    	 
    void KEY_Init(void);		//IO初始化
    u8 KEY_Scan(u8 mode);		//按键扫描函数
    #endif
    

    接下来就是:motor.c

    #include "motor.h"
    #include "delay.h"
    //	 
    //电机初始化函数
    //PA0.15和PC5 设置成输入
    void MOTOR_Init(void)
    {
    	RCC->APB2ENR|=1<<2;     //使能PORTA时钟
    	
    	GPIOA->CRL&=0XFFFF0000;	//PA0设置成输出	  
    	GPIOA->CRL|=0X00003333;
    	//小车左轮
    	
    	
    	GPIOA->ODR|=0<<0;	   	//PA0上拉
    	GPIOA->ODR|=0<<1;	   	//PA1上拉
    	GPIOA->ODR|=0<<2;	   	//PA2上拉
    	GPIOA->ODR|=0<<3;	   	//PA3上拉 
    	
    	
    	RCC->APB2ENR|=1<<4;     //使能PORTC时钟
        //小车右轮
    	GPIOC->CRL&=0X00FFFFFF; //PC6,7
    	GPIOC->CRL|=0X33000000;
    	GPIOC->CRH&=0XFFFFFF00; //PC8,9
    	GPIOC->CRH|=0X00000033;
    	
    	GPIOC->ODR|=0<<6;	   	//PC6上拉
    	GPIOC->ODR|=0<<7;	   	//PC7上拉
    	GPIOC->ODR|=0<<8;	   	//PC7上拉
    	GPIOC->ODR|=0<<9;	   	//PC5上拉 
    } 
    
    
    
    void MOTOR(void)		//IO初始化
    {
    	while(1)
    	{
    //		L_A1 = 1; L_A2 = 0; L_A3 = 0; L_A4 = 0;
    //		delay_ms(10);
    //		L_A1 = 1; L_A2 = 1; L_A3 = 0; L_A4 = 0;
    //		delay_ms(10);
    //        L_A1 = 0; L_A2 = 1; L_A3 = 0; L_A4 = 0; 
    //		delay_ms(10);
    //		L_A1 = 0; L_A2 = 1; L_A3 = 1; L_A4 = 0; 
    //		delay_ms(10);
    //		
    //		
    //		L_A1 = 0; L_A2 = 0; L_A3 = 1; L_A4 = 0; 
    //		delay_ms(10);
    //		L_A1 = 0; L_A2 = 0; L_A3 = 1; L_A4 = 1; 
    //		delay_ms(10);
    //		L_A1 = 0; L_A2 = 0; L_A3 = 0; L_A4 = 1; 
    //		delay_ms(10);
    //		L_A1 = 1; L_A2 = 0; L_A3 = 0; L_A4 = 1; 
    //		delay_ms(10);
    		
    		
    		L_A1 = 1; L_A3 = 0; L_A2 = 0; L_A4 = 0;
    		delay_ms(10);
    		
                    L_A1 = 0; L_A3 = 1; L_A2 = 0; L_A4 = 0; 
    		delay_ms(10);
    		
    		
    		L_A1 = 0; L_A3 = 0; L_A2 = 1; L_A4 = 0; 
    		delay_ms(10);
    		L_A1 = 0; L_A3 = 0; L_A2 = 0; L_A4 = 1; 
    		delay_ms(10);
    		
    	}
    }
    

    motor.h

    #ifndef __MOTOR_H
    #define __MOTOR_H	 
    #include "sys.h"
    #include "delay.h"
    //	 
    //All rights reserved									   
    //	 
    
    #define L_A1  PAout(0)   	//PA0               
    #define L_A2  PAout(1)	 	//PA1               
    #define L_A3  PAout(2)   	//PA2                
    #define L_A4  PAout(3)	 	//PA3
    
    #define R_A1  PCout(6)   	//PC6 
    #define R_A2  PCout(7)	 	//PC7 
    #define R_A3  PCout(8)   	//PC8
    #define R_A4  PCout(9)	 	//PC9
    
    void MOTOR_Init(void);
    void MOTOR(void);
    	 
    #endif
    


    好了,以上就是我们的程序了,,,,,


    截图:

    如上,是我们要加载的程序



    本文大部分实例借鉴与:原子stm32

    展开全文
  • 51单片机之步进电机实验

    千次阅读 2019-05-19 19:30:38
    1.步进电机图片 2.步进电机介绍 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个...

    1.步进电机图片

     

    2.步进电机介绍

    步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得步进电机在速度、位置等控制领域的控制操作非常简单。虽然步进电机应用广泛,但它并不像普通的直流和交流电机那样在常规状态下使用,它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用.因此.用好步进电机也非易事,它涉及机械、电机、电子及计算机等许多专业知识。

    3.步进电机分类

    (1)永磁式(PM)。一般为二相,转矩和体积较小,步距角一般为7.5°或15°。

    (2)反应式(VR)。一般为三相,可实现大转矩输出.步距角一般为1.5°,但噪声和振动都很大。在欧美等发达国家20世纪80年代已经淘汰。

    (3)混合式(HB)。指混合了永磁式和反应式的优点。它又分为二相和五相,二相步距角一般为180°,而五相步距角一般为0.72°。这种步进电机的应用最为广泛。

    4.技术指标

        (1)步进电机的静态指标

        ①相数—电机内部的线圈组数。目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同。一般二相电机的步距角为0.9°/1.8°,三相为0.75°/1.5°、五相为0.36°/0.72°。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求.如果使用细分驱动器,则“相数”将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。

        ②步距角—表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这个步距角可称为“电机固有步距角”,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。

        ③拍数—完成一个磁场周期性变化所需脉冲数或导电状态.或指电机转过一个步距角所需脉冲数。以四相电机为例,有四相四拍运行方式,即AB-BC-CD-DA-AB:四相八拍运行方式,即A-AB-B-BC-C-CD-D-DA-A

        ④定位转矩—电机在不通电状态下,转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成).

    ⑥保持转矩—步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成了衡量步进电机最重要参数之一。比如,当人们说2N·m的步进电机时,在没有特殊说明的情况下,是指保持转矩为2N·m的步进电机。

    (2)步进电机的动态指标

    ①步距角精度—步进电机每转过一个步距角的实际值与理论值的误差,用百分比表示:误差/步距角X100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。

    ②失步—电机运转时运转的步数不等于理论上的步数,称为失步。

    ③失调角—转子齿轴线偏移定子齿轴线的角度.电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。

    最大空载起动频率—电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。

    最大空载运行频率—电机在某种驱动形式、电压及额定电流下,电机不带负载的最高转速频率。

    运行矩频特性—电机在某种测试条件下,测得运行中输出力矩与频率关系的曲线称为运行矩频特性。它是电机诸多动态曲线中最重要的,也是电机选择的根本依据,如图所示。

    电机一但选定,电机的静力矩确定,而动态力矩却不然.电机的动态力矩取决于电机运行时的平均电流(而非静态电流),平均电流越大,电机输出力矩越大.即电机的频率特性越硬。

      

     

    其中.曲线3电流最大或电压最高;曲线I电流最小或电压最低,曲线与负载的交点为负载的最大速度点。要使平均电流大,尽可能提高驱动电压,或采用小电感大电流的电机。      

    ④电机的共振点—步进电机均有固定的共振区域,其共振区一般在50r/min-80r/min或在180r/min左右。电机驱动电压越高,电机电流越大,负载越轻,电机体积越小。则共振区向上偏移,反之亦然。为使电机输出电矩大、不失步且整个系统的噪声降低,一般工作点均应偏移共振区较多。因此,在使用步进电机时应避开此共振区。     

    5.步进电机工作原理

    步进电机是一种将电脉冲转换成相应角位移或线位移的电磁机械装置。它具有快速启、停能力,在电机的负荷不超过它能提供的动态转矩时,可以通过输入脉冲来控制它在一瞬间的启动或停止。步进电机的步距角和转速只和输入的脉冲频率有关,和环境温度、气压、振动无关,也不受电网电压的波动和负载变化的影响。因此,步进电机多应用在需要精确定位的场合。  

    (1)工作原理

    步进电机有三线式、五线式和六线式,但其控制方式均相同,都要以脉冲信号电流来驱动.假设每旋转一圈需要200个脉冲信号来励磁,可以计算出每个励磁信号能使步进电机前进1.8°。其旋转角度与脉冲的个数成正比。步进电动机的正、反转由励磁脉冲产生的顺序来控制。六线式四相步进电机是比较常见的,它的控制等效电路如下图所示。它有4条励磁信号引线A,/A,B,/B 通过控制这4条引线上励磁脉冲产生的时刻,即可控制步进电机的转动.每出现一个脉冲信号,步进电机只走一步。因此,只要依序不断送出脉冲信号,步进电机就能实现连续转动。   

     

    (2)励磁方式

    步进电机的励磁方式分为全步励磁和半步励磁两种。其中全步励磁又有一相励磁和二相励磁之分;半步励磁又称一二相励磁。假设每旋转一圈需要200个脉冲信号来励磁,可以计算出每个励磁信号能使步进电动机前进1.8°。简要介绍如下。

    ①一相励磁—在每一瞬间,步进电机只有一个线圈导通.每送一个励磁信号,步进电机旋转1.8,这是三种励磁方式中最简单的一种。

    其特点是:精确度好、消耗电力小,但输出转矩最小,振动较大。如果以该方式控制步进电机正转,对应的励磁顺序如下表所示。若励磁信号反向传送,则步进电机反转。表中的1和0表示送给电机的高电平和低电平。

     

    ②二相励磁—在每一瞬间,步进电动机有两个线圈同时导通。每送一个励磁信号,步进电机旋转1.8。

    其特点是:输出转矩大,振动小,因而成为目前使用最多的励磁方式。如果以该方式控制步进电机正转,对应的励磁顺序见下表。若励磁信号反向传送,则步进电机反转。

     

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

    其特点是:分辨率高,运转平滑,故应用也很广泛。如果以该方式控制步进电机正转,对应的励磁顺序见下表。若励磁信号反向传送,则步进电机反转。

     

    6.步进电机的驱动

    步进电机的驱动可以选用专用的电机驱动模块,如L298, FF5754等,这类驱动模块接口简单,操作方便,它们既可驱动步进电机,也可驱动直流电机。除此之外,还可利用三极管自己搭建驭动电路。不过这样会非常麻烦,可靠性也会降低。另外,还有一种方法就是使用达林顿驱动器ULN2003,该芯片单片最多可一次驱动八线步进电机,当然如果只有四线或六线制的也是没有问题的。

    首先我们看一下电路原理图

     本实验采用四线双极性步进电机,该电机与TC1117连接如上图所示,M_IN为单片机控制口,M_OUT为电机接入口,其中M_IN分别控制步进电机的相序A,B.

    TC1117芯片工作逻辑真值表:

    开发板上使用的 4线双极性步进电机,其有两相A,B,每个绕组有两根线,A+和A-B+和 B-,运行方式可以是A+ —A-—B+—B-,如果想换个方向运行,可以是 A- —A+—B—B+。

    步进电机的四个引脚A+、A-、B+、B-分别连接到OUA、OUTB、OUTC、OUTD四个引脚

     

    实际物理连接图如下:

     

     

    示例程序为:

     

       #include "reg52.h"
       
       typedef unsigned char u8;
       typedef unsigned int u16;
    
       sbit MOTOA = P1^0; //A+引脚
       sbit MOTOB = P1^1; //A-引脚
       sbit MOTOC = P1^2; //B+引脚
       sbit MOTOD = P1^3; //B-引脚
    
       #define SPEED 60000
    
       void delay(u16 i) //延时函数
       {
       while(i --);
       }
    
       void main()
       {
    
       P1 = 0x00; //电机处于待机状态
       while(1)
       {
       MOTOA = 1; //A+状态
       MOTOB = 0;
       MOTOC = 1;
       MOTOD = 1;
       delay(SPEED); //延时
    
       MOTOA = 0; //A-状态
       MOTOB = 1;
       MOTOC = 1;
       MOTOD = 1;
       delay(SPEED); //延时
    
       MOTOA = 1; //B+状态
       MOTOB = 1;
       MOTOC = 1;
       MOTOD = 0;
       delay(SPEED); //延时
    
       MOTOA = 1; //B-状态
       MOTOB = 1;
       MOTOC = 0;
       MOTOD = 1;
       delay(SPEED); //延时
    
       }
       }
    
    
    
    
    

     

    上例程序驱动步进电机的方向为: A+ —A-—B+—B-,

    如果想换个方向运行,也就是 A- —A+—B—B+,可以使用以下程序:

       #include "reg52.h"
       
       typedef unsigned char u8;
       typedef unsigned int u16;
    
       sbit MOTOA = P1^0; //A+引脚
       sbit MOTOB = P1^1; //A-引脚
       sbit MOTOC = P1^2; //B+引脚
       sbit MOTOD = P1^3; //B-引脚
    
       #define SPEED 60000
    
       void delay(u16 i) //延时函数
       {
       while(i --);
       }
    
       void main()
       {
    
       P1 = 0x00; //电机处于待机状态
       while(1)
       {
       MOTOA = 0; //A-状态
       MOTOB = 1;
       MOTOC = 1;
       MOTOD = 1;
       delay(SPEED); //延时
    
       MOTOA = 1; //A+状态
       MOTOB = 0;
       MOTOC = 1;
       MOTOD = 1;
       delay(SPEED); //延时
    
       MOTOA = 1; //B-状态
       MOTOB = 1;
       MOTOC = 0;
       MOTOD = 1;
       delay(SPEED); //延时
    
       MOTOA = 1; //B+状态
       MOTOB = 1;
       MOTOC = 1;
       MOTOD = 0;
       delay(SPEED); //延时
    
       }
       }
    
    
    
    
    

    如果想两个方向轮流运行,可以将上面两个程序结合在一块使用。

    展开全文
  • 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这...

    1.步进电机?

    1.1什么是步进电机?

    步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

    1.2步进电机分哪几种?

    步进电机分三种:永磁式(PM) ,反应式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度 或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。这种步进电机的应用最为广泛。

    1.3什么是保持转矩(HOLDING TORQUE)?

    保持转矩(HOLDING TORQUE)是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m的步进电机。

    1.4步进电机精度为多少?是否累积?

    一般步进电机的精度为步进角的3-5%,且不累积。

    1.5为什么步进电机的力矩会随转速的升高而下降?

    当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。

    1.6为什么步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声?

    步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。在有负载的情况下,启动频率应更低。如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。

    1.7如何克服两相混合式步进电机在低速运转时的振动和噪声?

    步进电机低速转动时振动和噪声大是其固有的缺点,一般可采用以下方案来克服:
    A.如步进电机正好工作在共振区,可通过改变减速比等机械传动避开共振区;
    B.采用带有细分功能的驱动器,这是最常用的、最简便的方法;
    C.换成步距角更小的步进电机,如三相或五相步进电机;
    D.换成交流伺服电机,几乎可以完全克服震动和噪声,但成本较高;
    E.在电机轴上加磁性阻尼器,市场上已有这种产品,但机械结构改变较大。

    1.8细分驱动器的细分数是否能代表精度?

    步进电机的细分技术实质上是一种电子阻尼技术(请参考有关文献),其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。比如对于步进角为1.8°的两相混合式步进电机,如果细分驱动器的细分数设置为4,那么电机的运转分辨率为每个脉冲0.45°,电机的精度能否达到或接近0.45°,还取决于细分驱动器的细分电流控制精度等其它因素。不同厂家的细分驱动器精度可能差别很大;细分数越大精度越难控制。

    1.9 四相混合式步进电机与驱动器的串联接法和并联接法有什么区别?

    四相混合式步进电机一般由两相驱动器来驱动,因此,连接时可以采用串联接法或并联接法将四相电机接成两相使用。串联接法一般在电机转速较的场合使用,此时需要的驱动器输出电流为电机相电流的0.7倍,因而电机发热小;并联接法一般在电机转速较高的场合使用(又称高速接法),所需要的驱动器输出电流为电机相电流的1.4倍,而电机发热较大。

    1.10如何确定步进电机驱动器的直流供电电源?

    A.电压的确定
    混合式步进电机驱动器的供电电源电压一般是一个较宽的范围(比如IM483
    的供电电压为12~48VDC),电源电压通常根据电机的工作转速和响应要
    求来选择。如果电机工作转速较高或响应要求较快,那么电压取值也高,但
    注意电源电压的纹波不能超过驱动器的最大输入电压,否则可能损坏驱动器。
    B.电流的确定
    供电电源电流一般根据驱动器的输出相电流I来确定。如果采用线性电源,
    电源电流一般可取I的1.1~1.3倍;如果采用开关电源,电源电流一般可
    取I 的1.5~2.0倍。

    1.11混合式步进电机驱动器的脱机信号FREE一般在什么情况下使用?

    当脱机信号FREE为低电平时,驱动器输出到电机的电流被切断,电机转子处于自由状态(脱机状态)。在有些自动化设备中,如果在驱动器不断电的情况下要求直接转动电机轴(手动方式),就可以将FREE信号置低,使电机脱机,进行手动操作或调节。手动完成后,再将FREE信号置高,以继续自动控制。

    1.12如果用简单的方法调整两相步进电机通电后的转动方向?

    只需将电机与驱动器接线的A+和A-(或者B+和B-)对调即可。

    2 感应子式步进电机工作原理

    下面先叙述三相反应式步进电机原理.电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。
    0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A’与齿5相对齐,(A’就是A,齿5就是齿1)下面是定转子的展开图:
    在这里插入图片描述

    2.1 动作阐述

    如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。
    如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。
    如C相通电,A,B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐。
    如A相通电,B,C相不通电,齿4与A对齐,转子又向右移过1/3て
    这样经过A、B、C、A分别通电状态,齿4(即齿1前一齿)移到A相,电机转子向右转过一个齿距,如果不断地按A,B,C,A……通电,电机就每步(每脉冲)1/3て,向右旋转。如按A,C,B,A……通电,电机就反转。
    由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。
    不过,出于对力矩、平稳、噪音及减少角度等方面考虑。往往采用A-AB-B-BC-C-CA-A这种导电状态,这样将原来每步1/3て改变为1/6て。甚至于通过二相电流不同的组合,使其1/3て变为1/12て,1/24て,这就是电机细分驱动的基本理论依据。
    不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1。并且导电按一定的相序电机就能正反转被控制——这是步进电机旋转的物理条件。只要符合这一条件我们理论上可以制造任何相的步进电机,出于成本等多方面考虑,市场上一般以二、三、四、五相为多。

    2.2 动作阐述

    感应子式步进电机与传统的反应式步进电机相比,结构上转子加有永磁体,以提供软磁材料的工作点,而定子激磁只需提供变化的磁场而不必提供磁材料工作点的耗能,因此该电机效率高,电流小,发热低。因永磁体的存在,该电机具有较强的反电势,其自身阻尼作用比较好,使其在运转过程中比较平稳、噪音低、低频振动小。
    感应子式步进电机某种程度上可以看作是低速同步电机。一个四相电机可以作四相运行,也可以作二相运行。(必须采用双极电压驱动),而反应式电机则不能如此。例如:四相,八相运行(A-AB-B-BC-C-CD-D-DA-A)完全可以采用二相八拍运行方式.
    一个二相电机的内部绕组与四相电机完全一致,小功率电机一般直接接为二相,而功率大一点的电机,为了方便使用,灵活改变电机的动态特点,往往将其外部接线为八根引线(四相),这样使用时,既可以作四相电机使用,可以作二相电机绕组串联或并联使用。
    感应子式步进电机以相数可分为:二相电机、三相电机、四相电机、五相电机等。以机座号(电机外径)可分为:42BYG(BYG为感应子式步进电机代号)、57BYG、86BYG、110BYG、(国际标准),而像70BYG、90BYG、130BYG等均为国内标准。

    2.3 步进电机术语1

    相数:产生不同对极N、S磁场的激磁线圈对数。常用m表示。
    拍数:完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A.
    步距角:对应一个脉冲信号,电机转子转过的角位移用θ表示。θ=360度(转子齿数J运行拍数),以常规二、四相,转子齿为50齿电机为例。四拍运行时步距角为θ=360度/(504)=1.8度(俗称整步),八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。
    定位转矩:电机在不通电状态下,电机转子自身的锁定力矩(由磁场齿形的谐波以及机械误差造成的)
    静转矩:电机在额定静态电作用下,电机不作旋转运动时,电机转轴的锁定力矩。此力矩是衡量电机体积(几何尺寸)的标准,与驱动电压及驱动电源等无关。
    虽然静转矩与电磁激磁安匝数成正比,与定齿转子间的气隙有关,但过份采用减小气隙,增加激磁安匝来提高静力矩是不可取的,这样会造成电机的发热及机械噪音。

    2.4 步进电机术语2

    1、步距角精度:
    步进电机每转过一个步距角的实际值与理论值的误差。用百分比表示:误差/步距角*100%。不同运行拍数其值不同,四拍运行时应在5%之内,八拍运行时应在15%以内。
    2、失步:
    电机运转时运转的步数,不等于理论上的步数。称之为失步。
    3、失调角:
    转子齿轴线偏移定子齿轴线的角度,电机运转必存在失调角,由失调角产生的误差,采用细分驱动是不能解决的。
    4、最大空载起动频率:
    电机在某种驱动形式、电压及额定电流下,在不加负载的情况下,能够直接起动的最大频率。
    5、最大空载的运行频率:
    电机在某种驱动形式,电压及额定电流下,电机不带负载的最高转速频率。
    6、运行矩频特性:
    电机在某种测试条件下测得运行中输出力矩与频率关系的曲线称为运行矩频特性,这是电机诸多动态曲线中最重要的,也是电机选择的根本依据

    2.4 步进电机接线

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 步进电机原理

    万次阅读 2018-05-25 15:42:48
    步进电机也叫步进器,它利用电磁学原理,将电能转换为机械能,人们早在20世纪20年代就开始使用这种电机。随着嵌入式系统(例如打印机、磁盘驱动器、玩具、雨刷、震动寻呼机、机械手臂和录像机等)的日益流行,步进电机...
  • 步进电机全套

    2020-07-22 23:32:50
    包含控制步进电机的正反转控制程序,原理图,使用手册,全套资料。
  • Arduino基础入门篇26—步进电机

    万次阅读 多人点赞 2019-11-04 15:04:25
    本篇使用ULN2003驱动五线四相减速步进电机
  • 最近一个项目用到步进电机,老板叫我选一下用什么样的。。以前没有接触过,开始上某宝淘,一头雾水,不知该选啥样的。他们有一个重要的指标就是扭矩的大小,单位是N·m,物理知识基本忘了,这是个什么鬼?然后只能...
  • 42HS48步进电机实验

    2020-08-08 10:23:23
    ■ 前言 ...在本实验中,将根据 使用高精度旋转编码器BH60测量步进电机转动角度 文章中的方法对本款测试步进电机的旋转精度进行测量。   01初步运动测试 1.实验方案1 实验方案采用 42HS48EIS步进
  • 步进电机步进电机驱动器使用说明

    万次阅读 多人点赞 2017-12-31 19:00:35
    上一篇博文简介了一下步进电机控制程序的配置和思路。这一篇就介绍步进电机驱动器的简介以及使用方法。 这里我们以TB6600步进电机驱动器为例,进行介绍。其他型号的驱动器也大同小异。如图是我们使用的步进电机驱动...
  • STM32驱动步进电机

    万次阅读 多人点赞 2017-03-26 15:57:22
    步进电机是将电脉冲信号转变为角位移或线位移,可以通过控制脉冲来控制,因此比一般的电机更精准。这篇文章将会讲述我对四线两项步进电机的调试经验。1.步进电机以及THB7128的接线THB7128步进电机驱动有两个接线口,...
  • 步进电机失步(丢步)的原因和对策步进电机可以根据脉冲数和脉冲频率来对电机实现开环控制位置和速度,是一种便宜、简单好用的控制类电机,在自动化控制领域得到越来越广泛的应用。但由于步进电机不是闭环控制,选型...
  • 步进电机的细分控制原理

    万次阅读 多人点赞 2017-10-21 11:24:07
    看完第一篇文章应该对步进电机的结构有所了解了,下面将详细介绍一下步进电机的细分控制。  无论什么样的电机,控制方法和其结构是息息相关的。通过上一篇文章之后,我们知道按一定的顺序给步进电机的各相轮流通电...
  • 单片机控制步进电机

    万次阅读 多人点赞 2019-06-06 19:07:38
    用单片机控制步进电机正转 反转 加速 减速;由LCD1602实时显示步进电机的状态;F-正转,B-反转;数字越大,转速越大; 仿真原理图如下: MCU和LCD1602显示模块: ULN2803驱动和步进电机模块: C语言代码如下...
  • Arduino(2560)控制两个步进电机通过控制器

    万次阅读 多人点赞 2018-05-01 14:41:33
    Arduino 2560控制两个步进电机用arduino和步进电机控制器驱动两个步进电机,具体的接线过程和怎样连接都在图片上。准备工具:两个步进电机(我用的是J42):Arduino板(我用的是2560):步进电机控制器:电源适配器:...
  • 基于STM32F4单片机对步进电机的控制(有代码)

    万次阅读 多人点赞 2019-01-05 11:13:08
    步进电机是将电脉冲控制信号转变为角位移或线位移的一种常用的数字控制执行元件,又称为脉冲电机。在驱动电源的作用下,步进电机受到脉冲的控制,其转子的角位移量和速度严格地与输入脉冲的数量和脉冲频率成正比。...
  • 单片机控制步进电机-电路连接

    千次阅读 多人点赞 2019-02-22 21:26:14
    单片机控制步进电机-线路连接 说明:如何利用单片机去控制步进电机?本案例讲解的内容是硬件连接部分,采用常用的电子器件去实现单片机控制步进电机的功能。后续会分别讲解单片机程序,S曲线生成方法,上位机等...
  • 今天给大家分享一个 初级版本的步进电机的控制方法,用到的步进电机是4线两相的42步进电机 如下图: 步进电机驱动选用的是这款 TB6600 供电选用了12V的稳压电源 最小系统板供电是从Jlink上直接引出 MCU是 stm...
  • Arduino学习笔记(5)-- 步进电机转速和方向控制

    万次阅读 多人点赞 2019-05-25 11:26:53
    本文尝试用Arduino开发版控制42步进电机,搭配通用的步进电机驱动器,实现对步进电机的转速控制和方向控制。 原材料: Arduino开发板及附件 42步进电机和配套驱动器 电源 接线方式:共阴 总览 2、42步进电机...
  • 步进电机S(SigMoid)曲线加减速【查表法】

    万次阅读 多人点赞 2019-01-25 17:40:38
     首先在本设计中采用的步进电机控制方案为,单片机+16位定时器比较匹配中断(最好是16位及其以上)+步进电机驱动+42步进电机。较高的定时器精度能够实现更好的控制。  在步进电机控制中往...
1 2 3 4 5 ... 20
收藏数 7,415
精华内容 2,966
关键字:

步进电机