步进电机控制.docx

上传人:罗晋 文档编号:6192647 上传时间:2020-09-22 格式:DOCX 页数:13 大小:264.04KB
返回 下载 相关 举报
步进电机控制.docx_第1页
第1页 / 共13页
步进电机控制.docx_第2页
第2页 / 共13页
步进电机控制.docx_第3页
第3页 / 共13页
步进电机控制.docx_第4页
第4页 / 共13页
步进电机控制.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《步进电机控制.docx》由会员分享,可在线阅读,更多相关《步进电机控制.docx(13页珍藏版)》请在三一文库上搜索。

1、.杭州电子科技大学电子系统设计综合实验设计报告实验名称 :步进电机控制实验序号 :4小 组 号:4A姓名学号 : 张永杰 13083137黄涛13083612郑康佳13083411指导教师 :黄继业2015年 1 月 4 日.一引言:步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的; 同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。常见的步进电机分三种:永磁式(PM),反应式( VR)和混合

2、式( HB)。实验中使用的是永磁式步进电机24BY 型,下图是该电机的接线图,从图中可以看出,电机共有四组线圈,四组线圈的一个端点连在一起引出,这样一共有5 根引出线。要使用步进电机转动,只要轮流给各引出端通电即可。将COM端标识为 C,只要 AC、A C、BC、B C,轮流加电就能驱动步进电机运转,加电的方式可以有多种,如果将 COM端接正电源,那么只要用开关元件(如三极管),将A、A 、B、B 轮流接地。二实验要求:.1(基本):控制四相六线式步进电机的转动(四相八拍方式)2(基本):显示步进电机的转动圈数、角度和方向三(扩展):用非接触的方式实时监测步进电机的工作状态四实验器材清单:名称

3、型号数量驱动芯片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 电机IN1IN2IN

4、3IN4010001100010101010001001000101014.霍尔模块电路图.4:霍尔模块工作原理:霍尔传感器是对磁敏感的传感元件, 这种传感器是一个 3 端器件,外形与三极管相似,只要接上电源、地,即可工作,输出通常是集电极开路( OC)门输出,工作电压范围宽,使用非常方便。将有字面对准自己,三根引脚从左向右分别是 Vcc,地,输出。使用霍尔传感器获得脉冲信号, 其机械结构也可以做得较为简单, 只要在转轴的圆周上粘上一粒磁钢, 让霍尔开关靠近磁钢, 就有信号输出,转轴旋转时,就会不断地产生脉冲信号输出。 如果在圆周上粘上多粒磁钢, 可以实现旋转一周,获得多个脉冲输出。 根据这些

5、输出的脉冲可以实现实时监测电机的工作状态。5.实验所用的程序代码:源码目录:USER:main.cSTM32: ( 库文件 )Driver:key.ckey.h.stepmotor.cstepmotor.hkey.ckey.hTIM3.cTIM3.h12864.c12864.h/*要求:控制步进电机转动, 8 拍显示步进电机转动圈数,角度,方向。非接触方式实时监测*/#include stepmotor.h#include TIM3.h#include key.h#include 12864.h#include stm32f10x_exti.hu8 i,j,keynum,direction=0

6、;u16Speedtime,loop_num1=0,loop_num2=0,interrupt_num=0,interrupt_speed =0;double angle=0;EXTI_InitTypeDefEXTI_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;.NVIC_InitTypeDefNVIC_InitStructure;void EXTIX_Init(void)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);GPIO_InitStructure.GPIO_Pin = GPI

7、O_Pin_15;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource15);EXTI_InitStructure.EXTI_Line=EXTI_Line15;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interru

8、pt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;.NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x0F;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;NVIC_I

9、nitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);void EXTI15_10_IRQHandler(void)interrupt_num +; /霍尔元件监测到一次 EXTI_ClearITPendingBit(EXTI_Line15);int main()delay_init();EXTIX_Init();KEY_Init();Motor_GPIO_Init();lcd_gpio_init();lcd_init();TIM3_Int_Init(9999,7199); /1s.Speedtime=9

10、00;lcd_6x8(0,0,Motor Test.);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; case2:Speedtime-=100;if(Speedtime=600)Speedtime=900;break; default:bre

11、ak;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=7.2 * i;if(i=50)/达到一圈i=0;loop_num1+;lcd_6x8_double(45,5,angle);lcd_6x8_num(

12、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=7.2 * j;if(j=50)j=0;loop_num2+;lcd_6x8_double(45,5,angle);lcd_6x8_num(70,4,loop_num2);lcd_6x8

13、(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;五:实验测试结果本次实验最后验收的效果是比较好的,基本上没有出错, 完

14、成了所有要求的内容,测量的结果也比较精确。六:设计总结本次实验的设计主要体现在驱动电路上,本来准备是采用ULN2003来作为驱动芯片,后来查了一下资料发现ULN2003 ,只能向它灌入电流,输出为高阻态,基本没输出电流。它一般用来吸收电流的。比如数码管驱动,或者两相五线、两相六线的步进电机,这种步进电机有一个或两个公共端可以接电源正极,驱动电机,电流从其他各引线经过 ULN2003流到地线上。通过控制 ULN2003的输出状态来控制电机的节拍。但是对于本次实验用的两相四线的电机不太合适,所以最后采用 L298 来驱动,最后驱动的效果也是比较好的。拓展模块则.采用 cs3144 霍尔元件来实现。(本次实验黄涛同学负责编写程序部分,郑康佳、张永杰同学负责做驱动电路等硬件部分, 黄涛负责最后测量与修改, 实验报告最终由郑康佳同学完成).

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1