《基于MSP430实现的步进电机控制.doc》由会员分享,可在线阅读,更多相关《基于MSP430实现的步进电机控制.doc(11页珍藏版)》请在课桌文档上搜索。
1、作品概述第一节 根本情况MSP430G2系列Launchpad是TI推出的一款低本钱的开发平台。它适用于适用于TI 最新MSP430G2* 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2* 器件开发应用所必需的所有软、硬件。本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。第二节 软硬件总体设计方案本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加
2、底板的形式,对步进电机进展控制。滑变,即滑动变阻器,用来控制电机的转速,本系统共有两个拨动按键,一个拨动按键用来选择步进电机的模式,如四相八拍或四相四拍,另一个拨动按键用来控制转动方向。数码管可用来显示模式和方向,以及转速的百分比。系统总体设计框图如下图1.2.1 系统总体设计框图在硬件设计时,只需设计外围电路,留出与Launchpad核心板的接口即可,既节约了设计时间,又节省了本钱,而且无需额外购置仿真器,从而使设计本钱到达最低。在软件设计方面,可充分利用G2系列单片机的各个功能模块,如时钟系统、TA定时器、ADC10模数转换器,看门狗,以及IO口中断等资源,设计出高效率、低功耗、构造紧凑而
3、又功能强大的产品。第一章 作品硬件系统设计第一节 MSP430G2系列Launchpad开发板组成及硬件资源情况介绍MSP430G2系列Launchpad是TI推出的一款低本钱的开发平台。它适用于适用于TI 最新MSP430G2* 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2* 器件开发应用所必需的所有软、硬件。LaunchPad 具有集成的DIP 目标插座,可支持多达20 个引脚,从而使MSP430 Value Line 器件能够简便地插入LaunchPad 电路板中。此外,其还可提供板上Flash 仿真工具,以直接连接至PC 轻松进展编程、调试和评估。LaunchP
4、ad 试验板还能够对eZ430-RF2500T 目标板、eZ430-Chronos 手表模块eZ430-F2021T/F2021T 目标板进展编程。此外,它还提供了从MSP430G2* 器件到主机PC 或相连目标板的9600 波特UART 串行连接。其实物图如图2.1所示。图 MSP430G2系列Launchpad开发板实物图MSP430G2系列Launchpad开发板硬件资源: USB 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的UART 串行通信速度 支持所有采用PDIP14 或PDIP20 封装的MSP430G2* 和MSP430F20* 器件 分别连接至绿光和红光LE
5、D 的两个通用数字I/O 引脚可提供视觉反响 两个按钮可实现用户反响和芯片复位 器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板 高质量的20 引脚DIP 插座,可轻松简便地插入目标器件或将其移除第二节 关键器件选型以及性能指标参数一、 步进电机本作品选用的是市德利来电器生产的35BY48BH10型步进电机,其技术数据、接线图、外形图和实物图如下所示。1. 技术数据型号步矩角相数电压电流电阻电感(400Hz)最大静转矩 定位转距转动惯量引线规格35BY48BH107.54120.2864225400907.9UL1095 AWG282. 接线图 & 外形图 & 实物图图二
6、.1接线图图二.2 外形图图二.3 实物图二、 L298N作为电机驱动的核心器件,电机驱动芯片的选型对整个系统的可靠性和性能都起着至关重要的作用。本作品中选用了意法半导体ST生产的L298N电机驱动芯片。其关键指标如下:图2.2.1L298N实物图1. 供电电压可高达46V,直流电流可达4A。完全满足步进电机的驱动要求。2. 低饱和电压。3. 过热保护。4. 逻辑0输入电压可达1.5V,可有效抑制噪声;逻辑1输入电压可低至2.3V,所以可以用430单片机直接驱动。综上可见,L298N电机驱动芯片可以完全满足本作品的要求。三、 Ma*7219由于IO引脚有限,所以采用串行方式控制数码管,数码管驱
7、动芯片选择Ma*7219,它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参与,每位独立控制,部有解码器,可选择解码和不解码两种方式,亮度可以通过数字或模拟方式控制。从各个方面来讲,它都是本例的最正确选择。图2.2.1 Ma*7219实物图第三节 系统原理图和单元电路介绍系统主要由单片机,电机驱动电路,控制电路,电源电路以及数码管显示电路组成,系统原理图如以下图。图 系统原理图下面是各个模块的具体介绍:1. 电机驱动模块因为L298N逻辑1输入电压可低至2.3V,所以可以用430单片机直接驱动,IN1、IN2、IN3和IN4接到单片机管脚上。Vss接供电电压,Vs接输入逻辑电压,可接
8、3.3V,本例为了走线方便,直接接5V。EN A和EN B接高电平,I SEN A、I SEN B通过一个小电阻接地,目的是限制负载电流过大,OUT1、OUT2、OUT3和OUT4直接接步进电机,因为电机的感性器件,电流不能突变,所以接上8个二极管以保护电源。另外在Vss和Vs附近必须接一个100uF的电容,当这个大电容离器件太远时,必须在近处再接一个小电容。图2.3.2电机驱动模块2. 电机控制模块如以下图,滑变用来控制电机的速度,Speed接到单片机的A7脚上,通过测量电压值,计算出恰当的延时时间,到达控制速度的目的。转动方向和Mode用来改变电机的转向和模式,即选择四相四拍或四相八拍模式
9、。图2.3.3 电机驱动模块3. 数码管显示模块由于IO引脚有限,所以采用串行方式控制数码管,数码管驱动芯片选择Ma*7219,它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参与,每位独立控制,部有解码器,可选择解码和不解码两种方式,亮度可以通过数字或模拟方式控制。从各个方面来讲,它都是本例的最正确选择。图2.3.4 电平转换模块图2.3.5 数码管驱动模块图2.3.6 数码管注意在使用时必须在该芯片附近接一个大电容,比方4.7uF。由于它是5V逻辑电平,而MSP430是3.3V电平,所以用74HC573进展电平转换。数码管用的是共阴极四位数码管,这是由驱动芯片Ma*7219决定的
10、。第四节 PCB板与系统元器件清单1. PCB板图 PCB板正面图 PCB板反面2. 系统元件清单如表所示。表 元件清单mentDescriptionLibRefQuantitySpeedPotention MeterPOT_Control1104CapacitorCAP310KResistorRes2447KResistorRes2150RResistorRes22LED8_*4四位数码管LED8_*4174HC573电平转换芯片74HC5731Ma*7219Digital LED DriverMa*72191IN4007二极管IN40078MSP430G2231DIP-14MSP430G2
11、*311Heat sink-298散热片Heat sink-2981On/Off带自锁的按键KEY_LOCK1L298NDual Full Bridge DriverL298N15VHeader, 2-PinHeader 21100uFCapacitorCAPACITOR POL14.7uFCapacitorCAPACITOR POL1Stepping Moter步进电机Stepping Moter1Direction转向SW SPDT1Mode模式SW SPDT1第五节 PCB板设计要求和本卷须知由于是大功率器件,所以100uF电容必须离芯片越近越好,否则应再在L298N附近加上一个小电容,
12、此外二极管也必须离芯片输出引脚越近越好。Ma*7219的电容也应该离芯片越近越好。第六节 安装调试本卷须知由于是大功率器件,所以要加散热片,安装时就先焊散热片,再插入L298N,用螺丝固定到散热片上后,再焊L298N的各个管脚。安装好的实验板、插上Laundrypad核心板后的实验板,以及连接上步进电机的实验板如以下图所示。图六.1安装好的板子图六.2插上Laundrypad核心板后的实验板图六.3 连接上步进电机的实验板第二章 作品软件系统设计第一节 程序流程图介绍本作品软件程序通过单片机P1.0、P1.1、P1.2和P1.3依次输出高或低产生一定的相序来驱动电机驱动芯片,进而驱动步进电机;
13、而转向和模式是通过重复扫描相应按键,判断其相应的上下从而对电机的转向和模式进展控制。系统流程图如以下图。图系统流程图通过AD对滑变的电压值的采样来决定转动速度的快慢,这局部是在AD中断中进展的。AD中断效劳子程序如以下图。图中断效劳子程序程序流程说明:处理数据和显示转速百分比是放在主循环里的,但是为了逻辑上了连续,把它们放到后面和中断效劳子程序一起介绍。第二节 子程序介绍1.初始化函数初始化函数用于设置系统的时钟、IO的配置,各个模块的配置,以及各个功能模块的初始化,只在系统初始化执行一遍,正面仅出几个重要的初始化函数的源代码,其余的读者可以自己根据需要编写:(1) 函数名:void Init
14、_CLK();输入输出变量:无功能:时钟配置(2) 函数名:void Init_IO();输入输出变量:无功能:IO配置(3) 函数名:voidConfigI_ADC();输入输出变量:无功能:ADC配置void ConfigI_ADC() /* Configure ADC Channel 7 */ ADC10CTL1 = INCH_7 + ADC10DIV_3; / ADC10CLK/4 ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE; _delay_cycles(100); / Wait for ADC Ref to
15、settle (4) 函数名:voidADC_Sample();输入输出变量:无功能:开场AD采样void ADC_Sample() ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start(5) 函数名:函数名:voidInit_Ma*7219();输入输出变量:无功能:配置Ma*7219的工作模式void Init_Ma*7219(void) Write_Ma*7219(SHUT_DOWN,0*01); /开启正常工作模式0*1 Write_Ma*7219(DISPLAY_TEST,0*00); /选择工作模式0*0 Write
16、_Ma*7219(DECODE_MODE,0*00); /选用全译码模式 Write_Ma*7219(SCAN_LIMIT,0*03); /4只LED Write_Ma*7219(INTENSITY,0*01); /设置初始亮度2.功能子函数功能子函数用来实现电机转速的控制,通过对按键的扫描实现电机模式和转向的切换,电机的驱动,以及相关参数在数码管上的显示。(1) 函数名:void SpeedCtrl(void);输入输出变量:无功能:计算延时系数,进而控制转速void SpeedCtrl() SpeedPercent = ADC_Result*12110; delay =50000L-Spe
17、edPercent*500L; / 数字后面的L声明这是一个长整型的数,不加的话系统会认为是一个整型数 (2) 函数名:void Key();输入输出变量:无功能:按键扫描,判断电机的转向和模式(3) 函数名:void Moter_Driver();输入输出变量:无功能:电机驱动void Moter_Driver() char j; if(SpeedPercent = 0) Step=8; / Stop the Moter else State+=Direction; if(Mode=2) & (State3)State=0; else if(State7)State=0; Step = St
18、ate * Mode; for(j=0;jj); switch (Step) case 0: STEP_A_ON;break; case 1: STEP_A_ON;STEP_B_ON;break; case 2: STEP_B_ON; break; case 3: STEP_B_ON;STEP_C_ON;break; case 4: STEP_C_ON; break; case 5: STEP_C_ON;STEP_D_ON;break; case 6: STEP_D_ON; break; case 7: STEP_D_ON;STEP_A_ON;break; case 8: STEP_ALL_O
19、FF; break; default: Step = State 1; Delay(delayj); (4) 函数名:void Display(char Num);输入变量:待显示数功能:显示一个二位数void Display(char Num) char Dgt1,Dgt2; Dgt1 = Num/10; Dgt2 = Num%10; Write_Ma*7219(2,DigitTabDgt1); Write_Ma*7219(1,DigitTabDgt2);(5) 函数名:voidWOV(signed char Pace,signed char Mode);输入变量:当前电机位置,模式四拍、八
20、拍功能:显示电机当前的位置和模式3. 中断效劳子程序本作品中只用到了AD中断,在中断中读取AD采样结果后退出,在主循环中进展数据处理,以到达控制转速的效果。AD中断效劳子程序如下:*pragma vector=ADC10_VECTOR_interrupt void ADC10_ISR (void) ADC_Result = ADC10MEM; ADC_Sample(); /開始下一次採樣第三节 程序调试1.在CCS下编写完程序后,执行编译Build图编译、调试、下载窗口2.编译通过,执行Debug图 调试窗口3. 调试过程中,可在线查看变量和存放器的值Debug窗口下,自左向右依次是去掉断点、
21、全速运行、暂停、停顿、进入、单步、汇编进入、汇编单步、返回、同步时钟、复位。在程序运行后,暂停时可以翻开Watch和Regesiter窗口观察存放器和变量的变化。图 查看变量、存放器值4.设置断点,然后全速运行,被断点断下来,观察相应的变量的值,看是否正确,如不正确则进展相应的改正。图 设置断点调试窗口第三章 总结与思考本作品是以MSP430G2系列Launchpad开发平台为核心板,加上功能模块底板,实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。本作品的特点:1.稳定性方面,采用了加速曲线的措施实现了较快的转速,同时保
22、证系统的运行稳定。2.显示方面,用数码管的前两个字显示模式和方向,如果是四拍则每次同时显示二个段码,如果是八拍显示一个,然后随着电机的转动,段码也开场转动。方向一致,速度也随着电机转动的快慢而变化。本作品的缺乏在于:1.在电机换向的时候是没有等电机停顿转动再换向,而是直接换向,这样造成电机在换向一瞬间有较大的振动。2.没有区别对待电机从零开场加速的加速曲线和匀速运行时的加速曲线,影响电机的最高转速。同时发现了一些硬件和软件方面的问题,比方如果用TA中断来代替延时,程序就用跑飞,而用空循环就可以正常运行;再比方同样的程序,用IAR集成开发工具下载调试,电机就可以正常转动,而用CCS却不行。思考题:1.怎样进一步提高转动的稳定度与转速.2.如果采用加速曲线,加速曲线采用线性曲线、S形曲线还是指数形曲线.它们的实现难度如何.3.在切换转向时应该等电机停下来之后再反向加速,怎样判断电机已经停下来了.4.在带负载的情况下如何准确稳定控制.5.怎样实时显示转动速度.