1、嵌入式步进电机课程设计实验课 程 设 计课程名称_嵌入式系统原理 题目名称_基于ARM的步进电机的实现学生学院_自动化学院专业班级_13级物联网工程1班 学 号_学生姓名指导教师张小波2015年12月25日一、课题应用现状及应用分析随着微电子和计算机技术的发展,步进电机的要求量与日俱增,它广泛用 于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国名经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。 本控制系统的设计,有硬件设计和软件设计两部分组成。其中,硬件设计主要包括单片机最小系统、键盘控制模块、步进电机驱动模
2、块、数码显示模块等功能模块的设计,以及硬件电路在电路板上的实现。软件设计包括主程序以及各个模块的控制程序,最总实验对步进电机转动方向及转动速度的控制,并且将步进电机的转动速度动态显示在LED数码管上。二、功能模块介绍及总体设计;(一)模块介绍:1、ARM嵌入式开发板本课程设计所用到的是ALIENTEK MiniSTM32开发板,该开发板采的的是STM32F103RCT6芯片;SPI FLASH 芯片是W25Q64,容量为 8M 字节;配备有LCD模块接口和三个功能按钮。2、步进电机(1)工作原理:步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停
3、止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。(2)驱动方式:相励磁法:每一瞬间只有一个线圈导通,其他线圈休息。其特点是励磁方法简单,耗电低,精确度良好。但是力矩小、震动大,每次励磁信号走的角度是标称角度。相励磁法:每一瞬间有两个线圈同时导通,特点是力矩大、震动较小,每次励磁转动角度是标称角度。相励磁法:1 相和
4、2 相轮流交替导通,精度较高,且运转平滑。每送一个励磁信号转动二分之一标称角度。有称为半步驱动。4 相电机中,1、2 种方式称 4 相 4 拍,3 种称 4 相8 拍。 按钮:在 MiniSTM32 开发板上的按键 KEY0连接在 PC5 上、KEY1 连接在 PA15 上、WK_UP 连接在 PA0 上。如图所示: LCD实现流程:(二)、方案设计:分配五个输出IO口给步进电机控制,三个按键分别输入“转动/停止”、“一档/二档”、“正传/反转”信号,记录电机当前运行状态输出到LCD模块。三、系统硬件平台及接口设计;硬件平台:ALIENTEK MiniSTM32开发板接口色合计: 定义 PA
5、48 为推挽输出,作为步进电机的信号输入口; 定义 PA0 为输入作为按钮“开始/停止”入口,PC5 为输出作为按钮“一档/二档”的入口,PA15为输入作为按钮“正转/反转”的入口; LCD接口:LCD_LED 对应 PC10;LCD_CS 对应 PC9;LCD _RS 对应 PC8;LCD _WR 对应 PC7;LCD _RD 对应 PC6;LCD _D17:1对应 PB15:0;四、流程图及相关代码 (一) 程序流程图:1、主程序及主循环:u8 modle20=MODE:null;u8 ifplay15=STATE:stop;int main(void) Stm32_Clock_Init(
6、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
7、_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(); /motor stop while(1) printf(OKrn); while(key2=0) MOTOR_Stop(); switch(key0) case 0: play(); break; case 1: oplay(); break; 2、按钮初始化及其中断程序: /按键初始化函数 /PA0.15和PC5 设置成
8、输入void KEY_Init(void) RCC-APB2ENR|=1APB2ENR|=1CRL&=0XFFFFFFF0; /PA0设置成输入 GPIOA-CRL|=0X00000008; GPIOA-CRH&=0X0FFFFFFF; /PA15设置成输入 GPIOA-CRH|=0X80000000; GPIOA-ODR|=1CRL&=0XFF0FFFFF; /PC5设置成输入 GPIOC-CRL|=0X00800000; GPIOC-ODR|=1APB2ENR|=1APB2ENR|=1CRL&=0X0000FFFF; GPIOA-CRL|=0X11110000;/PA8 推挽输出 PA2 LED推挽输出 GPIOA-CRH&=0XFFFFFFF0; GPIOA-CRH|=0X00000001; GPIOA-ODR|=1ODR|=1ODR|=1ODR|=1ODR|=1CRL&=0XFFFFF0FF; GPIOD-CRL|=0X00000300;/PD.2 GPIOD-ODR|=1PR=10; /清除LINE0上的中断标志位 /外部中断95服务程序void EXTI9_5_IRQHandler(void) delay_ms(10); /消抖 if(KEY
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1