利用单片机定时器实现信号采样和PWM控制

发布者:心怀感恩最新更新时间:2009-11-05 来源: 微型机与应用关键字:PWM控制  单片机  定时器  MSP430F413 手机看文章 扫描二维码
随时随地手机看文章
      PWM控制方式广泛应用于各种控制系统中,但对脉冲宽度的调节一般采用硬件来实现。如使用PWM控制器或在系统中增加PWM电路[1]等,则成本高、响应速度慢,而且PWM控制器与系统之间存在兼容问题。另外,控制系统中的信号采样通常是由A/D转换器来完成,因此检测精度要求较高时,调理电路复杂,而且因A/D的位数高,从而使设计的系统成本居高不下。

  本文以应用于温度控制系统为例,介绍利用Motorola公司生产的新型单片机MSP430F413内的定时器Time_A设计可以用时间量进行温度采样以及实现PWM调节的方法。为了可在使用少量外围电路的情况下实现控制系统的高精度测量和控制,一方面用时间量采样,在省去1片A/D的情况下得到12位的高精度;另一方面在定时中断内完全用软件实现PWM调节,以易于进行数据的通信和显示。该系统在中断内可以解决波形产生的实时在线计算和计算精度问题,可精确、实时地计算设定频率下的脉冲宽度。

1 单片机MSP430F413及定时器

  MSP430系列的单片机F413在超低功耗和功能集成上都有一定的特色,可大大减小外围电路的复杂性,它的实时处理能力及各种外围模块使其可应用在多个低功耗领域[2]。MSP430F413中通用16位定时器Timer_A有如下主要功能模块。

  (1)一个可连续递增计数至预定值并返回0的计数器。

  (2)软件可选择时钟源。

  (3)5个捕获/比较寄存器,每个有独立的捕获事件。

  (4)5个输出模块,支持脉宽调制的需要。

  定时器控制寄存器TACTL的各位可控制Timer_A的配置,并定义16位定时器的基本操作,可选择原始频率或分频后的输入时钟源及4种工作模式。另外还有清除功能和溢出中断控制位。5个捕获/比较寄存器CCRx的操作相同,它们通过各自的控制寄存器CCTLx进行配置。

2 时间量采样及PWM控制的实现原理

  以应用于温度控制系统为例,介绍用定时器实现信号采样和PWM控制的方法。该温度控制系统包括单片机、温度测量电路、负载驱动电路及电源控制、低电压检测和显示电路等其他外围部分。

  单片机MSP430F413中用于测量和控制温度的主要I/O口有:

  P1.0:输出50Hz方波,用于产生三角波。

  P1.2:驱动温度控制执行元件,2kHz方波PWM输出。

  P2.0:脉宽捕捉。

2.1 单片机端口的中断设置

  温度控制系统的50Hz方波输出、PWM输出和输入捕捉都是由定时中断来实现。这3个中断分别由P0、P1和P2口的外围模块引起,属于外部可屏蔽中断。初始化时,对这3个I/O口进行中断设置,并对Time_A控制寄存器TACTL设置,包括输入信号2分频、选用辅助时钟ACLK等。当定义完捕获/比较寄存器后,重新赋值TACTL,启动定时器,开始连续递增计数。

2.2 脉宽捕捉实现温度值的采样

  温度测量电路将温度值转换为电压值,同时单片机产生的50Hz方波经电容充放电电路变换得到同频率的三角波,其电压值切割三角波,从而将温度值转换为相应宽度的脉冲送入单片机。波形变化如图1所示。

 

  通过设置CCTLx中的模式位,可将对应的捕获/比较寄存器CCRx设定为捕获模式,用于时间事件的精确定位。如果在选定的输入引脚上发生选定脉冲的触发沿,则定时器计数的值将被复制到CCRx中。根据这一原理,选定P2.0为输入引脚,设置CCTL2为捕获模式,所测温度值由模拟量经测量电路转换为脉冲后,P2.0捕捉脉冲下降沿,进入中断T2,得到与温度值一致的单位时间内的脉冲数,存入CCR2作进一步处理。

  这样,系统就在不使用A/D转换器的情况下完成了模数转换。因为单片机的时钟精确度高,而且时间量是一个相对精度极高的量,但本系统中用时间量进行温度采样可获得12位的高精度,同时采用50Hz脉冲,可以大大消除工频干扰。这些都为进行精确的温度控制提供了必要的条件。

2.3 PWM信号生成原理

将捕获/比较寄存器CCR0和CCR1定义为比较模式,它们的输出单元OUT0和OUT1分别对应单片机引脚P1.0(TA0)和P1.2(TA1)。进入比较模式后,如果定时器CCRx的计数值等于比较寄存器x中的值,则比较信号EQUx输出到输出单元OUTx中,同时根据选定的模式对信号置位、复位或翻转。其中:设置EQU0将OUT0信号翻转,信号时钟与定时器时钟同步,这样就可以在P1.0引脚上得到50Hz的方波信号;设置EQU1输出模式为PWM复位/置位。

  设定模式下定时中断的输出如图2所示。根据设定的PWM复位/置位模式,若CCR1计数器溢出,则EQU1将OUT1复位;若CCR0计数器溢出,则EQU0将OUT1置位。利用CCR0和CCR1计数起始点的差值,实现占空比的变化,从而在P1.2上完成PWM输出。系统对占空比的调节是通过改变CCR1的基数来实现的。定时器时钟为2MHz、CCR1和CCR0的计数值为1 000时,可获得2kHz的PWM输出频率。负载驱动电路将单片机P1.2引脚输出的PWM信号放大滤波,用于驱动大功率的执行元件。

 

3  软件设计

3.1 系统主程序

  在主程序中包括系统初始化、定时器的初始化、温度采样值的读入、负载驱动和显示等。系统进行温度值采样和PWM输出均在定时中断内完成,PWM输出脉冲的占空比则由PID算法得到。系统主程序流程图如图3所示。

 3.2 PID脉宽调节

  系统对脉宽的调制由PID算法实现。根据算法原理,本系统设计了一套完全由软件实现的PID算法,并且在控制过程中完成参数的自整定。PID调节的控制过程:单片机读出数字形式的实际温度Tn,然后和设定温度Tg相比较,得出差值en=Tn-Tg,根据en的正负和大小,调用PID公式,计算得到与输出电压Δun一致的占空比,调节温度的升降,同时寻找最优条件,改变PID参数。

增量式PID控制算法的输出量[3]:

  PID调节程序直接写入单片机内,根据得到的值改变计数器CCR1的基数值,从而改变输出脉冲的占空比,达到调节PWM的目的。

3.3 定时中断

  定时中断子程序流程如图4所示。系统采用的晶振频率为2MHz,T0中断的作用是得到频率为50Hz、占空比为90%的方波,用以产生三角波,并检查1个周期内是否有漏采的数据。T0模溢出翻转为高电平,输出比较间隔为18ms。其中,CCR0加了PWM的模,该值即为CCR0和CCR1的差值,用以产生输出所需的脉冲宽度。

 

 

  T1中断内处理的是控制端口的PWM输出,并检查1个周期内是否重复采集数据,T1输出比较产生低电平,输出比较间隔为20ms。T2中断捕捉温度测量端口的脉宽,得到所测的温度值。

4  结束语

    利用单片机MSP430F413内的定时器Time_A进行温度采样以及实现PWM调节的方法,可以广泛用于具有端口捕捉功能的单片机中。与传统方法比较,它不仅可以简化测量和控制电路的硬件结构,而且可以方便地建立人机接口,实现用软件调整参数,使控制更精确、实时、可靠。经过实验,该方法应用于温度控制系统中获得了预期的精确PWM调节波形。该方法同样可以用于其他单片机控制系统中。

关键字:PWM控制  单片机  定时器  MSP430F413 引用地址:利用单片机定时器实现信号采样和PWM控制

上一篇:聚焦电子创新设计,分享MCU技术新思路
下一篇:基于凌阳SPCE061A单片机的音控小车的设计

推荐阅读最新更新时间:2024-03-16 12:27

触摸屏原理及在单片机系统中的应用
  触摸屏作为一种特殊的计算机外设,是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。触摸屏的应用范围十分广泛,主要用于大型商场、电信、税务、银行、电力等部门的业务查询:城市街头的信息查询,此外还应用于工业控制、军事指挥、电子游戏 多媒体教学等领域。随着生活中类似于PDA的手持设备的越来越多,彩色LCD触摸屏也变得越来越普及,并逐渐成为当今的主流配置。本文主要介绍在嵌入式应用系统中应用较广泛的触摸屏控制器芯片ADS7843的特点、原理以及实际使用方法。
[电源管理]
触摸屏原理及在<font color='red'>单片机</font>系统中的应用
一种适合单片机系统的FM双音频通信方案
引言 在许多单片机应用系统中,常常利用电信号与非电信号,来传送控制信号和数据信息,以实现遥控或遥测的功能,例如光信号、超声波信号、电脉冲信号等。而本FM有线/无线遥控广播系统中,是使用双音频电信号发送接收挖出,实现对FM有线/无线广播的远程控制管理。这种双音频通信具有控制简单,实施方便,传输可靠,而且造价低廉的特点,也是一种较为常用的通信方式。实现单片机系统双音频通信的关键在于双音频接收电路设计和应用,以及检测程序的设计。 1 遥控广播系统的基本原理 基本原理如图1所示。 遥控广播系统的通信是电话拨号收发的一种双音频通信方式,是一项可靠、成熟的通信技术。它取代了传统的电话拨号脉冲通信方式,成为现代电话通信拨号的主要通信方式
[单片机]
一种适合<font color='red'>单片机</font>系统的FM双音频通信方案
Bosch:与微控制器业者合作才是王道
    众所皆知,Bosch(博世)是感测器市场的主要供应商之一,而随着感测器市场的快速成长,也使得Bosch在产品布局的脚步上亦不落人后,向媒体分享完整的市场策略。 附图: Bosch Sensortec亚太区总裁Leopold Beer Bosch Sensortec亚太区总裁百里博(Leopold Beer)表示,Bosch早在2006年开始就在微机电领域具有技术领导地位,到2014年,Bosch将发展更为多元技术与拓展更多终端市场,不过,他也直言,就目前来看,智慧型手机的确是感测器市场成长的主要动力来源。 而依照HIS的数据预估,消费性与可携式电子领域将是微机电系统众多分众市场中,具有举足轻重的地位。 百里博进一步谈到,
[手机便携]
基于51单片机的LCD1602液晶驱动实现
本文的主要内容目录: 一、LCD1602的基本介绍 二、LCD1602液晶驱动的实现     根据对现有的LCD1602液晶的驱动进行分析,总感觉写的有些乱,有些麻烦,说白了就是不好用,这里打算自己写一个,既简单又实用的。 一、LCD1602的基本介绍 开发环境:keil, 睿智51开发板 LCD1602的液晶原理图如下: 引脚对应关系:     P2.0  : 状态引脚,为0时表示指令或者状态,为1时表示数据     P2.1  :读写引脚,为0时表示写,为1时表示读     P2.2  :使能引脚,为1时使能     P0.0 ~ P0.7 :数据引脚,用来传输数据 经过分析,整个液晶时序的核心就是两个:写命令、写数据
[单片机]
想学好单片机设计,这些最常见的难题你都要解决
在初学51单片机的时候,总是伴随很多有关与晶振的问题,其实晶振就是如同人的心脏,是血液的是脉搏,把单片机的晶振问题搞明白了,51单片机的其他问题迎刃而解…… 有关51单片机有关晶振的问题一并总结出来,希望对学51的童鞋来说能有帮助。 一,为什么51单片机爱用11.0592MHZ晶振? 其一:因为它能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。 其二:用11.0592晶振的原因是51单片机的定时器导致的。用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根 据公式算下
[嵌入式]
基于AT89S51单片机的实验系统的设计
目前单片机应用已渗透到各个领域,单片机技术的发展也因此日新月异。作为实践性很强的应用型学科,单片机研发及教学离不开实验。传统的单片机实验系统需要频繁拔插烧写单片机芯片来编程,依赖于仿真机调试,实验成本高且效率低,已不适应现代科技开发需求。如何充分合理利用单片机的性能,方便用户高效学习与开发产品成为当前的研究热点。 单片机在电子产品中的应用已经越来越广泛,并且在很多学校也开设了相关的课程。通过对在校学生的调查,以及网络上收集到资料的综合分析,得知:目前无论是社会上还是在校学生,学习单片机的人数呈不断增加之势,对于单片机实验板的需求也不断增加。但是由于目前多数实验板价钱较高,实验项目不适于初学者学习。所以,开发出一套价格低廉,易
[单片机]
基于AT89S51<font color='red'>单片机</font>的实验系统的设计
STM32单片机学习(5) 定时器中断实验
/* * * 软件功能: 定时器中断实验 * */ #include stm32f10x.h #include delay.h void RCC_Configuration(void); void GPIO_Configuration(void); void NVIC_Configuration(void); void TIM3_Configuration(u16 arr,u16 psc); /* 函数: int main(void) 功能: main主函数 参数: 无 返回: 无 / int main(void) { RCC_Configuration(); GPIO_Configuration(); NVIC_Co
[单片机]
STM32单片机FSMC的使用解析
在做项目的过程中遇到了这个问题,感觉文章写得不错,共享给对FSMC的使用怀有疑惑的同伴们! LCD有如下控制线: CS:Chip Select片选,低电平有效 RS:Register Select寄存器选择 WR:Write写信号,低电平有效 RD:Read读信号,低电平有效 RESET:重启信号,低电平有效 DB0-DB15:数据线 假如这些线,全部用普通IO口控制。根据LCD控制芯片手册(大部分控制芯片时序差不多): 如果情况如下: DB0-DB15的IO全部为1(表示数据0xff),也可以为其他任意值,这里以0xff为例。 CS为0(表示选上芯片,CS拉低时,芯片对传入的数据才会有效) RS为1(表示DB0-15上传
[单片机]
STM32<font color='red'>单片机</font>FSMC的使用解析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved