步进电机控制.doc
上传人:yy****24 上传时间:2024-09-10 格式:DOC 页数:6 大小:341KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

步进电机控制.doc

步进电机控制.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

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

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

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

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

福建农林大学机电工程学院综合性、创新性实验报告专业:车辆工程姓名:吴载栩学号:081268078汽车电动座椅控制系统摘要本控制系统就是以单片机AT89C52为核心,附以外围电路,实现步进电机正反转及停止的系统;运用单片机的运算和处理能力和L298电机驱动芯片来实现步进电机的正转、反转、停止、加速、减速等功能,来模拟座椅的打开和关闭。并运用软件Proteus进行仿真来得到实验结果。一、控制要求(1)采用单片机控制(2)所控制天窗由步进电机模拟驱动(3)能实现步进电机的正转,反转,停止、加速、减速等功能二、电路设计原理及原理图1.设计方案本设计通过AT89C52单片机的I/O口对L298电机驱动芯片赋值来控制电机,单片机的P0口的低四位作为步进电机的控制输出,P1.0,P1.1,P1.2,p1.3,p1.7连接五点动开关,作为电机运行模式的切换控制方式。加速减速正反转开关控制===》单片机===》L298驱动===》步进电机2.电路原理AT89C52是集成40个I/O口的单片机,拥有12MHZ的晶振周期,电路拥有可控复位电路。L298电机驱动电路可以实现电机的转向调整。本电路实现步进电机正反转主要利用了L298的引脚的电平控制,让其电平的高低变化可以跟据单片机程序来进行调节,本电路分别进行了设置,当正转开关闭合时,可以控制电机正转,当反转开关闭合时,可以控制电机反转,当关闭开关开时,电机停止转动。2.1开关控制电路当正转开关闭合时,电机正转;当反转开关闭合时,电机反转;当关闭开关开时,电机停止转动。2.2电机驱动电路3.原理图首先在PROTEUS文件下创建步进电机电路原理图。根据设计需求打开器件,基于单片机控制的电机原理图如图所示。5.程序设计#include<reg52.h>//#include<intrins.h>#defineuintunsignedintuintspeeds[]={0xf0,0xe0,0xd0,0xc0,0xb0,0xa0,0x90,0x80,0x70,0x60,0x50,0x40,0x30,0x20,0x10,0x00},i,times=0;uintright[]={0x05,0x06,0x0a,0x09,0x00};//右转数组uintleft[]={0x09,0x0a,0x06,0x05,0x00};//左转数组uintj,key,spd;bittt,direct;uint*RL;//=================================================voidint_timer2()//定时器2初始化{EA=1;TMOD=0x01;ET2=1;TR2=0;TH2=spd;TL2=0x00;RCAP2H=spd;}//===============================================voidtimer2()interrupt5//定时器2中断{TR2=0;TF2=0;RCAP2H=spd;P3=RL[i];i+=1;if(i==4)i=0;TR2=1;}//=============================================================voidreadkey()//读键子程序{//Delayms(2);switch(key){case0xfe:TR2=!TR2;while(P1!=0xff);break;//开关case0xfd:if(TR2==0){i+=1;if(i==4)i=0;P3=RL[i];}while(P1!=0xff);break;//实现步进case0xfb:if(TR2==1)if(j<15){j+=1;spd=speeds[j];}while(P1!=0xff);break;//加速case0xf7:if(TR2==1)if(j>0){j-=1;spd=speeds[j];}while(P1!=0xff);break;//减速case0x7f:if(RL==right)RL=left;elseRL=right;while(P1!=0xff);break;//正反转case0xff:break;}}//===========================================================================voidmain()//主程序{i=0;j=0;spd=speeds[j