基于STM32和L6208的步进电机控制系统
- 格式:doc
- 大小:405.50 KB
- 文档页数:9
基于STM32的两相混合式步进电机闭环控制系统的研究步进电机具有结构简单、工作可靠、驱动器成本低和无位置累计误差等优点,在数控机床、雕刻机、机器人和计算机打印设备等多个领域中得到了广泛的应用。
近年来,随着现代工业的快速发展和相关技术的不断提升,人们对步进电机控制系统也提出了更加严苛的要求。
目前市面上的步进电机主要以两相混合式步进电机为主,但是由于其自身存在的固有缺陷以及传统控制方式多采用开环运行,这在一定程度上使两相混合式步进电机控制系统在工业中的应用受到制约。
因此,研究两相混合式步进电机闭环控制系统势在必行。
首先,本文对步进电机控制系统的研究现状进行了阐述,介绍了两相混合式步进电机的结构和工作原理。
在合理的假设条件下,详细推导了两相混合式步进电机在两相静止坐标系下的数学模型,通过坐标变换,得到dq旋转坐标系下的数学模型,并选用_di(28)0的矢量控制策略应用在被控对象闭环控制中。
其次,在两相混合式步进电机闭环控制系统中,位置和速度控制器的优劣将直接制约整个控制系统的性能。
本文针对传统PI控制器的不足,引入反步控制器。
根据数学模型,重点推导和设计了速度反步控制器和位置比例(P)控制器。
同时,在Matlab/Simulink软件环境下搭建了速度反步控制器、位置P控制器以及两相混合式步进电机的仿真模型。
在相同的条件下与传统PI控制器进行仿真对比分析。
仿真结果表明,本文提出和设计的位置P和速度反步控制算法在稳态性能、动态特性、鲁棒性和精度方面较为优越。
最后,为了证明算法的可行性和实用性,以STM32芯片为核心,完成对两相混合式步进电机闭环控制系统的硬件电路设计,结合硬件电路,又完成了软件设计。
同时,搭建了实验控制平台,并对本文提出的控制策略与传统PI控制器进行比较。
实验结果进一步表明,本文提出和设计的位置P和速度反步控制算法在两相混合式步进电机闭环控制中更具优越性。
基于STM32的步进电机控制系统沈阳航空航天大学2010年6月摘要本文的主要工作是基于STM32步进电机控制系统的设计。
随着越来越多的高科技产品逐渐融入了日常生活中,步进电机控制系统发生了巨大的变化。
单片机、C语言等前沿学科的技术的日趋成熟与实用化,使得步进电机的控制系统有了新的的研究方向与意义。
本文描述了一个由STM32微处理器、步进电机、LCD显示器、键盘等模块构成的,提供基于STM32的PWM细分技术的步进电机控制系统。
该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据键盘的输入,使STM32产生周期性PWM信号,用此信号对步进电机的速度及转动方向进行控制,并且通过LCD显示出数据。
结果表明该系统具有结构简单、工作可靠、精度高等特点.关键词:STM32微处理器;步进电机;LCD显示;PWM信号;细分技术AbstractAs well as the high-tech products gradually integrated into the daily life,servo control system has undergone tremendous changes.SCM and C language of the frontier disciplines such mature technology and practical,steering control system is a new research direction and meaning.This paper describes a STM32 microprocessors, steering, LCD display and keyboard, Based on the STM32 servo control system of PWM signal,This system uses STM32 microprocessor as the core, MDK in the environment, according to the keyboard input , STM32 produce periodic PWM signal, with this signal to the velocity and Angle of steering gear control, and through the LCD display data. The features of the simple hardware, stable operation and high precision are incarnated in the proposed system.Keywords:STM32 microprocessors; Steering system; LCD display;pulse width modulation signal;Subdivide technology目录第1章绪论 (1)1.1 课题背景 (1)1.2 课题目标及意义 (2)1.3 课题任务及要求 (3)1.4 课题内容分析与实现 (3)1.5 课题论文安排介绍 (3)第2章步进电机控制系统的总体方案论证 (5)2.1 总体方案 (5)2.2 步进电机控制系统硬件方案 (5)2.3 步进电机控制系统软件方案 (6)第3章系统的硬件设计 (7)3.1 STM32开发板简介 (7)3.2 步进电机模块 (8)3.2.1 步进电机驱动模块 (8)3.2.2 步进电机驱动控制模块 (10)3.2.3 步进电机的一些特点 (11)3.2.4 步进电机的一些基本参数 (12)3.2.5 步进电机的驱动方法 (13)3.3 A/D转换模块 (13)3.3.1 模拟/数字转换(ADC)介绍 (13)3.3.2 模拟/数字转换(ADC)主要特性 (13)3.3.3 模拟/数字转换(ADC)功能描述 (14)3.4 LCD显示模块 (16)3.5 硬件电路 (17)第4章控制系统软件设计 (18)4.1 控制系统软件设计步骤 (18)4.2 Keil for ARM软件开发环境 (19)4.3 PWM细分技术简介 (20)4.3.1 PWM细分技术简介 (20)4.3.2 PWM细分技术驱动原理 (20)4.3.3 PWM细分调压调速原理 (22)4.4 主程序设计 (23)4.5 各模块程序设计 (25)4.5.1系统初始化 (25)4.5.2A/D转换程序设计 (26)4.5.3 PWM细分程序设计 (29)4.5.4电机控制程序设计 (30)4.5.5 LCD显示程序设计 (32)第5章步进电机控制系统综合调试与分析 (33)5.1 硬件电路调试 (33)5.2 软件电路调试 (34)5.3 系统联调结果与分析 (34)结论 (35)社会经济效益分析 (36)参考文献 (37)致谢 (38)附录I 电路原理图 (39)附录Ⅱ程序清单 (41)附录IV 元器件清单 (56)第1章绪论随着电力电子技术、微电子技术、控制理论以及永磁材料的快速发展,步进电机得以迅速发展。
基于STM32的步进电机控制系统-自动化本科毕业设计本文简要介绍了自动化本科毕业设计的主题和目的,并概述了STM32步进电机控制系统的重要性和应用领域。
步进电机控制系统是现代自动化技术中的重要组成部分,广泛应用于各个领域,如机械加工、电子设备、机器人控制等。
该系统能够实现精确控制和位置定位。
然而,传统的步进电机控制系统存在一些限制,如运行效率低、系统稳定性差等。
因此,基于STM32的步进电机控制系统应运而生。
本科毕业设计的主题是基于STM32的步进电机控制系统的设计与实现。
通过使用STM32单片机,设计一个高效稳定的步进电机控制系统,能够实现精确的位置控制和运动控制。
该系统具有较高的运行效率和稳定性,能够应用于各种自动化领域,提高生产效率和产品质量。
关键词:步进电机控制系统,STM32,自动化,本科毕业设计步进电机是一种常见的电动机类型,具有特定的原理和工作方式。
它在自动化领域有广泛的应用。
本文将讨论步进电机的原理和工作方式,并介绍选择基于STM32的步进电机控制系统作为本科毕业设计主题的原因。
步进电机是一种将电脉冲信号转换为离散步进运动的电动机。
它通过电磁铁的启动顺序和定向,使得转子以角度的方式进行运动。
步进电机的原理基于电磁铁的电磁效应和磁性材料的性质来实现。
步进电机在自动化领域有许多应用。
例如,步进电机常被用于精密定位系统、数控机床、印刷机、纺织机械等领域。
它们的精确度、可靠性和可编程性使它们成为许多自动化系统中的理想选择。
选择基于STM32的步进电机控制系统作为本科毕业设计的主题有以下原因:STM32是一种广泛应用的单片机系列,具有强大的计算和控制能力。
STM32具有丰富的外设资源,能够满足步进电机控制系统的需求。
STM32提供了方便的开发环境和丰富的开发工具,使得设计和开发步进电机控制系统更加简便和高效。
基于STM32的步进电机控制系统可以在实践中验证和应用步进电机控制的原理和技术,对于学生来说具有一定的教育意义。
基于stm32的步进电机控制系统设计与实现基于STM32的步进电机控制系统设计与实现1. 概述步进电机是一种非常常见的电动机,在许多自动化系统和工控设备中得到广泛应用。
它们具有精准的定位能力和高效的控制性能。
本文将介绍如何使用STM32微控制器来设计和实现步进电机控制系统。
2. 硬件设计首先需要确定步进电机的规格和要求,包括步距角、相数、电流和电压等。
根据步进电机的规格,选择合适的驱动器芯片,常见的有L298N、DRV8825等。
接下来,将选定的驱动器芯片与STM32微控制器相连。
通常,步进电机的控制信号需要使用到微控制器的GPIO引脚,同时由于步进电机的工作电流比较大,需要使用到微控制器的PWM输出信号来调节驱动器芯片的电流限制。
除此之外,还需要一个电源电路来提供驱动器和步进电机所需的电源。
可以选择使用一个电源模块,也可以自行设计电源电路。
3. 软件设计软件设计是步进电机控制系统的核心部分,主要包括步进电机驱动代码的编写和控制算法的实现。
首先,需要在STM32的开发环境中编写步进电机驱动代码。
根据所选的驱动器芯片和步进电机规格,编写相应的GPIO控制代码和PWM输出代码。
同时,可以添加一些保护性的代码,例如过流保护和过热保护等。
接下来,需要设计和实现步进电机的控制算法。
步进电机的控制算法通常是基于位置控制或速度控制的。
对于位置控制,可以使用开环控制或闭环控制,闭环控制通常需要使用到步进电机的编码器。
对于开环控制,可以通过控制步进电机的脉冲数来控制位置。
通过控制脉冲的频率和方向,可以实现步进电机的转动和停止。
这种方法简单直接,但是定位精度有限。
对于闭环控制,可以使用PID控制算法或者更高级的控制算法来实现位置控制。
通过读取步进电机的编码器反馈信号,可以实时调整控制输出。
这种方法可以提高定位精度和抗干扰能力,但是算法实现相对复杂。
4. 系统实现在完成硬件设计和软件设计后,可以进行系统的调试和实现。
基于STM32和L6208的步进电机控制系统摘要:本文介绍了步进电机的基本工作原理及控制方法,通过对ARM公司的STM32F103XX处理器Cortex-M3和ST公司步进电机驱动芯片L6208性能和驱动原理的深入分析,阐述了一种新型驱动步进电机的控制系统。
本控制系统能够实时、准确、可靠地控制两相两极的步进电机。
关键词:STM32、L6208、步进电机Abstract:This paper introduced the basic work principle and control methods, By introducing the performance of STM32F103XX and thorough analyzing the drive principle of DMOS driver for bipolar steeper motor L6208, I expounded a new control system for driving steeper motor. This control system can control bipolar stepper motor real-time, well and truly and reliably.Key words: STM32, L6208, stepper motor第1章引言本系统采用STM32F103XX微控制器驱动双极性步进电机的方法,执行整步和半步模式来控制步进电机。
用户可以选择:操作模式(整步/半步);电机旋转方式(顺时针/逆时针);当前控制模式(快速/慢速)。
这种方法使用中密度STM32F103XX微控制器和全集成两相步进电机驱动L6208,这是性价比最高和最简单的方式获得最小的CPU负载。
Cortex-M3是专门在微控制系统和无线网络等对功耗和成本敏感的嵌入式应用领域实现高系统性能而设计的,它大大简化了编程的复杂性,集高性能、低功耗、低成本于一体。
本设计的主要特点:1、不需反馈器件,比其他运动控制系统成本低。
2、尤其在低速扭转力和强稳定性方面具有优势。
3、低功耗,高性能并且灵活,可用于机器人控制,机械工具转弯处,影像和其它精准的轴位置控制环境。
4、高性能的STM32F103XX微控制器驱动步进电机依赖于控制器的低计算环境。
第2章方案比较与论证总体系统框图如图1所示:图1 系统框图2.1控制模块选择方案一:采用89C51作为步进电机控制器。
经典51单片机具有价格低廉、使用简单等优点。
但其运算速度低,功能单一,RAM、ROM空间小,不稳定等特点。
方案二:采用STM32F103XX作为步进电机控制器。
STM32通过寄存器模式,寻址方式灵活,RAM和FLASH容量大,运算速度快、低功耗、低电压等,且通过TIM2的输出比较模式来控制步进电机以连续周期的50%和一个可变频率。
DMA控制器可用来改变时钟周期,Systick定时器灵活地产生中断。
基于以上分析,选择方案二。
2.2电机的选择方案一:采用直流电机。
直流电机具有优良的调速特性,调速平滑、方便,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转;能满足生产自动化系统各种不同的特殊运行要求。
直流电机的工作状态可分为两种:开环状态和闭环状态。
直流电机工作在开环状态时,电路相对简单,但其定位性能比较差。
直流电机工作的闭环状态时,其定位性能精确,但是相对开环状态又要增加很多检测器件,使用的元器件多,电路非常复杂。
方案二:采用步进电机。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、启停的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机一个脉冲信号,电机则转过一个步距角。
因此,步进电机具有快速启停能力,如果负荷不超过步进电机所能提供的动态转矩值,就能立即使步进电机启动或反转,而且步进电机的转换精度高,驱动电路简单,非常适合定位控制系统。
基于以上分析,选择方案二。
2.3驱动模块的选择方案一:采用继电器对电动机的开和关进行控制,通过开关的切换对电机的速度进行调整。
这个方案的优点是电路较为简单,实现容易;缺点是继电器的响应速度慢、机械结构易损坏、寿命较短。
方案二:采用L6208驱动芯片。
提供了带CMOS/TTL输入逻辑以及几个保护功能的全保护型双H驱动桥,且为驱动双极步进电机而专门优化的全集成驱动器,从而大幅度减少了电机控制应用所需的外围元器件的数量。
此芯片产品采用8V~52V的单电源电压,所有的逻辑输入引脚都配有降低噪声敏感度的磁滞功能,而且兼容TTL/CMOS/CMOS 3.3V电压。
为全面保护对地短路和每个电桥的两个相位之间的短路,芯片内置过流检测电路(OCD)。
OCD电路用于监测流经上桥臂功率DMOS晶体管的电流,因为没有外部电阻器,所以也就降低了功耗,符合节能要求。
此外,为保证对IC进行的全面的保护,芯片上还集成了其它的特殊电路:监测电源电压的低压封锁保护以及一旦结温超过165℃时关闭所有功率输出的热保护功能。
这个器件能够适应各种应用,包括微步进应用。
基于上述理论分析和实际情况,拟定选择方案二。
第3章系统硬件设计3.1电机控制系统的设计RESET、ENABLE、FAST/SLOW、HALF/FULL、CLOCK、CW/CCW是控制信号的输入端,控制信号由STM32提供,可以直接将STM32与L6208的相应引脚相连。
STM32控制L6208对应引脚如表1所示:STM32引脚L6208引脚TIM2_CH1(PA0) CLOCK(PIN_1)PC2 CONTROL(PIN_13)PC3HALF/ FULL(PIN_12)PC4CW/ C C W(PIN_2)PC5 RESET(PIN_23)PC13 EN(PIN_14)表1 STM32控制L6208对应引脚电机控制系统原理图如图2所示:图2 电机控制系统原理图L6208驱动电路图如图3所示:图3 L6208驱动电路图第4章系统软件设计主程序流程图:部分流程图:图4 DMA流程图图5 系统时钟流程图第5章功能测试及结果分析第6章结束语本系统主要以STM32为主要控制芯片。
采用了L6208驱动芯片实现电机控制。
在设计过程中,力求硬件电路简单,充分发挥软件设计的优势,编程灵活方便来满足系统的要求。
参考文献[1] 李宁,《基于MDK的STM32处理器开发应用》,北京航空航天大学出版社[2] 黄智伟,《全国大学生电子设计竞赛系统设计》,北京航空航天大学出版社[3] ST公司,步进电机驱动l6208应用手册。
附录一主要元器件清单:器件名称器件数量STM32F103RBT6微控制器1片电机驱动芯片L6208N 1片42BYG102步进电机1个电阻、电容、电位器、二极管若干附录二主程序:int main(void){/* System Clocks Configuration */RCC_Configuration();/* NVIC Configuration */NVIC_Configuration();/* Activate the driver */Stepper_Cmd(ENABLE);/* Driver control pin configuration */Stepper_PinControlConfig();/* Disable the initialization of the driver */Stepper_ResetDisable();/* -----------Modes selection: Rotation direction, Step mode, Decay mode---------------*/ #ifdef RotationDirection_CWStepper_SetRotationDirection(Stepper_RotationDirection_CW);#endif /* RotationDirection_CW */#ifdef RotationDirection_CCWStepper_SetRotationDirection(Stepper_RotationDirection_CCW);#endif /* RotationDirection_CCW */#ifdef Half_StepStepper_SelectMode(Stepper_Half);#endif /* Half_Step */#ifdef Full_StepStepper_SelectMode(Stepper_Full);#endif /* Full_Step */#ifdef ControlSlow_CurrentStepper_SetControlMode(Stepper_ControlSlow);#endif /* ControlSlow_Current */#ifdef ControlFast_CurrentStepper_SetControlMode(Stepper_ControlFast);#endif /* ControlFast_Current *//* Start the stepper motor */Stepper_Start(ENABLE);/* Peripherals configuration */Stepper_Init();while (1){}}/*** @brief Configures the different system clocks.* @param None* @retval : None*/void RCC_Configuration(void){/* RCC system reset(for debug purpose) */RCC_DeInit();/* Enable HSE */RCC_HSEConfig(RCC_HSE_ON);/* Wait till HSE is ready */HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus == SUCCESS){/* Enable Prefetch Buffer */FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* Flash 2 wait state */FLASH_SetLatency(FLASH_Latency_2);/* HCLK = SYSCLK */RCC_HCLKConfig(RCC_SYSCLK_Div1);/* PCLK2 = HCLK */RCC_PCLK2Config(RCC_HCLK_Div1);/* PCLK1 = HCLK/2 */RCC_PCLK1Config(RCC_HCLK_Div2);/* PLLCLK = 8MHz * 9 = 72 MHz */RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* Enable PLL */RCC_PLLCmd(ENABLE);/* Wait till PLL is ready */while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}/* Select PLL as system clock source */RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/* Wait till PLL is used as system clock source */while(RCC_GetSYSCLKSource() != 0x08){}}}/*** @brief Configure the nested vectored interrupt controller.* @param None* @retval : None*/void NVIC_Configuration(void){NVIC_SetPriorityGrouping(7); /* 0 bits for pre-emption priority 4 bits forsubpriority*/NVIC_SetPriority(DMA1_Channel2_IRQn, 0x01); /* 0x01 = 0x0 << 3 | (0x1 & 0x7), prority is 0x01 << 4 */NVIC_EnableIRQ(DMA1_Channel2_IRQn);}#ifdef USE_FULL_ASSERT。