基于MSP430实现的步进电机控制_第1页
基于MSP430实现的步进电机控制_第2页
基于MSP430实现的步进电机控制_第3页
基于MSP430实现的步进电机控制_第4页
基于MSP430实现的步进电机控制_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、作品概述第一节 基本情况MSP430G2列Launchpad是TI推出的一款低成本的开发平台。 它适用于适 用于TI最新MSP430G2xxK列产品,具基于USB的集成型仿真器可提供为全系 列MSP430G2xXS件开发应用所必需的所有软、硬件。本作品选择 MSP430G2231 为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,实现了对 步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。第二节 软硬件总体设计方案本作品选择 MSP430G223为Launchpad核心板的单片机,采用 Launchpad

2、 核心板加底板的形式,对步进电机进行控制。滑变,即滑动变阻器,用来控制电 机的转速,本系统共有两个拨动按键,一个拨动按键用来选择步进电机的模式, 如四相八拍或四相四拍,另一个拨动按键用来控制转动方向。数码管可用来显示模式和方向,以及转速的百分比。系统总体设计框图如下图 1.2.1 系统总体设计框图在硬件设计时,只需设计外围电路,留出与 Launchpad核心板的接口即可, 既节约了设计时间,又节省了成本,而且无需额外购买仿真器,从而使设计成本到达最低。在软件设计方面,可充分利用G2系列单片机的各个功能模块,如时钟系统、 TA定时器、ADC1瞅数转换器,看门狗,以及IO 口中断等资源,设计出高效

3、率、 低功耗、结构紧凑而又功能强大的产品。第一章 作品硬件系统设计第一节MSP430G2歹U Launchpad开发板组成及硬件资源情况介绍MSP430G2列Launchpad是TI推出的一款低成本的开发平台。 它适用于适用于TI最新MSP430G2xxK列产品,具基于USB的集成型仿真器可提供为全系列MSP430G2xXS件开发应用所必需的所有软、硬件。LaunchPad具有集成的DIP目标插座,可支持多达20个引脚,从而使MSP43(Value Line器件能够简便地插入LaunchPad电路板中。此外,其还可提供板上 Flash仿真工具,以直接连接至PC轻松进行编程、调试和评估。Laun

4、chPad试验板还能够对eZ430-RF2500T 目标板、eZ430-Chronos手表模块eZ430-F2012T/F2013T目标板进行编程。止匕外,它还提供了从MSP430G2xXS件至IJ主机PC或相连目标板的9600波特UART串行连接。其实物图如图2.1所示。USB CornoctionDebugging wnd progrsmnijng int9rfceTwo LEDsSpy-Si-Wire and MSP43Q AQplFcationi UART图2.1.1 MSP430G2系列Launchpad开发板实物图Valuer Line dev icePush BulionsMSP

5、430Gg歹U LaunchpacFF发板硬件资源:? USB调试与编程接口无需驱动即可安装使用,且具备高达9600波特的UART串行通信速度?支持所有采用 PDIP14 或PDIP20 封装的 MSP430G2x>f口MSP430F20X燔?分别连接至绿光和红光 LED的两个通用数字I/O引脚可提供视觉反馈?两个按钮可实现用户反馈和芯片复位?器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板?高质量的20引脚DIP插座,可轻松简便地插入目标器件或将其移除第二节关键器件选型以及性能指标参数一、步进电机本作品选用的是常州市德利来电器有限公司生产的35BY48BH1侬步进

6、电机,其技术数据、接线图、外形图和实物图如下所示1.技术数据型号步矩角相数电压电流电阻电感(400Hz)最大静 转矩定位转距转动惯量引线规格35BY48BH107.54120.2864225400907.9UL1095 AWG282.接线图&外形图&实物图f a tYEL 疆Q+&Kgd 11 S图 二.1接线图图 二.2外形图图 二.3实物图二、L298N作为电机驱动的核心器件,电机驱动芯片的选型对整个系统的可靠性和性能都起着至关重要的作用。本作品中选用了意法半导体 ST生产的L298N电机驱动芯片。其关键指标如下:图2.2.1 L298N实物图1 .供电电压可高达4

7、6V,直流电流可达4A。完全满足步进电机的驱动要求。2 .低饱和电压。3 .过热保护。4 .逻辑0输入电压可达1.5V,可有效抑制噪声;逻辑1输入电压可低至2.3V,所以可以用430单片机直接驱动。综上可见,L298N电机驱动芯片可以完全满足本作品的要求。三、Max7219由于IO引脚有限,所以采用串行方式控制数码管,数码管驱动芯片选择 Max7219它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参 与,每位独立控制,内部有解码器,可选择解码和不解码两种方式,亮度可以通 过数字或模拟方式控制。从各个方面来讲,它都是本例的最佳选择。第三节 系统原理图和单元电路介绍系统主要由单片机,电

8、机驱动电路,控制电路,电源电路以及数码管显示 电路组成,系统原理图如图2.3.1所示。匚尸1 I 丁i.一二一8 S S ±1 = 7W图2.3.1系统原理图下面是各个模块的具体介绍:1 .电机驱动模块因为L298N逻辑1输入电压可低至2.3V,所以可以用430单片机直接驱动, IN1、IN2、IN3和IN4接到单片机管脚上。Vss接供电电压,Vs接输入逻辑电压, 可接3.3V,本例为了走线方便,直接接 5V。EN A和EN B接高电平,I SEN A、 I SEN B通过一个小电阻接地,目的是限制负载电流过大, OUT1 OUT2 OUT3 和OUT4ft接接步进电机,因为电机的感

9、性器件,电流不能突变,所以接上 8个 二极管以保护电源。另外在 Vss和Vs附近必须接一个100uF的电容,当这个大 电容离器件太远时,必须在近处再接一个小电容。'llC-4L2W2 口:-i图2.3.2电机驱动模块DJ *sin口131111匚匚丁 OLT;国;1A 西川B亍.4JL由cDcwj2 .电机控制模块如图所示,滑变用来控制电机的速度,Speed接到单片机的A7脚上,通过 测量电压值,计算出恰当的延时时间,达到控制速度的目的。转动方向和Mode用来改变电机的转向和模式,即选择四相四拍或四相八拍模式。vcc|R4 10KR5WKPailSpeedS2ModeA io deoD

10、irection图2.3.3电机驱动模块3 .数码管显示模块由于IO引脚有限,所以采用串行方式控制数码管,数码管驱动芯片选择Max7219它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参与,每位独立控制,内部有解码器,可选择解码和不解码两种方式,亮度可以通过数字或模拟方式控制。从各个方面来讲,它都是本例的最佳选择D2 DIXD3 CLKdTToad9TGND ,1阮 ID 2D 3D 4D 5D 6D P SD GNDVCCIQ4Q >Q 6Q Q SQ LE15C31041 14 D©:二 TT1VCCFHC5 门图2.3.4电平转换模块14 SEG A T9-C

11、LX-SEGDSEGDP21 SEGESEGCk4DINDQUTDIG 0SIG DDTGJSEGDPGDSEGEDIGSSEGCDIG 2V)DIG 3ISETDIG ?SEG GGNDS£GBDIG 5SEGFDIG 1SfG ALOADCLKITTsSEGGSEGBSEGF 4 K-5图 2.3.5数码管驱动模块SMGlLtL& XIVI禀 L-Bu S必附ss注意在使用时必须在该芯片监近接一个大电容,比如4.7uF。由于它是5V逻辑电平,而 MSP43Q1 3.3V电平,所以用74HC573!行电平转换。数码管用的是共阴极四位数码管,这是由驱动芯片Max7219决定的

12、第四节PC琳与系统元器件清单1 . PCBfeOOO-O0O-介。0ah口 1 E:点 -I配电& ri由n Q>q_xjao四 叫 n3DOOOOCOOC图2.4.1 PCB板正面公部<-:。器*# K图2.4.2 PCB板背面2 .系统兀件清单如表2.4.1所小表2.4.1元件清单CommentDescriptionLibRefQuantitySpeed'Potention MeterPOT_Control1104CapacitorCAP310KResistorRes2447KResistorRes2150RResistorRes22LED8_X4四位数码管LE

13、D8_X4174HC573电平转换芯片74HC5731Max7219Digital LED DriverMax72191IN4007二极管IN40078MSP430G2231DIP-14MSP430G2X311Heat sink-298散热片Heat sink-2981On/Off带自锁的按键KEY_LOCK1L298NDual Full BridgeDriverL298N15VHeader, 2-PinHeader 21100uFCapacitorCAPACITOR POL14.7uFCapacitorCAPACITOR POL1Stepping Moter步进电机Stepping Mote

14、r1Direction转向SW SPDT1Mode模式SW SPDT1第五节PC琳设计要求和注意事项由于是大功率器件,所以100uF电容必须离芯片越近越好,否则应再在L298N附近加上一个小电容,此外二极管也必须离芯片输出引脚越近越好。Max7219的电容也应该离芯片越近越好。第六节安装调试注意事项由于是大功率器件,所以要加散热片,安装时就先焊散热片,再插入L298N用螺丝固定到散热片上后,再焊 L298N的各个管脚。安装好的实验板、插上Laundrypad核心板后的实验板,以及连接上步进电机的实验板如下图所示。图六.1 安装好的板子图六.2插上Laundrypad核心板后的实验板图六.3连接

15、上步进电机的实验板第二章 作品软件系统设计第一节程序流程图介绍本作品软件程序通过单片机 P1.0、P1.1、P1.2和P1.3依次输出高或低产生 一定的相序来驱动电机驱动芯片,进而驱动步进电机;而转向和模式是通过重复 扫描相应按键,判断其相应的高低从而对电机的转向和模式进行控制。系统流程 图如图3.1.1所示。:开始)图3.1.1系统流程图通过AD对滑变的电压值的采样来决定转动速度的快慢,这部分是在AD中断中进行的。AD中断服务子程序如图3.1.2所示。图3.1.2中断服务子程序程序流程说明:处理数据和显示转速百分比是放在主循环里的,但是为了逻辑上了连续,把它们放到后面和中断服务子程序一起介绍

16、。第二节子程序介绍1.初始化函数初始化函数用于设置系统的时钟、IO的配置,各个模块的配置,以及各个 功能模块的初始化,只在系统初始化执行一遍,正面仅出几个重要的初始化函数 的源代码,其余的读者可以自己根据需要编写:(1)函数名:void Init_CLK();输入输出变量:无功能:时钟配置2) )函数名:void Init_IO();输入输出变量:无功能: IO 配置3) 函数名:void ConfigI_ADC();输入输出变量:无功能:ADCg已置void ConfigI_ADC()/* Configure ADC Channel 7 */ADC10CTL1 = INCH_7 + ADC1

17、0DIV_3; / ADC10CLK/4ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON + ADC10IE;_delay_cycles(100);/Wait for ADCRef to settle4) 函数名:void ADC_Sample();输入输出变量:无功能:开始AD采样void ADC_Sample()ADC10CTL0 |= ENC + ADC10SC; / Sampling and conversion start 5) 函数名:函数名:void Init_Max7219();输入输出变量:无功能:配置Max7219的工作模式

18、void Init_Max7219(void)Write_Max7219(SHUT_DOWN,0x01);Write_Max7219(DISPLAY_TEST,0x00);Write_Max7219(DECODE_MODE,0x00);/Write_Max7219(SCAN_LIMIT,0x03);Write_Max7219(INTENSITY,0x01);/4/开启正常工作模式(0xX1)选择工作模式(0xX0)选用全译码模式只 LED设置初始亮度2. 功能子函数功能子函数用来实现电机转速的控制,通过对按键的扫描实现电机模式和转向的切换,电机的驱动,以及相关参数在数码管上的显示1) 函数名:

19、void SpeedCtrl( void );输入输出变量:无功能:计算延时系数,进而控制转速void SpeedCtrl()SpeedPercent = ADC_Result*121>>10;delay =50000L-SpeedPercent*500L;/ 数字后面的L 声明这是一个长整型的数,不加的话系统会认为是一个整型数2) 函数名:void Key();输入输出变量:无功能:按键扫描,判断电机的转向和模式3) 函数名:void Moter_Driver();输入输出变量:无功能:电机驱动void Moter_Driver()char j;if(SpeedPercent =

20、 0) Step=8; / Stop the Moter elseState+=Direction;if(Mode=2) && (State<0)State=3;else if(Mode=2) && (State>3)State=0;else if(State<0)State=7;else if(State>7)State=0;Step = State * Mode;for(j=0;j<8;j+)/ 加速曲线STEP_ALL_OFF;Delay(delay-delay>>j);switch (Step)case 0: S

21、TEP_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_OFF; break;default: Step = State >>1;Delay(delay>

22、;>j);4) 函数名:void Display( char Num);输入变量:待显示数功能:显示一个二位数void Display(char Num)char Dgt1,Dgt2;Dgt1 = Num/10;Dgt2 = Num%10;Write_Max7219(2,DigitTabDgt1);Write_Max7219(1,DigitTabDgt2);5) 函数名:void WOVs(igned char Pace,signed char Mode);输入变量:当前电机位置,模式(四拍、八拍)功能:显示电机当前的位置和模式3.中断服务子程序本作品中只用到了 AD中断,在中断中读取A

23、D采样结果后退出,在主循环中进行数据处理,以达到控制转速的效果。AD中断服务子程序如下:#pragma vector=ADC10_VECTOR_interrupt void ADC10_ISR (void) ADC_Result = ADC10MEM;ADC_Sample();/I1始下一次#®第三节程序调试1.在CCSF编写完程序后,执行编译(Build )图3.3.1 编译、调试、下载窗口2.编译通过,执行Debug 小崎厢 标加i (44日3>EFk Edt y«w lEMMI MAC TSfWE r»t .MM附 H. ' ; 电也 电 9W

24、 口M口 H* :,勺_;.*'t 弓,jpr/ktadi 工Wi闻 TLW步司 ul£iL?M£P4 W*ad 4的山弓zn常-R rkfflS Lnw 11|母皿用 O * <4vi i lb 也=1 c_rfiH>_nMiM it Hkcu口E2 £m!hc. TJ MSH» OWLMJHMi 口髀帽切a参Dtibu. nLM 1:1文C:i K 修4工5、口M /忙岛丁: bfTriiiUUe*TfP*Feri i- 01 torumWEpiprW wiiH|h的.£echarvanvald二座工廿¥”工作

25、&甘d&iay) ?raid maln()DT?W - WDTttOLD?mi Juki ; ?tu.it._lO (); CGJiIigI_AMtl ;AXQSZ*皿 J, Init_MaK7219O jEiuin;wtni*1n iKfcVO;大I 一刑Hl潞益武呼.k黑瑞I舄瑞X "零"学或"震器我 d 4 1-1 1- 1 L D 1 1 1 4 1 .4 1iWWC;TUlfj 二 I i:MH I zxlCi: f£UWl kEAUE.:日Cmm旗nPBSMJDuSEn *SH3Dr:7.Lfrti BfC9u-afl ifc

26、ei iVSMTn- rir* ri图3.3.2调试窗口3 .调试过程中,可在线查看变量和寄存器的值Debug窗口下,自左向右依次是去掉断点、全速运行、暂停、停止、进入、 单步、汇编进入、汇编单步、返回、同步时钟、复位。在程序运行后,暂停时可以打开 Watch和Regesiter窗口内观察寄存器和变量的 变化。Local atch (13 算RegE:erE 1 :*殖(畲岭岛 ADDJSHamsValueAddressTypeForg= delay10000OXOZObuntried longDecg= Step80x0203charDec色卜5t3teQ0x0202charDecg Dir

27、ection1OX皿口charDecMode1Dec<ll明二-1>图3.3.3查看变量、寄存器值4 .设置断点,然后全速运行,被断点断下来,察看相应的变量的值,看是否 正确,如不正确则进行相应的改正Fki Edi yw4a州TuhwM£m h*&%昂喙曲h|flk/0邛 中33口 *- a -* *鲁 # t:小闻 UH印菜*LTEAi闻声小武。的3弓yn:芾 X"*。-,Ttvratl mf r. J SyjnEE. LU杷1AA Ifl-=1 mtrO x rai.cAB OxfiL2里 2 <_reKi_Wi« Ht bW.elM

28、 MwcFIKE'IU L&al(i *i 禺eJ M Eawe 1日苴看 jA gT-七Im3小读T>p«工”30加1 小”SI (STEPMiSOFF?Zm 1 ay f ds 1 ay-d>= 1 ay»j 卜 j和 WLth t 联。plBQ (case 。: 5TE.?_M_QSrbnik;CLM 1: ST&P JOMFgrW.B.W bruk?case 2: £T£P_fi_(Mi?bmftk:us* 3; 5TCT > 网5TEP C 丽 bruk?cue *: £TE自 C M;Ehe

29、*" tunn V 吧薛 0 i-Ff-ioHrie:Bh募R三H M51M3D UBfrl HS3D(a7:LfcMfFlMi PEcgm iQDiML CE lii« - T»tr 1J56 匕*七* Wt: 50 bytf,图3.3.1设置断点调试窗口第三章总结与思考本作品是以MSP430G2歹1Launchpad开发平台为核心板,加上功能模块底板, 实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。本作品的特点:1. 稳定性方面,采用了加速曲线的措施实现了较快的转速,同时保证系统的运行稳

30、定。2. 显示方面,用数码管的前两个字显示模式和方向,如果是四拍则每次同时显示二个段码,如果是八拍显示一个,然后随着电机的转动,段码也开始转动。方向一致,速度也随着电机转动的快慢而变化。本作品的不足在于:1. 在电机换向的时候是没有等电机停止转动再换向,而是直接换向,这样造成电机在换向一瞬间有较大的振动。2. 没有区别对待电机从零开始加速的加速曲线和匀速运行时的加速曲线,影响电机的最高转速。同时发现了 一些硬件和软件方面的问题,比如如果用TA中断来代替延时,程序就用跑飞,而用空循环就可以正常运行;再比如同样的程序,用 IAR 集成开发工具下载调试,电机就可以正常转动,而用CCS®不行

31、。思考题:1. 怎样进一步提高转动的稳定度与转速?2. 如果采用加速曲线,加速曲线采用线性曲线、S 形曲线还是指数形曲线?它们的实现难度如何?3. 在切换转向时应该等电机停下来之后再反向加速,怎样判断电机已经停下来了?4. 在带负载的情况下如何准确稳定控制? 心J*F& "ME*EW*>Kf*询"E* KW “THIfKGWW n 加” 啊 K ”RF*XmM«E 衿*gft»* ZF 3*"<W""k 种 s*WFFft>»EEW rt*"F”THf iHirK*<r&#

32、187; m g F *e _ F F2k"HkgKF £swem>i“k I1 0*k 吁 sb*m fGgc*WR ggeiwFL y*.莆w*ev»nB«*k »f*3 umk yywse f“k=*f+k 吁 s0*Mf*a«n>g *W3"K*irn 膈 s y 2 f em irn*Mr*F*>«> gKF*o>we g.,«K mM*f*K*“ *«0 ecovr ff bnvi «*"< lfe莆1 s,*k3>»au =(kie*vea< iwd1 <v* <«*cr 聿”s- anaKefXTBF"-x* «>»«=* 一 vw,*e*»a*km MHki*ve* w“ki> ipcecr *-«* «mf»Ts 大*"mauukwe*«-4*wr1*« *» qz" mv»>« 5*urw*!* mwE3«e)*"> "”

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论