《嵌入式步进电机课程设计实验.docx》由会员分享,可在线阅读,更多相关《嵌入式步进电机课程设计实验.docx(10页珍藏版)》请在优知文库上搜索。
1、课程设计课程名称嵌入式系统原理题目名称基于ARM的步进电机的实现学生学院自动化学院专业班级:13级物联网工程1班学号.学生姓名指导教师张小波2023年12月25日一、课题应用现状及应用分析随着微电子和计算机技术的开展,步进电机的要求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国名经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。本控制系统的设计,有硬件设计和软件设计两局部组成。其中,硬件设计主要包括单片机最小系统、键盘控制模块、步进电机驱动模块、数码显示模块等功能模块的设计,以及硬件电路在
2、电路板上的实现。软件设计包括主程序以及各个模块的控制程序,最总实验对步进电机转动方向及转动速度的控制,并且将步进电机的转动速度动态显示在LED数码管上。二、功能模块介绍及总体设计;(一)模块介绍:1、ARM嵌入式开发板本课程设计所用到的是AlientekMiniSTM32开发板,该开发板采的的是STM32FlO3RCT6芯片;SPIFLASH芯片是W25Q64,容量为8M字节;配备有LCD模块接口和三个功能按钮。2、步进电机(1)工作原理:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影
3、响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而到达准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而到达调速的目的。(2)驱动方式:相励磁法:每一瞬间只有一个线圈导通,其他线圈休息。其特点是励磁方法简单,耗电低,精确度良好。但是力矩小、震动大,每次励磁信号走的角度是标称角度。相励磁法:每一瞬间有两个线圈同时导通,特点是力矩大、震动较小,每次励磁转动角度是标称角度。相励磁法:1相和2相轮流交替导通,精度较高,且运转平滑。每送一个励磁信号转动二分
4、之一标称角度。有称为半步驱动。4相电机中,1、2种方式称4相4拍,3种称4相8拍。按钮:在MiniSTM32开发板上的按键KEYO连接在PC5上、KEYI连接在PA15上、WKjJP连接在PAo上。如下图:LCD实现流程:(二)、方案设计:分配五个输出IO口给步进电机控制,三个按键分别输入“转动/停止、一档/二档、正传/反转信号,记录电机当前运行状态输出到LCD模块。三、系统硬件平台及接口设计;硬件平台:ALlENTEKMiniSTM32开发板接口色合计: 定MPA4-8为推挽输出,作为步进电机的信号输入口;定义PAO为输入作为按钮”开始/停止入口,PC5为输出作为按钮“一档/二档的入口,PA
5、15为输入作为按钮“正转/反转”的入口;1.CD接口:1.CD_LED对应PClO;1.CD_CS对应PC9;1.CD_RS对应PC8;1.CD_WR对应PC7;1.CD_RD对应PC6;1.CD对应PB15:0;四、流程图及康代码(一)程序流程图:1、主程序及主循环:u8modle20=MODE:null;u8ifplay15=STATE:stop;intmain(void)Stm32_CIoCknit(9);系统时钟设置delayjnit(72);延时初始化UartJnit(72,9600);串口初始化MOTORJnit();初始化motorEXTIJnitO;外部中断初始化1.CDJni
6、tO;LED8=1;POINT_COLOR=BLACK;LCD_ShowString(30,40,200,24,24,“STATE:stop”);1.CD-ShowString(30J0,200z24z24,MODExlockwise);LCD_ShowString(30,91,200,24,24,“SPEED:0“);POINT_COLOR=RED;LCD-ShowString(IOl,40,200,24,24JStOp);LCD_ShowString(IOl,70,200,24,24JdoCkWise);LCD_ShowString(101,91,200,24,24J(T);keyl=O;
7、MOTOR_Stop();/motorstopwhile(l)(printf(,OKrn);while(key2=0)(MOTOR_Stop();)switch(key)case0:pay();break;opa();case1:break;)2、按钮初始化及其中断程序:按键初始化函数/PAO.15和PC5设置成输入voidKEYJnit(void)(RCC-APB2ENR=1APB2ENR=1CRLA=OXFFFFFFFO;GPIOA-CRL=0X00000008;GPIOA-CRHfc=OXOFFFFFFF;GPIOA-CRH=0X80000000;GPIOA-ODR=1CRIA=OXFF
8、OFFFFF;GPIOC-CRL=0X00800000;GPI0C-0DR=lAPB2ENR=1APB2ENR=1CRL=OX11110000yPA8推挽,出PA2LED推挽,出GPlOAACRHa=oxfffffffo;GPIOA-CRH=0X00000001;GPloA-ODRI=IVODR=10DR=10DR=10DR=1CRLA=OXFFFFFOFF;GPIQD-CRL|=0X00(X)0300y/PD.2GPI0D-0DR=1PR=1PR=1PR=115;去除LINE15上的中断标志位)外部中断初始化程序初始化PA0,PC5,PA15为中断输入.voidEXTI_lnit(void)(KEYJnit();Ex-NVIC.Config(GPIO,AARTIR);上升沿触发Ex_NVIC_Config(GPIO_C,5,FTIR);下降沿触发Ex_NVIJCOnfig(GPIO_A,15,FTIR);下降沿触发MY.NVICJnit(2,2,EXTI0JRQnz2);抢占2,子优先级2,组2MY-NVICJnit(2,lzETI9-5JRQn,2);抢占2,子