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

下载本文档

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

文档简介

1、msp430g2系列launchpad开发板应用实例作品基于msp430g2231实现的步进电机控制张旭美国德州仪器半导体技术上海(有限)公司西安电子科技大学msp430单片机联合实验室2011年12月目录第一章作品概述1第一节基本情况1第二节软硬件总体设计方案1第二章作品硬件系统设计3第一节msp430g2系列launchpad开发板组成及硬件资源情况介绍3第二节关键器件选型以及性能指标参数4第三节系统原理图和单元电路介绍6第四节pcb板与系统元器件清单9第五节pcb板设计要求和注意事项11第六节安装调试注意事项11第三章作品软件系统设计14第一节程序流程图介绍14第二节子程序介绍15第三节

2、程序调试19第四章总结与思考22第一章 作品概述第一节 基本情况msp430g2系列launchpad是ti推出的一款低成本的开发平台。它适用于适用于ti 最新msp430g2xx 系列产品,其基于usb 的集成型仿真器可提供为全系列msp430g2xx 器件开发应用所必需的所有软、硬件。本作品选择msp430g2231为launchpad核心板的单片机,采用launchpad核心板加底板的形式,实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。第二节 软硬件总体设计方案本作品选择msp430g2231为launchpad核

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

4、中断等资源,设计出高效率、低功耗、结构紧凑而又功能强大的产品。第二章 作品硬件系统设计第一节 msp430g2系列launchpad开发板组成及硬件资源情况介绍msp430g2系列launchpad是ti推出的一款低成本的开发平台。它适用于适用于ti 最新msp430g2xx 系列产品,其基于usb 的集成型仿真器可提供为全系列msp430g2xx 器件开发应用所必需的所有软、硬件。launchpad 具有集成的dip 目标插座,可支持多达20 个引脚,从而使msp430 value line 器件能够简便地插入launchpad 电路板中。此外,其还可提供板上flash 仿真工具,以直接连接

5、至pc 轻松进行编程、调试和评估。launchpad 试验板还能够对ez430-rf2500t 目标板、ez430-chronos 手表模块ez430-f2012t/f2013t 目标板进行编程。此外,它还提供了从msp430g2xx 器件到主机pc 或相连目标板的9600 波特uart 串行连接。其实物图如图2.1所示。图2.1.1 msp430g2系列launchpad开发板实物图msp430g2系列launchpad开发板硬件资源: usb 调试与编程接口无需驱动即可安装使用,且具备高达9600 波特的uart 串行通信速度 支持所有采用pdip14 或pdip20 封装的msp430g

6、2xx 和msp430f20xx 器件 分别连接至绿光和红光led 的两个通用数字i/o 引脚可提供视觉反馈 两个按钮可实现用户反馈和芯片复位 器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板 高质量的20 引脚dip 插座,可轻松简便地插入目标器件或将其移除第二节 关键器件选型以及性能指标参数一、 步进电机本作品选用的是常州市德利来电器有限公司生产的35by48bh10型步进电机,其技术数据、接线图、外形图和实物图如下所示。1. 技术数据型号步矩角相数电压电流电阻电感(400hz)最大静转矩 定位转距转动惯量引线规格35by48bh107.54120.286422540

7、0907.9ul1095 awg282. 接线图 & 外形图 & 实物图 图 二.1接线图 图 二.2 外形图 图 二.3 实物图二、 l298n作为电机驱动的核心器件,电机驱动芯片的选型对整个系统的可靠性和性能都起着至关重要的作用。本作品中选用了意法半导体st生产的l298n电机驱动芯片。其关键指标如下:图2.2.1 l298n实物图1. 供电电压可高达46v,直流电流可达4a。完全满足步进电机的驱动要求。2. 低饱和电压。3. 过热保护。4. 逻辑0输入电压可达1.5v,可有效抑制噪声;逻辑1输入电压可低至2.3v,所以可以用430单片机直接驱动。综上可见,l298n电机驱动芯片可以完全满

8、足本作品的要求。三、 max7219由于io引脚有限,所以采用串行方式控制数码管,数码管驱动芯片选择max7219,它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参与,每位独立控制,内部有解码器,可选择解码和不解码两种方式,亮度可以通过数字或模拟方式控制。从各个方面来讲,它都是本例的最佳选择。图2.2.1 max7219实物图第三节 系统原理图和单元电路介绍系统主要由单片机,电机驱动电路,控制电路,电源电路以及数码管显示电路组成,系统原理图如图2.3.1所示。图2.3.1 系统原理图下面是各个模块的具体介绍:1. 电机驱动模块因为l298n逻辑1输入电压可低至2.3v,所以可以用4

9、30单片机直接驱动,in1、in2、in3和in4接到单片机管脚上。vss接供电电压,vs接输入逻辑电压,可接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脚上,通过测量电压值,计

10、算出恰当的延时时间,达到控制速度的目的。转动方向和mode用来改变电机的转向和模式,即选择四相四拍或四相八拍模式。图2.3.3 电机驱动模块3. 数码管显示模块由于io引脚有限,所以采用串行方式控制数码管,数码管驱动芯片选择max7219,它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参与,每位独立控制,内部有解码器,可选择解码和不解码两种方式,亮度可以通过数字或模拟方式控制。从各个方面来讲,它都是本例的最佳选择。图2.3.4 电平转换模块图2.3.5 数码管驱动模块图2.3.6 数码管注意在使用时必须在该芯片附近接一个大电容,比如4.7uf。由于它是5v逻辑电平,而msp430是

11、3.3v电平,所以用74hc573进行电平转换。数码管用的是共阴极四位数码管,这是由驱动芯片max7219决定的。第四节 pcb板与系统元器件清单1. pcb板图2.4.1 pcb板正面图2.4.2 pcb板背面2. 系统元件清单如表2.4.1所示。表2.4.1 元件清单commentdescriptionlibrefquantityspeedpotention meterpot_control1104capacitorcap310kresistorres2447kresistorres2150rresistorres22led8_x4四位数码管led8_x4174hc573电平转换芯片74h

12、c5731max7219digital led drivermax72191in4007二极管in40078msp430g2231dip-14msp430g2x311heat sink-298散热片heat sink-2981on/off带自锁的按键key_lock1l298ndual full bridge driverl298n15vheader, 2-pinheader 21100ufcapacitorcapacitor pol14.7ufcapacitorcapacitor pol1stepping moter步进电机stepping moter1direction转向sw spdt1

13、mode模式sw spdt1第五节 pcb板设计要求和注意事项由于是大功率器件,所以100uf电容必须离芯片越近越好,否则应再在l298n附近加上一个小电容,此外二极管也必须离芯片输出引脚越近越好。max7219的电容也应该离芯片越近越好。第六节 安装调试注意事项由于是大功率器件,所以要加散热片,安装时就先焊散热片,再插入l298n,用螺丝固定到散热片上后,再焊l298n的各个管脚。安装好的实验板、插上laundrypad核心板后的实验板,以及连接上步进电机的实验板如下图所示。图 六.1安装好的板子图 六.2插上laundrypad核心板后的实验板图 六.3 连接上步进电机的实验板第三章 作品

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

15、函数用于设置系统的时钟、io的配置,各个模块的配置,以及各个功能模块的初始化,只在系统初始化执行一遍,正面仅出几个重要的初始化函数的源代码,其余的读者可以自己根据需要编写:(1) 函数名:void init_clk();输入输出变量:无功能:时钟配置(2) 函数名:void init_io();输入输出变量:无功能:io配置(3) 函数名:void configi_adc();输入输出变量:无功能:adc配置void configi_adc() /* configure adc channel 7 */ adc10ctl1 = inch_7 + adc10div_3; / adc10clk/4

16、 adc10ctl0 = sref_1 + adc10sht_3 + refon + adc10on + adc10ie; _delay_cycles(100); / wait for adc ref to settle (4) 函数名:void adc_sample();输入输出变量:无功能:开始ad采样void adc_sample() adc10ctl0 |= enc + adc10sc; / sampling and conversion start(5) 函数名:函数名:void init_max7219();输入输出变量:无功能:配置max7219的工作模式void init_ma

17、x7219(void) write_max7219(shut_down,0x01); /开启正常工作模式(0xx1) write_max7219(display_test,0x00); /选择工作模式(0xx0) write_max7219(decode_mode,0x00); /选用全译码模式 write_max7219(scan_limit,0x03); /4只led write_max7219(intensity,0x01); /设置初始亮度 2.功能子函数功能子函数用来实现电机转速的控制,通过对按键的扫描实现电机模式和转向的切换,电机的驱动,以及相关参数在数码管上的显示。(1) 函数名

18、:void speedctrl(void);输入输出变量:无功能:计算延时系数,进而控制转速void speedctrl() speedpercent = adc_result*12110; delay =50000l-speedpercent*500l; / 数字后面的l声明这是一个长整型的数,不加的话系统会认为是一个整型数 (2) 函数名:void key();输入输出变量:无功能:按键扫描,判断电机的转向和模式(3) 函数名:void moter_driver();输入输出变量:无功能:电机驱动void moter_driver() char j; if(speedpercent = 0

19、) step=8; / stop the moter else state+=direction; if(mode=2) & (state3)state=0; else if(state7)state=0; step = state * 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;

20、 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(delayj); (4) 函数名:void display(char num);输入变量:待显示数功能:显示一个二位数void display(char num) char dgt1,dgt2; dgt1 = num/10; dgt2 = num%10; write_max7219

21、(2,digittabdgt1); write_max7219(1,digittabdgt2);(5) 函数名:void wov(signed char pace,signed char mode);输入变量:当前电机位置,模式(四拍、八拍)功能:显示电机当前的位置和模式3. 中断服务子程序本作品中只用到了ad中断,在中断中读取ad采样结果后退出,在主循环中进行数据处理,以达到控制转速的效果。ad中断服务子程序如下:#pragma vector=adc10_vector_interrupt void adc10_isr (void) adc_result = adc10mem; adc_sample(); /開始下一次採樣第三节 程序调试1.在ccs下编写完程序后,执行编译(build)图3.3.1 编译、调试、下载窗口2.编译通过,执行debug图3.3.2 调试窗口3. 调试过程中,可在线查看变量和寄存器的值debug窗口下,自左向右依次是去掉断点、全速运行、暂停、停止、进入、单步、汇编进入、汇编单步、返回

温馨提示

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

评论

0/150

提交评论