预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

杭州电子科技大学 电子系统设计综合实验 设计报告 实验名称:步进电机控制 实验序号:4 小组号:4A 姓名学号:张永杰13083137 黄涛13083612 郑康佳13083411 指导教师:黄继业 2015年1月4日 引言: 步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。常见的步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB)。实验中使用的是永磁式步进电机24BY型,下图是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5根引出线。要使用步进电机转动,只要轮流给各引出端通电即可。将COM端标识为C,只要AC、AC、BC、BC,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将COM端接正电源,那么只要用开关元件(如三极管),将A、A、B、B轮流接地。 实验要求: (基本):控制四相六线式步进电机的转动(四相八拍方式) (基本):显示步进电机的转动圈数、角度和方向 (扩展):用非接触的方式实时监测步进电机的工作状态 实验器材清单: 名称型号数量驱动芯片L2981片霍尔元件cs31441个二极管80508个电容100uf、0.1uf各2个电阻2K1个四:实验电路原理图 1:驱动电路原理图: 2:驱动电路工作原理: L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。OUT1、OUT2和OUT3、OUT4之间分别接两电机。IN1、IN2、IN3、IN4引脚从单片机接输入控制电平,控制电机正反转。 3:L298控制单双八拍的逻辑表: A电机B电机IN1IN2IN3IN4010001100010101010001001000101014.霍尔模块电路图 4:霍尔模块工作原理: 霍尔传感器是对磁敏感的传感元件,这种传感器是一个3端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路(OC)门输出,工作电压范围宽,使用非常方便。将有字面对准自己,三根引脚从左向右分别是Vcc,地,输出。使用霍尔传感器获得脉冲信号,其机械结构也可以做得较为简单,只要在转轴的圆周上粘上一粒磁钢,让霍尔开关靠近磁钢,就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。如果在圆周上粘上多粒磁钢,可以实现旋转一周,获得多个脉冲输出。根据这些输出的脉冲可以实现实时监测电机的工作状态。 5.实验所用的程序代码: 源码目录: USER: main.c STM32:(库文件) Driver: key.c key.h stepmotor.c stepmotor.h key.c key.h TIM3.c TIM3.h 12864.c 12864.h /* 要求: 控制步进电机转动,8拍 显示步进电机转动圈数,角度,方向。 非接触方式实时监测 */ #include"stepmotor.h" #include"TIM3.h" #include"key.h" #include"12864.h" #include"stm32f10x_exti.h" u8i,j,keynum,direction=0; u16Speedtime,loop_num1=0,loop_num2=0,interrupt_num=0,interrupt_speed=0; doubleangle=0; EXTI_InitTypeDefEXTI_InitStructure; GPIO_InitTypeDefGPIO_InitStructure; NVIC_InitTypeDefNVIC_InitStructure; voidEXTIX_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD,&GPIO_InitStructure); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_EXTILineConfig(GP