基于MSP430实现的步进电机控制

合集下载

用MSP430F149单片机实现步进电机通用控制器

用MSP430F149单片机实现步进电机通用控制器
实现方法。 j。 蔓 I ● 。
霪 娶毋 r 蕈
- 0 0
0妻 嚣 j
关键词 :M S
单片机 ;步进 电机 ; 通用控制器
0 il l ≮
一I 嚣露 零 l。 l l 譬≯ l
系 统 设 计
系统 结构 本控 制 器 主要 实 现 了 多台 步进 电机 在 多段 曲线 上 的



技 术


一 一
f 放大的起动过程
运行曲线

用 机实现 单片 步进电 加/速控制, 际上 机的 减 实 就是
控制 发脉 冲的频 率 , 升速 时 , 使脉 冲频 率 增高 , 速时 相 减
反。 如果 使 用定 时 中断 来 控制 电机 的速 度 , 加减 速控 制 就
图4连续 模式的定 时间隔输 出
积小 、可 靠 性 高 。
一般不小于 5 s、脉冲序列的均匀度及高低电平方式 。 g)
7r甘 . 击 ] th : ‘ 吉 S , r 士 r , 企 I L 壬 7 7 陂 、 击 士
向一升 速 三 个过 程 。
步进 电机起动及加 / 减速控制方案




t l e .
r -
算是在定时中断外实现的, 并不 占用中断时间 , 保证电机

前D 硝 勺 I 最  ̄ c t; -P  ̄, .

后 /
\ D勺 -硝i 下- ̄  ̄t I第 c. P,
此时D l 向 II 换
的高速运行。
②证制度精性要一速准达 保控速的确;从个度确到
方 向 DR I
步 进 电 动 机 的 最 高 起 动 频 率 ( 跳 频 率 ) 般 为 突 一

基于MSP430的步进电机实验-IO口控制

基于MSP430的步进电机实验-IO口控制
二、实验内容:
1、实现步进电机开启、停止;
2、
3、实现步进电机正转、反转;;
4、实现步进电机调速。
三、实验原理:
1、步进电机控制原理:
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:
Speed_Update();
delay(m);
P3OUT=BIT2+BIT3;
Speed_Update();
delay(m);
a=P1IN&0X10;//更新转向控制值
b=P1IN&0X20;//更新启动控制值
}
}
else if((a!=0x10)&&(b==0X20))//反转时序
{
while((a!=0x10)&&(b==0X20))
(1)控制换相顺序即各个控制线通电顺序,这一过程称为脉冲分配。给步进电机一列脉冲并循环下去,那么步进电机会不停地转动。
(2)控制步进电机的转向,如果给定工作方式正序换相通电,步进电机正转;如果按反序通电换相,则电机就反转。
(3)控制步进电机的速度,如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。
{
while(tim--);
}
void Speed_Update(void)//延时选择子函数

基于MSP430单片机的步进电机细分驱动器

基于MSP430单片机的步进电机细分驱动器
种类 , 混合 式步 进 电机 兼 有永 磁式 和 反应 式 步进 电 机的优 点 , 有结构 简单 、 具 运行 平稳 、 噪音低 、 度高 精 等优点 , 到广 泛 应 用 。在 混 合式 步 进 电机 中两 相 得 混合式 步进 电机 因为 内部结构 及控制 电路结 构简单 应 用最 为广泛 。对 于混合 式步 进 电机在 传统 的整步
及半步驱动方式下工作时存在许多缺点 , 主要表现 为工作噪声大 、 振动大、 控制精度低、 故障率高等, 不 能满足许多控制领域的技术要求, 了解决这些 问 为 题, 提高步进 电机 的运行平 稳性、 可靠性及控制精 度, 这里 以 MB 4 0 片机为微控制器 , P3 单 采用细分
驱 动 的原 理 , 设计 并实 现 了步进 电机 的细分驱 动器 , 为解 决相关 的 问题提 出 了可行 的途径 。
绕组换相时 , 电机绕组中的电流是不受控制的, 在八 拍驱动模式下绕组的电流从 0变化到最大值, 或从 最大值变化到 0 而在四拍驱动模式下绕组中的电 , 流是在正向电流最大值与反向电流最大值之间交替 变化 , 在步进 电机每个驱动脉冲到来时由于绕组电
流 的剧 烈变 化就 造 成 了 电机驱 动 力矩 的 大 幅波动 , 从而使 电机 在驱 动过 程 中产 生振 动 , 且 电机 每一 并 步 的运 行过 程是 处 于一 种 自由运行 状 态 , 无法 控 制
韩党群 , 姚伟鹏
( 西安航空技术高等专科学校 电气工程系 , 陕西 西安 70 7 ) 10 7

要: 阐述 Βιβλιοθήκη 两相混合式步进 电机 的细分控制原理 , 出 了以 MS 4 0单 片机 为微 控制器 提 P3 通过 D C 6 2产 生相 A 71

基于MSP430单片机的步进电机控制系统设计

基于MSP430单片机的步进电机控制系统设计

基于MSP430单片机的步进电机控制系统设计步进电机是一种电动机,能够将电脉冲信号转换为机械转动。

它具有结构简单、运行平稳、响应速度快、定位精度高等特点,广泛应用于各种机械设备中。

本文主要介绍基于MSP430单片机的步进电机控制系统的设计。

1.系统硬件设计步进电机控制系统的硬件设计需要包括MSP430单片机、步进电机、电源以及其他辅助电路。

1.1MSP430单片机MSP430系列是由德州仪器公司推出的一款低功耗、高性能的16位单片机。

它具有低功耗、高计算性能、丰富的接口资源等特点,非常适合用于步进电机控制系统。

1.2步进电机步进电机是由转子、定子、绕组和传感器组成,可以完成定距离的转动。

根据具体需求,可以选择不同类型的步进电机,如单相、双相、两相、三相等。

1.3电源步进电机控制系统需要提供稳定的电源供电。

可以采用直流电源或者交流电源,具体电压和电流根据步进电机的额定参数确定。

1.4辅助电路辅助电路包括电机驱动电路、电流控制电路、保护电路等。

电机驱动电路可以选择使用驱动芯片,如L293D芯片,来驱动步进电机。

电流控制电路用于控制步进电机的电流大小,保护电路用于保护步进电机不受过电流、过压等问题的影响。

2.系统软件设计步进电机控制系统的软件设计需要编写相应的程序代码,并通过MSP430单片机来控制步进电机的运动。

2.1硬件初始化在软件设计开始之前,需要对MSP430单片机的相关硬件进行初始化设置。

包括设置时钟源、引脚功能、定时器等。

根据具体的单片机型号,可以参考官方提供的资源来进行初始化设置。

2.2电机控制算法步进电机的控制主要通过控制电流脉冲来实现。

根据步进电机的型号和控制要求,可以选择不同的控制算法,如单相步进、双相步进或者微步控制等。

通过控制电流脉冲的频率、信号大小来控制步进电机的转动方向以及速度。

2.3交互界面设计可以通过开发板上的按键、液晶显示屏、串口等方式,设计一个交互界面,用于用户输入控制命令、设置参数以及显示系统状态等。

根据MSP430实现的步进电机控制

根据MSP430实现的步进电机控制

作品概述第一节基本情况MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。

它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。

本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。

第二节软硬件总体设计方案本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,对步进电机进行控制。

滑变,即滑动变阻器,用来控制电机的转速,本系统共有两个拨动按键,一个拨动按键用来选择步进电机的模式,如四相八拍或四相四拍,另一个拨动按键用来控制转动方向。

数码管可用来显示模式和方向,以及转速的百分比。

系统总体设计框图如下图1.2.1 系统总体设计框图在硬件设计时,只需设计外围电路,留出与Launchpad核心板的接口即可,既节约了设计时间,又节省了成本,而且无需额外购买仿真器,从而使设计成本到达最低。

在软件设计方面,可充分利用G2系列单片机的各个功能模块,如时钟系统、TA定时器、ADC10模数转换器,看门狗,以及IO口中断等资源,设计出高效率、低功耗、结构紧凑而又功能强大的产品。

第一章作品硬件系统设计第一节MSP430G2系列Launchpad开发板组成及硬件资源情况介绍MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。

它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。

LaunchPad 具有集成的DIP 目标插座,可支持多达20 个引脚,从而使MSP430 Value Line 器件能够简便地插入LaunchPad 电路板中。

基于MSP430单片机的步进电机控制器的设计与实现

基于MSP430单片机的步进电机控制器的设计与实现

基于MSP430单片机的步进电机控制器的设计与实现步进电机是一种常见的电动机类型,它通过以固定的步进角度运动来驱动机械装置。

MSP430单片机是一种低功耗、高性能的微控制器,适合用于步进电机控制器的设计与实现。

本文将介绍基于MSP430单片机的步进电机控制器的设计与实现方法。

首先,我们需要了解步进电机的原理和工作方式。

步进电机的转动是通过控制电流的方向和大小来实现的。

根据步进电机的类型和设计参数,我们可以确定所需的控制电流和相位方式。

常见的步进电机类型有单相和双相两种,其中双相步进电机是最常见的。

接下来,我们需要确定MSP430单片机的引脚分配。

通常,步进电机的驱动信号需要4个引脚来控制,分别是两个控制电流的引脚(A+和A-)和两个控制电流的引脚(B+和B-)。

根据MSP430单片机的引脚数量和功能,我们可以选择适当的引脚来连接步进电机。

设计步进电机控制器的核心是编写控制算法。

在MSP430单片机上,我们可以使用C语言或汇编语言编写程序来控制步进电机的转动。

下面是一个简单的C语言程序示例:```c#include <msp430.h>#define APlus BIT0 // P1.0对应步进电机A+引脚#define AMinus BIT1 // P1.1对应步进电机A-引脚#define BPlus BIT2 // P1.2对应步进电机B+引脚#define BMinus BIT3 // P1.3对应步进电机B-引脚void delay(unsigned int ms) //延时函数unsigned int i, j;for (i = 0; i < ms; i++)for (j = 0; j < 110; j++);void main(void)WDTCTL=WDTPW,WDTHOLD;//停止看门狗定时器P1DIR = APlus , AMinus , BPlus , BMinus; // 设置引脚为输出模式while (1)P1OUT = APlus , BPlus; // 设置两个控制电流引脚为高电平delay(500);P1OUT = AMinus , BPlus; // 设置两个控制电流引脚为高低电平delay(500);P1OUT = AMinus , BMinus; // 设置两个控制电流引脚为低电平delay(500);P1OUT = APlus , BMinus; // 设置两个控制电流引脚为高电平低电平delay(500);}```以上程序实现了一个简单的步进电机控制器。

基于MSP430单片机的语音无线控制步进电机系统的设计

基于MSP430单片机的语音无线控制步进电机系统的设计

基于MSP430单片机的语音无线控制步进电机系统的设计作者:潘宇黄勇朱昌洪来源:《科学与财富》2016年第25期摘要:步进电机在不少的场合都具有实际的应用价值,针对方便用户控制体验的需求,设计基于微处理器MSP430G2553单片机语音控制的步进电机系统。

系统采用LD3320作为语音识别芯片,MSP430G2553作为微处理,通过2.4G(NRF24L01)无线收发模块实现步进电机的控制,当用户通过语音识别电路发送电机反转、正转等相关的指令后,系统在程序控制下识别出指令并通过无线发送模块发送到接收模块处理,处理完毕后经过MSP430G2553微处理控制ULN2203芯片构成的驱动电路驱动步进电机进行相应的动作,系统经过调试稳定,用户体验良好,适用于玩具小车等需要控制步进电机的场合。

本文章介绍了语音无线控制步进电机系统的方案设计、电路设计、程序设计、系统调试和验证。

关键词:LD3320语音芯片;无线控制;MSP430G2553单片机1 系统方案设计系统方案如图1所示,由单片机2个最小系统、语音识别模块、无线发送及接收模块、显示模块、按键组成。

语音识别电路主要芯片采用的是LD3320语音芯片,采集到用户声音指令后,经过去除噪音、放大语音信号后,经过MSP430G2553微处理器处理,控制NRF24L01无线发送及接收一体化芯片发送信号,当无线接收模块接收到信号后,传送给微处理器控制步进电机做出相应动作。

2 硬件设计2.1 单片机本系统设计的微处理器采用的是美国德州仪器(TI)公司生产的低功耗MSP430G系列的2553单片机作为核心控制芯片,该芯片具有16位的RISC CPU,DCO可在不到1us时间内,从低功耗模式到运行模式的唤醒,以CCS v5.0作为软件开发平台,通过Cadence Allegro 16.5 软件设计原理图、PCB图[1]。

2.2 语音识别电路语音识别电路主要采用LD3320芯片,LD3320支持非特定语音辨别,每次识别的过程是把用户说出的语音内容,通过频谱转换为语音特征,再将这个转换后的语音特征和“关键词语列表” 中的条目一一进行匹配,最优匹配的一条即作为识别结果[2],工作原理框图如图2所示。

基于MSP430步进电机控制器的设计51单片机

基于MSP430步进电机控制器的设计51单片机

基于MSP430步进电机控制器的设计附录附录:源程序清单主控程序:#include<regx51.h>#define uchar unsigned char#define uint unsigned intsbit up=P2^1; //提速sbit down=P2^2; //减速sbit rotation=P2^0; //转向sbit run=P2^3;int speed=10;static ROT=0; //正转(反转)static uint step=0; //起始步//void delay (int i){int k=100;while(i--)while(k--);}Z() //步进方向{switch(step){case 0:P1=0x01;break; case 1:P1=0x04;break; }}F() //步进方向{switch(step){case 0:P1=0x02;break; case 1:P1=0x08;break; }}Fangxiang(){if(!rotation){if(!rotation){TR0=0;ROT=!ROT;TR0=1;do{}while(!rotation);P0=0;}}}void Speed1() //速度{if(!up){delay(2);speed=speed+10;}if(!down){delay(2);speed=speed-10;}}work() //启停{if(!run){delay(100);if(!run)TR0=!TR0;do{}while(!run);}}main(){TCON=0;IE=0x82;TMOD=0x01;while(1){W ork();Speed1();Fangxiang();if(ROT==0)Z();//正转else F();//反转}}void timer0() interrupt 1 {TH0=(65535-speed)/255; TL0=(65535-speed)%255;step=++step;delay(1);if(step>=2)step=0;}测速程序:#include<regx51.h>#define uchar unsigned charuchar j,k,i,a,b,sin,A1,A2,A3,aecond;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay (uchar i){for(j=i;j>0;j--)for(k=125;k>0;k--);}void display(){P0_0=0;P1=table[A1];delay(5);p0_0=1;P0_1=0;P1=table[A2];delay(5);P0_1=1;P0_2=0;P1=table[A3];delay(5);P0_2=1;}void main(){TCON=0x11;IE=0x83;TMOD=0x01;while(1){P2=R;A1=R/100;A2=R/10%10;A3=R%10;for(a=2000;a>0;a--){for(b=10;b>0;b--) display();}}}void timer0() interrupt 1 {static uchar sin=0;TH0=(65535-50000)/255; TL0=(65535-50000)%255; sin++;if(sin>=20){sin=0;R=second;second=0;}}void cesu() interrupt 0 {second++;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

作品概述第一节基本情况MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。

它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。

本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,实现了对步进电机的四相四拍和四相八拍控制,并实现了转动方向和转动速度的控制,并且用数码管显示转动方向和转动速度的百分比。

第二节软硬件总体设计方案本作品选择MSP430G2231为Launchpad核心板的单片机,采用Launchpad核心板加底板的形式,对步进电机进行控制。

滑变,即滑动变阻器,用来控制电机的转速,本系统共有两个拨动按键,一个拨动按键用来选择步进电机的模式,如四相八拍或四相四拍,另一个拨动按键用来控制转动方向。

数码管可用来显示模式和方向,以及转速的百分比。

系统总体设计框图如下图1.2.1 系统总体设计框图在硬件设计时,只需设计外围电路,留出与Launchpad核心板的接口即可,既节约了设计时间,又节省了成本,而且无需额外购买仿真器,从而使设计成本到达最低。

在软件设计方面,可充分利用G2系列单片机的各个功能模块,如时钟系统、TA定时器、ADC10模数转换器,看门狗,以及IO口中断等资源,设计出高效率、低功耗、结构紧凑而又功能强大的产品。

第一章作品硬件系统设计第一节MSP430G2系列Launchpad开发板组成及硬件资源情况介绍MSP430G2系列Launchpad是TI推出的一款低成本的开发平台。

它适用于适用于TI 最新MSP430G2xx 系列产品,其基于USB 的集成型仿真器可提供为全系列MSP430G2xx 器件开发应用所必需的所有软、硬件。

LaunchPad 具有集成的DIP 目标插座,可支持多达20 个引脚,从而使MSP430 Value Line 器件能够简便地插入LaunchPad 电路板中。

此外,其还可提供板上Flash 仿真工具,以直接连接至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 封装的MSP430G2xx 和MSP430F20xx 器件• 分别连接至绿光和红光LED 的两个通用数字I/O 引脚可提供视觉反馈• 两个按钮可实现用户反馈和芯片复位• 器件引脚可通过插座引出,既可以方便的用于调试,也可用来添加定制的扩展板• 高质量的20 引脚DIP 插座,可轻松简便地插入目标器件或将其移除第二节关键器件选型以及性能指标参数一、步进电机本作品选用的是常州市德利来电器有限公司生产的35BY48BH10型步进电机,其技术数据、接线图、外形图和实物图如下所示。

1.技术数据型号步矩角相数电压电流电阻电感(400Hz)最大静转矩定位转距转动惯量引线规格35BY48BH10 7.5 4 12 0.286 42 25 400 90 7.9 UL1095 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电机驱动芯片可以完全满足本作品的要求。

三、Max7219由于IO引脚有限,所以采用串行方式控制数码管,数码管驱动芯片选择Max7219,它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参与,每位独立控制,内部有解码器,可选择解码和不解码两种方式,亮度可以通过数字或模拟方式控制。

从各个方面来讲,它都是本例的最佳选择。

图2.2.1 Max7219实物图.第三节系统原理图和单元电路介绍系统主要由单片机,电机驱动电路,控制电路,电源电路以及数码管显示电路组成,系统原理图如图2.3.1所示。

图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和OUT4直接接步进电机,因为电机的感性器件,电流不能突变,所以接上8个二极管以保护电源。

另外在Vss和Vs附近必须接一个100uF的电容,当这个大电容离器件太远时,必须在近处再接一个小电容。

图2.3.2 电机驱动模块2.电机控制模块如图所示,滑变用来控制电机的速度,Speed接到单片机的A7脚上,通过测量电压值,计算出恰当的延时时间,达到控制速度的目的。

转动方向和Mode用来改变电机的转向和模式,即选择四相四拍或四相八拍模式。

图2.3.3 电机驱动模块3.数码管显示模块由于IO引脚有限,所以采用串行方式控制数码管,数码管驱动芯片选择Max7219,它最多能驱动8位数码管,能独立完成刷新扫描而不需要单片机的参与,每位独立控制,内部有解码器,可选择解码和不解码两种方式,亮度可以通过数字或模拟方式控制。

从各个方面来讲,它都是本例的最佳选择。

图2.3.4 电平转换模块图2.3.5 数码管驱动模块图2.3.6 数码管注意在使用时必须在该芯片附近接一个大电容,比如4.7uF。

由于它是5V逻辑电平,而MSP430是3.3V电平,所以用74HC573进行电平转换。

数码管用的是共阴极四位数码管,这是由驱动芯片Max7219决定的。

第四节PCB板与系统元器件清单1.PCB板图2.4.1 PCB板正面图2.4.2 PCB板背面2.系统元件清单如表2.4.1所示。

表2.4.1 元件清单第五节PCB板设计要求和注意事项由于是大功率器件,所以100uF电容必须离芯片越近越好,否则应再在L298N 附近加上一个小电容,此外二极管也必须离芯片输出引脚越近越好。

Max7219的电容也应该离芯片越近越好。

第六节安装调试注意事项由于是大功率器件,所以要加散热片,安装时就先焊散热片,再插入L298N,用螺丝固定到散热片上后,再焊L298N的各个管脚。

安装好的实验板、插上Laundrypad核心板后的实验板,以及连接上步进电机的实验板如下图所示。

图六.1 安装好的板子图六.2插上Laundrypad核心板后的实验板图六.3 连接上步进电机的实验板第二章作品软件系统设计第一节程序流程图介绍本作品软件程序通过单片机P1.0、P1.1、P1.2和P1.3依次输出高或低产生一定的相序来驱动电机驱动芯片,进而驱动步进电机;而转向和模式是通过重复扫描相应按键,判断其相应的高低从而对电机的转向和模式进行控制。

系统流程图如图3.1.1所示。

图3.1.1 系统流程图通过AD对滑变的电压值的采样来决定转动速度的快慢,这部分是在AD中断中进行的。

AD中断服务子程序如图3.1.2所示。

图3.1.2 中断服务子程序程序流程说明:处理数据和显示转速百分比是放在主循环里的,但是为了逻辑上了连续,把它们放到后面和中断服务子程序一起介绍。

第二节子程序介绍1.初始化函数初始化函数用于设置系统的时钟、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/4ADC10CTL0 = 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_Max7219(void){Write_Max7219(SHUT_DOWN,0x01); //开启正常工作模式(0xX1) Write_Max7219(DISPLAY_TEST,0x00); //选择工作模式(0xX0)Write_Max7219(DECODE_MODE,0x00); //选用全译码模式Write_Max7219(SCAN_LIMIT,0x03); //4只LEDWrite_Max7219(INTENSITY,0x01); //设置初始亮度}2.功能子函数功能子函数用来实现电机转速的控制,通过对按键的扫描实现电机模式和转向的切换,电机的驱动,以及相关参数在数码管上的显示。

(1)函数名: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 == 0) Step=8; // Stop the Moterelse{State+=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: 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_OFF; break;default: Step = State >>1;}Delay(delay>>j);}}(4)函数名:void Display(char Num);输入变量:待显示数功能:显示一个二位数void Display(char Num){char Dgt1,Dgt2;Dgt1 = Num/10;Dgt2 = Num%10;Write_Max7219(2,DigitTab[Dgt1]);Write_Max7219(1,DigitTab[Dgt2]);}(5)函数名:void WOV(signed char Pace,signed char Mode);输入变量:当前电机位置,模式(四拍、八拍)功能:显示电机当前的位置和模式3.中断服务子程序本作品中只用到了AD中断,在中断中读取AD采样结果后退出,在主循环中进行数据处理,以达到控制转速的效果。

相关文档
最新文档