当前位置:文档之家› 步进电机控制

步进电机控制

步进电机控制文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256)杭州电子科技大学电子系统设计综合实验设计报告实验名称: 步进电机控制实验序号: 4小组号: 4A姓名学号:指导教师: 黄继业2015年1月4日一.引言:步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。

通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB)。

实验中使用的是永磁式步进电机24BY 型,下图是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5 根引出线。

要使用步进电机转动,只要轮流给各引出端通电即可。

将COM 端标识为C,只要AC、A C、BC、B C,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将COM 端接正电源,那么只要用开关元件(如三极管),将A、A 、B、B 轮流接地。

二.实验要求:1.(基本):控制四相六线式步进电机的转动(四相八拍方式)2.(基本):显示步进电机的转动圈数、角度和方向三.(扩展):用非接触的方式实时监测步进电机的工作状态四.实验器材清单:名称型号数量驱动芯片L2981片霍尔元件cs31441个二极管80508个电容100uf、各2个电阻2K1个四:实验电路原理图1:驱动电路原理图:2:驱动电路工作原理:L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。

是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。

OUT1、OUT2和OUT3、OUT4之间分别接两电机。

IN1、IN2、IN3、IN4引脚从单片机接输入控制电平,控制电机正反转。

3:L298控制单双八拍的逻辑表:4.霍尔模块电路图4:霍尔模块工作原理:霍尔传感器是对磁敏感的传感元件,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。

将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。

使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。

如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。

根据这些输出的脉冲可以实现实时监测电机的工作状态。

5.实验所用的程序代码:源码目录:USER:STM32: (库文件)Driver:/*要求:控制步进电机转动,8拍显示步进电机转动圈数,角度,方向。

非接触方式实时监测*/#include ""#include ""#include ""#include ""#include ""u8 i,j,keynum,direction=0;u16Speedtime,loop_num1=0,loop_num2=0,interrupt_num=0,interrupt_speed=0; double angle=0;EXTI_InitTypeDef EXTI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;void EXTIX_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);= GPIO_Pin_15;= GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOD, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource15);=EXTI_Line15;= EXTI_Mode_Interrupt;= EXTI_Trigger_Rising;= ENABLE;EXTI_Init(&EXTI_InitStructure);= EXTI15_10_IRQn;= 0x0F;= 0x0F;= ENABLE;NVIC_Init(&NVIC_InitStructure);}void EXTI15_10_IRQHandler(void){interrupt_num ++; .");lcd_6x8(0,3,"Loop Num1:");lcd_6x8(0,4,"Loop Num2:");lcd_6x8(0,5,"Angle:");lcd_6x8(0,7,"Speed:");lcd_6x8(60,7,"N/s");while(1){keynum=New_KEY_Scan();switch(keynum){case 1:direction++;if(direction==4)direction=0;break;case 2:Speedtime-=100;if(Speedtime==600)Speedtime=900;break;default:break;}lcd_6x8_num(45,7,interrupt_speed); //每秒转速lcd_6x8_num(100,7,interrupt_num);if(direction==0){lcd_6x8_double(45,5,angle);lcd_6x8_num(70,3,loop_num1);lcd_6x8_num(70,4,loop_num2);}else if(direction==1){Motor_8(Speedtime);i++;angle= * i;if(i==50) //达到一圈{i=0;loop_num1++;}lcd_6x8_double(45,5,angle);lcd_6x8_num(70,3,loop_num1);lcd_6x8(0,2,"Forward direction ! "); }else if(direction==2){lcd_6x8_double(45,5,angle);lcd_6x8_num(70,3,loop_num1);lcd_6x8_num(70,4,loop_num2);}else if(direction==3){Motor_8_back(Speedtime);j++;angle= * j;if(j==50){j=0;loop_num2++;}lcd_6x8_double(45,5,angle);lcd_6x8_num(70,4,loop_num2);lcd_6x8(0,2,"Backward direction ! ");}}}void TIM3_IRQHandler(void){//static u16 a=0;if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源{TIM_ClearITPendingBit(TIM3, TIM_IT_Update); //清除TIMx的中断待处理位:TIM 中断源interrupt_speed=interrupt_num ; // N/sinterrupt_num=0;}}五:实验测试结果本次实验最后验收的效果是比较好的,基本上没有出错,完成了所有要求的内容,测量的结果也比较精确。

六:设计总结本次实验的设计主要体现在驱动电路上,本来准备是采用ULN2003来作为驱动芯片,后来查了一下资料发现ULN2003,只能向它灌入电流,输出为高阻态,基本没输出电流。

它一般用来吸收电流的。

比如数码管驱动,或者两相五线、两相六线的步进电机,这种步进电机有一个或两个公共端可以接电源正极,驱动电机,电流从其他各引线经过ULN2003流到地线上。

通过控制ULN2003的输出状态来控制电机的节拍。

但是对于本次实验用的两相四线的电机不太合适,所以最后采用L298来驱动,最后驱动的效果也是比较好的。

拓展模块则采用cs3144霍尔元件来实现。

(本次实验黄涛同学负责编写程序部分,郑康佳、张永杰同学负责做驱动电路等硬件部分,黄涛负责最后测量与修改,实验报告最终由郑康佳同学完成)。

相关主题