




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计课程名称_嵌入式系统原理题目名称_基于ARM的步进电机的实现学生学院_自动化学院专业班级_13级物联网工程1班学号_学生姓名指导教师张小波2023年12月25日一、课题应用现状及应用分析随着微电子和计算机技术的开展,步进电机的要求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国名经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。本控制系统的设计,有硬件设计和软件设计两局部组成。其中,硬件设计主要包括单片机最小系统、键盘控制模块、步进电机驱动模块、数码显示模块等功能模块的设计,以及硬件电路在电路板上的实现。软件设计包括主程序以及各个模块的控制程序,最总实验对步进电机转动方向及转动速度的控制,并且将步进电机的转动速度动态显示在LED数码管上。二、功能模块介绍及总体设计;〔一〕模块介绍:1、ARM嵌入式开发板本课程设计所用到的是ALIENTEKMiniSTM32开发板,该开发板采的的是STM32F103RCT6芯片;SPIFLASH芯片是W25Q64,容量为8M字节;配备有LCD模块接口和三个功能按钮。2、步进电机〔1〕工作原理:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角〞,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而到达准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而到达调速的目的。〔2〕驱动方式:①相励磁法:每一瞬间只有一个线圈导通,其他线圈休息。其特点是励磁方法简单,耗电低,精确度良好。但是力矩小、震动大,每次励磁信号走的角度是标称角度。②相励磁法:每一瞬间有两个线圈同时导通,特点是力矩大、震动较小,每次励磁转动角度是标称角度。③相励磁法:1相和2相轮流交替导通,精度较高,且运转平滑。每送一个励磁信号转动二分之一标称角度。有称为半步驱动。4相电机中,1、2种方式称4相4拍,3种称4相8拍。按钮:在MiniSTM32开发板上的按键KEY0连接在PC5上、KEY1连接在PA15上、WK_UP连接在PA0上。如下图:LCD实现流程:〔二〕、方案设计:分配五个输出IO口给步进电机控制,三个按键分别输入“转动/停止〞、“一档/二档〞、“正传/反转〞信号,记录电机当前运行状态输出到LCD模块。三、系统硬件平台及接口设计;硬件平台:ALIENTEKMiniSTM32开发板接口色合计:定义PA4~8为推挽输出,作为步进电机的信号输入口;定义PA0为‘输入’作为按钮“开始/停止〞入口,PC5为‘输出’作为按钮“一档/二档〞的入口,PA15为‘输入’作为按钮“正转/反转〞的入口;LCD接口:LCD_LED对应PC10;LCD_CS对应PC9;LCD_RS对应PC8;LCD_WR对应PC7;LCD_RD对应PC6;LCD_D[17:1]对应PB[15:0];四、流程图及相关代码(一)程序流程图:1、主程序及主循环:u8modle[20]="MODE:null";u8ifplay[15]="STATE:stop";intmain(void){ Stm32_Clock_Init(9);//系统时钟设置 delay_init(72); //延时初始化 uart_init(72,9600);//串口初始化 MOTOR_Init(); //初始化motor EXTI_Init(); //外部中断初始化 LCD_Init(); LED8=1; POINT_COLOR=BLACK; LCD_ShowString(30,40,200,24,24,"STATE:stop"); LCD_ShowString(30,70,200,24,24,"MODE:clockwise"); LCD_ShowString(30,91,200,24,24,"SPEED:0"); POINT_COLOR=RED; LCD_ShowString(101,40,200,24,24,"stop"); LCD_ShowString(101,70,200,24,24,"clockwise"); LCD_ShowString(101,91,200,24,24,"0"); key1=0; MOTOR_Stop(); //motorstop while(1) { printf("OK\r\n"); while(key2==0) { MOTOR_Stop(); } switch(key0){ case0: play(); break; case1: oplay(); break; } }2、按钮初始化及其中断程序://按键初始化函数//PA0.15和PC5设置成输入voidKEY_Init(void){ RCC->APB2ENR|=1<<2;//使能PORTA时钟 RCC->APB2ENR|=1<<4;//使能PORTC时钟 JTAG_Set(SWD_ENABLE); //关闭JTAG,开启SWD GPIOA->CRL&=0XFFFFFFF0; //PA0设置成输入 GPIOA->CRL|=0X00000008; GPIOA->CRH&=0X0FFFFFFF; //PA15设置成输入 GPIOA->CRH|=0X80000000; GPIOA->ODR|=1<<15; //PA15上拉,PA0默认下拉 GPIOC->CRL&=0XFF0FFFFF; //PC5设置成输入 GPIOC->CRL|=0X00800000; GPIOC->ODR|=1<<5; //PC5上拉}u8KEY_Scan(u8mode){ staticu8key_up=1;//按键按松开标志 if(mode)key_up=1;//支持连按 if(key_up&&(KEY0==0||KEY1==0||WK_UP==1)) { delay_ms(10);//去抖动 key_up=0; if(KEY0==0)returnKEY0_PRES; elseif(KEY1==0)returnKEY1_PRES; elseif(WK_UP==1)returnWKUP_PRES; }elseif(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1; return0;//无按键按下}3、步进电机初始化及正转函数:voidMOTOR_Init(void){ RCC->APB2ENR|=1<<2;//使能PORTA时钟 RCC->APB2ENR|=1<<5;//使能PORTD时钟 GPIOA->CRL&=0X0000FFFF; GPIOA->CRL|=0X11110000;//PA8推挽输出PA2LED推挽输出 GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000001;GPIOA->ODR|=1<<8; GPIOA->ODR|=1<<4;//PA8输出高 GPIOA->ODR|=1<<5; GPIOA->ODR|=1<<6;//PA8输出高 GPIOA->ODR|=1<<7; GPIOD->CRL&=0XFFFFF0FF; GPIOD->CRL|=0X00000300;//PD.2 GPIOD->ODR|=1<<2;//PD.2 LED8=1;}voidMOTOR_Stop(void){ MOTOR1=0; MOTOR2=0; MOTOR3=0; MOTOR4=0;}voidplay(){ MOTOR1=1; MOTOR2=0; MOTOR3=0; MOTOR4=0; delay_ms(key1); MOTOR1=1; MOTOR2=1; MOTOR3=0; MOTOR4=0; delay_ms(key1); MOTOR1=0; MOTOR2=1; MOTOR3=0; MOTOR4=0; delay_ms(key1); MOTOR1=0; MOTOR2=1; MOTOR3=1; MOTOR4=0; //LED8=!LED8; delay_ms(key1); MOTOR1=0; MOTOR2=0; MOTOR3=1; MOTOR4=0; delay_ms(key1); MOTOR1=0; MOTOR2=0; MOTOR3=1; MOTOR4=1; delay_ms(key1); MOTOR1=0; MOTOR2=0; MOTOR3=0; MOTOR4=1; delay_ms(key1); MOTOR1=1; MOTOR2=0; MOTOR3=0; MOTOR4=1; delay_ms(key1);}voidoplay(){同理将play()里端顺序反过来就行}3、LCD显示程序://外部中断0效劳程序voidEXTI0_IRQHandler(void){ delay_ms(10); //消抖 if(WK_UP==1) //WK_UP按键 { key2=!key2; if(key2==0){ LED=1; LCD_ShowString(101,40,200,24,24,"stop"); LCD_ShowString(101,91,200,24,24,"0"); } else{ LED=0; LCD_ShowString(101,40,200,24,24,"work"); if(key1==3){ LCD_ShowString(101,91,200,24,24,"quick"); }elseif(key1==10){ LCD_ShowString(101,91,200,24,24,"slow"); } } } EXTI->PR=1<<0;//去除LINE0上的中断标志位}//外部中断9~5效劳程序voidEXTI9_5_IRQHandler(void){ delay_ms(10);//消抖 if(KEY0==0) //按键0 { if(key0==0){ key0=1; LCD_ShowString(101,70,200,24,24,"anticlockwise"); }elseif(key0==1){ key0=0; LCD_ShowString(101,70,200,24,24,"clockwise"); } } EXTI->PR=1<<5;//去除LINE5上的中断标志位}//外部中断15~10效劳程序voidEXTI15_10_IRQHandler(void){ delay_ms(10);//消抖 if(KEY1==0) //按键1 { if(key2==1){ if(key1==10) { key1=3; LCD_ShowString(101,91,200,24,24,"quick"); }else{ key1=10; LCD_ShowString(101,91,200,24,24,"slow"); } } } EXTI->PR=1<<15;//去除LINE15上的中断标志位}//外部中断初始化程序//初始化PA0,PC5,PA15为中断输入.voidEXTI_Init(void){ KEY_Init(); Ex_NVIC_Config(GPIO_A,0,RTIR); //上升沿触发 Ex_NVIC_Config(GPIO_C,5,FTIR); //下降沿触发 Ex_NVIC_Config(GPIO_A,15,FTIR); //下降沿触发 MY_NVIC_Init(2,2,EXTI0_IRQn,2); //抢占2,子优先级2,组2 MY_NVIC_Init(2,1,EXTI9_5_IRQn,2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络数据流去重技术-深度研究
- 质量管理体系升级-深度研究
- 生物唯一标识应用-深度研究
- 虚拟现实交互技术-深度研究
- 评价体系与教育公平-深度研究
- 旅游市场供需关系定价-深度研究
- 养殖合作协议合同范本
- 加工及测试合同范本
- 2025年锡林郭勒盟c1货运从业资格证模拟考试题
- 东莞物业服务合同范本
- 2025年黑龙江农垦职业学院单招职业倾向性测试题库完整版
- 2025年02月黄石市残联专门协会公开招聘工作人员5人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2024-2025学年第二学期开学典礼-开学典礼校长致辞
- 《汽车专业英语》2024年课程标准(含课程思政设计)
- 部编四年级道德与法治下册全册教案(含反思)
- 烟草栽培(二级)鉴定理论考试复习题库-上(单选题汇总)
- 中国传统二十四节气立春节气介绍PPT模板课件
- 【工法】卫生间聚乙烯丙纶防水和JS防水施工工艺
- 物品出入库明细表格
- 《关于贯彻执行〈重庆市企业职工病假待遇暂行规定〉若干问题的意见
- 水厂施工组织设计(完整版)
评论
0/150
提交评论