MSP430单片机PWM调制的说明及源代码

合集下载

基于MSP430单片机的直流电机PWM调速系统的研究

基于MSP430单片机的直流电机PWM调速系统的研究

基于MSP430单片机的直流电机PWM调速系统的研究一、本文概述随着微控制器技术的快速发展,其在各种控制系统中的应用也日益广泛。

MSP430单片机作为一种低功耗、高性能的微控制器,被广泛应用于各种嵌入式系统和智能设备中。

其中,直流电机PWM调速系统就是MSP430单片机的一个重要应用领域。

本文旨在研究基于MSP430单片机的直流电机PWM调速系统。

我们将介绍MSP430单片机的基本特性及其在直流电机控制中的优势。

然后,我们将详细分析PWM(脉冲宽度调制)调速系统的基本原理和优点,以及如何在MSP430单片机上实现PWM控制。

接下来,我们将通过硬件设计和软件编程,构建一个基于MSP430单片机的直流电机PWM调速系统,并对其性能进行实验验证。

我们还将讨论该系统在实际应用中的潜力和可能面临的挑战,如噪声干扰、电机保护、系统稳定性等问题,并提出相应的解决方案。

我们将总结本文的主要研究成果,并展望未来的研究方向和应用前景。

通过本文的研究,我们希望能够为MSP430单片机在直流电机PWM 调速系统中的应用提供理论和实践指导,推动相关技术的发展和应用。

二、MSP430单片机概述MSP430单片机是德州仪器(Texas Instruments,简称TI)推出的一款低功耗、高性能的微控制器。

其独特的设计理念和广泛的应用场景,使得MSP430单片机在众多嵌入式系统中占有一席之地。

MSP430单片机以其超低的功耗、丰富的外设资源、高效的指令集以及灵活的编程方式,被广泛应用于各种低功耗、实时性要求高的嵌入式系统中。

MSP430单片机具有多种型号,涵盖了不同的性能和功能需求。

其核心采用精简指令集(RISC)架构,使得指令执行速度更快,效率更高。

MSP430单片机还具有丰富的外设接口,如串行通信接口(UART)、SPI、I2C等,方便与外部设备进行通信。

在直流电机PWM调速系统中,MSP430单片机扮演着关键角色。

通过编程控制PWM波的占空比,MSP430单片机可以实现对直流电机的精确调速。

最新高效的Msp430数字滤波器代码精编版

最新高效的Msp430数字滤波器代码精编版

2020年高效的M s p430数字滤波器代码精编版高效的Msp430数字滤波器代码摘要Msp430用其高效的乘法器可以很容易的实现数字滤波。

乘法器可以将FIR滤波系数转换成可以被任何应用程序使用的装配代码。

何纳计算方法和CSD格式被用于完成高速乘法器操作。

在所有频率下,msp430乘法器的滤波性能由其增益来评估。

在cpu周期,代码长度,低通,高通,带通,带止的频率响应,凹形滤波条件下msp430乘法器的滤波性能由Appendix A所示。

目录1 简介 (2)2 Fir滤波器代码合成器 (2)3 参考 (4)Appendix A Fir滤波器举例 (5)Appendix B文件列表 (10)图形列表A-1低通FIR滤波器响应 (5)A-2高通FIR滤波器响应 (6)A-3带通FIR滤波器响应 (7)A-4带止FIR滤波器响应 (8)A-5凹形FIR滤波器响应 (9)1 简介FIR滤波器,与其固有的稳定和相位线性的特征而被大家熟知。

有时候是数字滤波理想的选择。

由于滤波器系数是浮点型数字,需要用整理机器规范成与其最接近的整形。

比如msp430的微型控制器。

另外,在考虑到CPU周期的情况下,缺少硬件乘法器的滤波会变得很贵。

何纳计算法考虑到了上诉两种情况。

何纳计算法可以进行整形—浮点型的乘法,这样就消除了滤波器系数的整形化。

只用移位和增命令进行乘法,提高了CPU周期下的效率。

工具能够下载到由FIR系数转化成的代码文件。

另外,在扫描滤波器校验数据时会产生C的包裹文件和数据文件。

2 FIR数字滤波器代码合成器FIR数字滤波器代码合成器FIR_filter_codegen.exe 是一个将document. Input和FIR数字滤波系数,滤波长度,位分辨率关联起来的工具。

2.1 输入参数当工具运行时,一个互动的命令窗口打开,要求输入预先讨论的输入参数。

滤波代码的生成完全由这些参数决定。

错误的参数设置会导致生成错误的代码。

MSP430程序库之定时器TA的PWM输出

MSP430程序库之定时器TA的PWM输出

MSP430程序库之定时器TA的PWM输出定时器是单片机常用的其本设备,用来产生精确计时或是其他功能;msp430的定时器不仅可以完成精确定时,还能产生PWM波形输出,和捕获时刻值(上升沿或是下降沿到来的时候)。

这里完成一个比较通用的PWM波形产生程序。

1.硬件介绍:MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。

它给开发人员提供了较多灵活的选择余地。

当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。

MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA 有三个模块,CCR0-CCR2;TB含有CCR0-CCR67个模块;其中CCR0模块不能完整的输出PWM波形(只有三种输出模式可用);TA可以输出完整的2路PWM波形;TB可以输出6路完整的PWM波形。

定时器的PWM输出有有8种模式:输出模式0 输出模式:输出信号OUTx由每个捕获/比较模块的控制寄存器CCTLx中的OUTx位定义,并在写入该寄存器后立即更新。

最终位OUTx直通。

输出模式1 置位模式:输出信号在TAR等于CCRx时置位,并保持置位到定时器复位或选择另一种输出模式为止。

输出模式2 PWM翻转/复位模式:输出在TAR的值等于CCRx时翻转,当TAR 的值等于CCR0时复位。

输出模式3 PWM置位/复位模式:输出在TAR的值等于CCRx时置位,当TAR 的值等于CCR0时复位。

输出模式4 翻转模式:输出电平在TAR的值等于CCRx时翻转,输出周期是定时器周期的2倍。

输出模式5复位模式:输出在TAR的值等于CCRx时复位,并保持低电平直到选择另一种输出模式。

输出模式6PWM翻转/置位模式:输出电平在TAR的值等于CCRx时翻转,当TAR值等于CCR0时置位。

输出模式7PWM复位/置位模式:输出电平在TAR的值等于CCRx时复位,当TAR的值等于CCR0时置位。

MSP430单片机应用之定时器、PWM

MSP430单片机应用之定时器、PWM
main()
{
...
&0x01)
{
P1OUT–0x01;//翻转状态
IFG&=0xfe;//清除中断标志位
}
}
}
(2)中断方式:WDTCTL与查询方式相同设置,另外需要置位中断允许位
(WDTIE,位于IE1.0)使得单片机能够响应这一中断。
#pragmavector=WDT_VECTOR
MSP430单片机应用之定时器、PWM
1。定时器使用查询和中断两种方式。大多数逻辑芯片输出0的能力大于
输出1的能力。
(1)查询方式:TMSEL决定看门狗的工作模式,置一,看门狗工作在定时
模式。SSEL选择看门狗定时器的时钟源。SSEL置一。IS0IS1决定了看门狗
定时器的输出频率。(注意:使用查询方式时候要清除中断标志)
注意:输出PWM的周期应远小于积分电路的积分常数。提高DA精度
CCR0不宜过小。
扩展阅读:MSP430单片机低功耗结构原理
__interruptvoidWDT_ISR()
{
P1OUT–0x01;
}
main()
{
...
while(True);
}
2.PWM(用定时器A实现)
(1)可用提高频率的方法来取得DA的效果,但是有些场合仍不能满足要
求,这要就需要一个积分电路来获得理想的DA效果
(2)对TA的设置:比较/捕获模块控制寄存器:捕获比较寄存器CCRx.

msp430单片机实现PWM

msp430单片机实现PWM

msp430单片机实现PWMPWM信号是一种具有固定周期(T)不定占空比(t)的数字信号,如下图所示。

如果PWM信号的占空比随时间变化,那么通过滤波之后的输出信号将是幅度变化的模拟信号。

因此通过控制PWM信号的占空比,就可以产生不同的模拟信号。

msp430单片机利用Timer_A或者Timer_B可以很好的实现产生任意PWM信号。

Timer_A定时器的计数器工作在增计数方式,输出采用模式7(复位/置位模式),则可以利用CCR0控制PWM波形的周期,用某个寄存器CCRx控制占空比。

原理图如下:(注:这幅图片为网上下载,他用的是Timer_B定时器,故输出TBx)摘录下面一段:www1.ti/customer/article/article12161.asp将Timer_B配置为16-bit、up模式。

在这种模式下计数器计数至CCR0,然后复位从0开始重新计数。

给CCR0赋值255也就意味着计数器的长度为8bits。

CCR1和TB1用于产生正弦波,CCR2和TB2用于产生直流电平。

输出模式都选为模式7,即PWM复位/置位模式。

如图2所示,在这种模式下,复位后每一个定时器的输出都为高电平,直到计数器达到各自的CCRx值时变为低电平,当计数器达到CCR0时再置位。

也就是说CCRx的值决定了各自正脉冲的宽带。

若CCRx的值是变化的,就可以产生可变宽度的脉冲,下文中的正弦波就是用这种办法产生的;若不变则产生的是固定宽度的脉冲,下文中的直流电平就是这样产生的。

最后SMCLK用作Timer_B的时钟源。

系统采用32768Hz的钟表晶振,通过采用内部硬件锁频环FLL(frequency-locked-loop),。

基于MSP430单片机的信号源

基于MSP430单片机的信号源

基于MSP430单片机的信号源学生姓名:学生学号:院(系):电气信息工程学院年级专业:指导教师:助理指导教师:二〇一五年五月摘要由于科学技术的发展和现代科学研究发展趋势,信号发生器已经成为很多研究和测试行业不可或缺的工具。

已广泛应用于生产实践和科学技术的信号源可称为信号振荡器和信号发生器,能够产生多种波形,如三角波、锯齿波、正弦波、方波。

函数信号发生器广泛应用于电路实验和测试设备领域。

在通信方面,广播电视系统中,例如需要的高频(射频)发射无线电波,音频(低频率),视频信号或脉冲信号调制的载波,就需要产生高频振荡。

在工业、农业、生物医药等区域,如高频感应加热,熔化,淬火,超声,磁共振成像,我们需要强度或大或小,或高或低的频率的振荡器。

该系统以MSP430F149单片机为控制核心,利用单片机内部的DAC芯片,合理选择需要的输出波形(正弦波,三角波,方波,锯齿波)。

此过程的关键是中断,然后设置其他键控制输出波形,主要是调节振幅和频率,然后通过单片机控制LCD1602完成显示。

生成波形通过MSP430单片机执行一个波形生成程序,D/A转换器输入端按照一定的规则发出数据,再以D/A转换电路获得相应的输出电压波形。

学习板MSP430键盘控制是经过软件编程来选择不同的输出波形,不同的振幅和频率的电压波形,根据不同按钮被按下实现。

这个方案是一种电路原理相对简单,比较容易实现和调试。

关键词: MSP430,信号源,信号发生器,LCD1602ABSTRACT IIIIABSTRACT With the development of science and technology and modern scientific research, the signal generator has become a lot of research and testing industry indispensable tools. The signal generator and the signal source or oscillator, has been widely used in the production practice and science and technology. All kinds of waveform can be used to express trigonometric equation. Can produce a variety of waveforms, such as triangle wave, sawtooth wave, square wave (with Fang Bo), the circuit is called sine function signal generator. Function signal generator is widely used in circuit experiment and test equipment. For example, in communication, broadcasting television system, require radio frequency (HF) emission, where the radio wave is the carrier, the audio (low frequency), the video signal or pulse signal carry out, we need to produce high-frequency oscillator. In industry, agriculture, biomedical and other fields, such as high frequency induction heating, melting, quenching, ultrasound, magnetic resonance imaging, all need power or big or small, or high or low frequency oscillator.This system uses MSP430F149 microcontroller as control core, using DA microcontroller chip built-in, to logical choice to output waveform by key interrupt (sine wave, triangle wave, Fang Bo, Ju Chibo), the amplitude and frequency and then set the other keys to control the waveform, and then through the single-chip microcomputer control display to LCD1602.The waveform is generated through MSP430 microcontroller performs a waveform generation program, to the D/A converter input data according to certain rules, so as to obtain the corresponding voltage waveform at the output end of the D/A switching circuit. Learn the keyboard key board in MSP430, through software programming to select different waveform, amplitude and frequency of voltage signal waveform, different according to different keys. This scheme is a kind of circuit principle is relatively simple, relatively easy to achieve.Keywords: MSP430, Signal generator, LCD1602目录摘要 (I)ABSTRACT .............................................................................................................................................. I I1 概述 (1)1.1 信号发生器设计背景及意义 (1)1.2 信号发生器的发展现状 (2)1.3 本设计采用的研究方法和技术路线 (3)2 系统方案论证与选择 (4)2.1系统方案设计 (4)2.2系统方案选择 (5)3 系统硬件设计 (6)3.1 MSP430单片机的特点及发展与应用 (6)3.1.1 MSP430单片机的特点 (6)3.1.2 单片机的发展及应用 (8)3.1.3 MSP430F149单片机的电路图 (9)3.2 LCD1602液晶显示器简介 (10)3.2.1 LCD1602液晶显示器的引脚说明 (10)3.2.2 寄存器选择控制表 (11)3.3 DAC5571简介 (11)3.3.1 DAC5571的引脚说明 (11)3.3.2 DAC5571的原理图及运算方法 (12)3.4 模块电路设计 (13)3.4.1基于MSP430F149信号源构成及工作原理 (13)3.4.2. 信号发生器的键盘电路 (15)3.4.3 信号发生器的LCD1602显示模块 (15)3.4.4 数模转换DAC5571电路 (17)4 系统软件设计 (18)4.1 信号源总流程图 (18)4.2 初始化程序流程图 (19)14.3 按键中断程序流程图 (20)4.4 波形产生程序流程图 (22)4.4.1 正弦波产生程序流程图 (22)4.4.2 方波产生程序流程图 (22)4.4.3 锯齿波产生程序流程图 (23)4.4.4 三角波产生程序流程图 (23)5 PCB设计 (24)5.1 PCB设计软件 (24)5.1.1 PCB原理图设计 (25)5.1.2 PCB板制作方法 (25)5.2 PCB的EMC设计 (25)5.2.1 元器件布局的基本原则 (25)5.2.2 布线设计原则 (26)5.3 印制电路板 (26)6 设计的成果与分析 (28)结论 (31)参考文献 (32)附录A:基于MSP430单片机的信号源源程序代码 (34)附录B:PCB板图 (45)致谢................................................................................................................. 错误!未定义书签。

基于MSP430单片机的直流电机PWM调速系统的研究

基于MSP430单片机的直流电机PWM调速系统的研究

文章编号:167121742(2003)022*******基于MSP430单片机的直流电机PW M 调速系统的研究王鹏飞1, 王保强2(1.西南交通大学,四川成都610031;2.成都信息工程学院,四川成都610041)摘要:阐述了MSP430指令集和编译软件的特点,介绍一种基于MSP430单片机实现的直流电机的调速系统。

该系统采用MSP430的T imer A 模式,产生PW M 输出以生成控制信号,能够理想的实现直流电机的PW M 控制,并给出部分软硬件设计。

关 键 词:脉宽调制;MSP430;直流电机中图分类号:TP368.1 文献标识码:A1 引言 直流电机由于具有速度控制容易,启、制动性能良好,且在宽范围内平滑调速等特点而在冶金、机械制造、轻工等工业部门中得到广泛应用。

直流电动机转速的控制方法可分为两类,即励磁控制法与电枢电压控制法。

励磁控制法控制磁通,其控制功率虽然小,但低速时受到磁饱和的限制,高速时受到换向火花和换向器结构强度的限制;而且由于励磁线圈电感较大,动态响应较差。

所以常用的控制方法是改变电枢端电压调速的电枢电压控制法。

调节电阻R 即可改变端电压,达到调速目的。

但这种传统的调压调速方法效率低。

随着电力电子技术的进步,发展了许多新的电枢电压控制方法,其中PW M (脉宽调制)是常用的一种调速方法。

其基本原理是用改变电机电枢(定子)电压的接通和断开的时间比(占空比)来控制马达的速度,在脉宽调速系统中,当电机通电时,其速度增加;电机断电时,其速度减低。

只要按照—定的规律改变通、断电的时间,即可使电机的速度达到并保持一稳定值。

最近几年来,随着微电子技术和计算机技术的发展及单片机的广泛应用,使调速装置向集成化、小型化和智能化方向发展。

在单片机控制的脉宽调速系统中,占空比D 的产生可以由定时器或延时软件来产生。

MSP430单片机的定时器可以产生PW M 方波输出,将它用于直流电机的脉宽调速系统是个很好的方案。

单片机pwm调光电路

单片机pwm调光电路

单片机pwm调光电路单片机PWM调光电路一、引言随着人们对照明效果的追求,调光技术在照明领域中得到广泛应用。

而单片机PWM调光电路作为一种常见的调光技术,具有调光范围广、精度高、响应速度快等优点,被广泛应用于LED照明、舞台灯光等领域。

本文将介绍单片机PWM调光电路的原理和实现方法。

二、原理单片机PWM调光电路的原理是利用单片机的定时器产生PWM信号,通过改变PWM信号的占空比来调节灯光的亮度。

PWM(Pulse Width Modulation)即脉宽调制,通过改变信号脉冲的高电平时间和低电平时间的比例,来控制被调光设备的平均功率,从而达到调光的效果。

三、实现方法1. 硬件设计单片机PWM调光电路的硬件设计主要包括单片机、光敏电阻、三极管等元件。

其中,单片机是控制调光的核心部件,光敏电阻用于感知环境光亮度,并将感知的信号输入给单片机,三极管则用于控制LED灯的亮度。

2. 程序设计在单片机PWM调光电路中,需要通过编程来实现PWM信号的控制。

具体的实现步骤如下:(1)初始化定时器:设置定时器的工作模式和时钟源。

(2)设置PWM参数:设置PWM的频率和占空比。

(3)启动定时器:使定时器开始工作。

(4)根据光敏电阻的信号调节PWM占空比:通过读取光敏电阻的信号,计算出对应的PWM占空比,并将其写入PWM寄存器。

(5)循环执行以上步骤,实现实时调光。

四、优点与应用1. 优点(1)调光范围广:单片机PWM调光电路可以在0-100%之间连续调节亮度,满足不同场合的需求。

(2)精度高:PWM调光电路的调光精度可以达到0.1%左右,保证了照明效果的准确性。

(3)响应速度快:由于PWM信号的高低电平时间可以非常短,因此单片机PWM调光电路的响应速度很快,可以实现实时调光。

(4)节能环保:通过调节灯光的亮度,可以达到节能减排的效果,降低能耗,环保节能。

2. 应用(1)LED照明:单片机PWM调光电路广泛应用于LED照明领域,通过调节LED的亮度,实现不同场合的照明需求,如家居照明、商业照明等。

超声波流量计(MSP430单片机)源代码

超声波流量计(MSP430单片机)源代码
07 93 03 20 08 93 01 20 2C D3 30 41 39 45 06 3C
85 93 00 00 02 34 39 43 01 3C 09 43 3A 45 28 45
09 3C 85 93 00 00 03 34 3A 43 39 43 02 3C 09 43
@8280
@1000
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
01 30 2B D3 39 40 7F FF 19 D1 02 00 3A 43 E5 3F
3B 40 06 00 F7 3F 37 45 38 45 35 49 36 49 47 93
@8200
09 30 45 93 0E 30 05 97 02 20 06 98 0C 24 09 28
@8500
A8 7E F2 7D 90 90 A0 7E A0 7E 07 28 90 40 98 7E
E4 7D 90 40 92 7E 92 7E 04 3C 90 53 8C 7E 90 53
D4 7D 35 40 F4 02 B0 12 7E 82 A0 41 C8 7D 90 41
11 2C 10 30 1C 83 F6 23 3C 41 4C 93 02 34 35 D0
@8380
00 80 11 12 02 00 81 47 06 00 81 46 04 00 81 45
02 00 17 3F 35 40 99 79 36 40 99 99 37 40 99 99

基于MSP430直流电机PWM调速

基于MSP430直流电机PWM调速

! 5 : G ).
! 3 )L )G )3
64 >H) >H! >D) >D!
+NADNB $O! ;;%
@<C! @<C! PHD PHD PHD PHD PHD
)$ )5
+NADNB $O! K;;! ! ) ;@H! ) L ). )) )! )R ;) PHD) ) ! G !. ;@H! <! KQQ KQQ KQQ H; H; @<C) @<C) : R B! BN4! 5 $ ): ! 3 )L )G )3 64 >H) >H! >D) >D! ;A%
H (, IH ( J 3)#) K 5 L
óMNO L\-04 $64%W]6$60/ G /6%/
J<E2(, 0<2( $;=c3)#)
!" $%&’() #$%&’ &*$ ()*+,-.
!
/
" ! #$%
! "#$%&’()*+,-./01&123456"7 $%& +((,))8
0 !9:;<=1>?@/AB?CDE6FGHIJKLMNO?<=PQ5R?STU V $%&’() WXYZ
92 % .: 92 _0. . : ! % 2 " ‘ & .3 a eS(;Sf 2g: : . " ‘ .3 a .% .2 *T(9 *T(7 *T)9 *T)7 *T$9 *T$7 *T;9 *T;7 +,-( +,-) +,-$ +,-; ! 2 .. .! _b (Q) ST )Q$ ST 92 c$$ ."

msp430控制步进电机代码

msp430控制步进电机代码
void mInitSTDIO()//系统初始化
{
unsigned char i;
//主时钟初始化
WDTCTL = WDTPW + WDTHOLD;// stop watchdog timer
FLL_CTL0 |= XCAP14PF;// Configure load caps
//定时器A初始化
TACTL = TASSEL0 + TACLR;// ACLK, clear TAR
IE1 |= URXIE0;// Enable USART0 RX interrupt
//串行口1(RS-232)初始化
UTCTL1 = SSEL1;// UCLK = SMCLK
UBR01 = 0x6D;// 1048576Hz/9600bps = 109.2266 = 006Dh
UBR11 = 0x00;// 1048576Hz 9600bps
0x90 ,//输出"00010000"
0x80 ,//输出"00110000"
0xc0 ,//输出"00100000"
0x40 ,//输出"01100000"
0x60 ,//输出"01000000"
0xc0 ,//输出"11000000"
0x30 ,//输出"10000000"
0x10 ,//输出"10010000"
TBCCTL0 = CCIE;// CCR0 interrupt enabled
TBCCR0 = 328;//定时器常数(1/100秒)
TBCTL |= MC0;
// P1口初始化

PWM信号控制直流电机调速的源代码

PWM信号控制直流电机调速的源代码
{
if(index==1) /*电机1的处理*/
{
m1=abs(speed); /*取速度的绝对值*/
if(speed<0) /*速度值为负则反转*/
{
s1=0;
s2=1;
}
else /*不为负数则正转*/
{
s1=1;
s2=0;
}
}
if(index==2) /*电机2的处理*/
{
m2=abs(speed); /*电机2的速度控制*/
{
motor(1,i);
motor(2,i);
delay(5000);
}
for(i=0;i<=100;i++) /*反转加速*/
{
motor(1,-i);
motor(2,-i);
delay(5000);
}
for(i=100;i>0;i--) /*反转减速*/
{
motor(1,-i);
motor(2,-i);
uchar m2=0; /*电机2速度值*/
uchar tmp1,tmp2; /*电机当前速度值*/
/*电机控制函数index-电机号(1,2); speed-电机速度(-100—100) */
void motor(uchar index, char speed)
{
if(speed>=-100 && speed<=100)
if(speed<0) /*电机2的方向控制*/
{
s3=0;
s4=1;
}
else
{
s3=1;
s4=0;
}
}
}
}
void delay(uint j) /*简易延时函数*/

基于MSP430的直流电机PWM调速双闭环控制系统的设计解读

基于MSP430的直流电机PWM调速双闭环控制系统的设计解读

目录1 引言 (1)1.1 直流电机调速技术的发展 (1)1.2 PWM调速技术 (1)1.3 双闭环控制系统简介 (2)1.4 论文研究的内容及章节安排 (2)2 MSP430系列单片机概述与直流电动机调速方式简介 (3)2.1 MSP430系列单片机简介 (3)2.2 MSP430的原理及性能特点 (3)2.3 直流电机的主要结构 (4)2.4 直流电动机的调速方式 (5)3 直流电机双闭环调速控制系统设计 (7)3.1 系统组成原理图 (7)3.2 外围电路介绍 (8)3.3 转速、电流双闭环直流调速系统 (11)3.3.1 电流、转速双闭环控制器设计 (12)3.3.2 调速系统控制单元的确定和调整 (13)4 系统软件设计 (15)4.1 数字PI调节器的设计 (15)4.1.1 数字PI调节器的控制算法 (15)4.1.2 数字PI调节器的控制程序 (16)4.2 A/D转换控制程序的设计 (18)4.2.1 ADC12转换器的性能及特点 (18)4.2.2 ADC12转换器的控制程序 (19)5 总结 (23)谢辞 (25)参考文献 (25)基于MSP430的直流电机PWM调速双闭环控制系统设计摘要直流电机传统的调速方法调节精度低、能源利用率低、调速不稳定、可控性较差;而脉宽调制(PWM)直流调速技术,具有调速精度高、响应速度快、调速范围宽和损耗低等特点,不仅实现了对电机速度的实时调节,而且还体现了节约能源,经济实用的特点。

本文介绍了美国德州仪器(TI)公司的超低功耗16位单片机MSP430F2619。

基于MSP430F2619设计一直流电机双闭环PWM调速系统,由测速发电机检测直流电机转速构成速度反馈,利用整流桥构成电流反馈。

MSP430F2619完成转速、电流双闭环PI控制器的数字控制,且单片机的定时器生成PWM波,经功率驱动芯片放大后控制直流电机的电枢电压进行平滑调速。

从而实现了控制系统简单、调速性能可靠。

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

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

利用MSP430F41单片机定时器实现信号采样和PWM
控制
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 个输出模块,支持脉宽调制的需要。

单片机输出PWM温控程序C语言代码

单片机输出PWM温控程序C语言代码

单片机PWM温控C语言程序部分代码#include <reg52.h>#include <at89x52.h>#include <keyscan.h>extern void scan_full(void);extern unsigned char key_scan(void);extern bit key_ok;unsigned char pwm_set,key_value;unsigned char count;sbit PWM=P3^6; //将PWM定义为P3口的第六位?bit up,down,set_flag;unsigned char code BCD[]={0x3f,0x06,0x5b,0x4f, //此处是将0-F转换成0x66,0x6d,0x7d,0x07, //相应的BCD码0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay1(unsigned char t){while(t--);}void pwm(void) interrupt 5//定时器2产生PWM波形{TF2=0; //定时器2的溢出标志要软件清除,//但当RCLK或TCLK为1时由硬件清除if((count>=pwm_set)&amt;&amt;(count<10))PWM=1;elsePWM=0;count++;if(count==10)count=0x00;}void key_pwm(unsigned char x)//把键值转化为PWM设置值{switch(x) //把矩阵键盘转化为独立键盘{case 1:up=1;break;case 2:down=1;break;case 3:set_flag=!set_flag;break;default:break;}//设置PWM参数:pwm_setif(up&amt;&amt;set_flag){pwm_set++;up=0;if(pwm_set>=10)pwm_set=0x00;}if(down&amt;&amt;set_flag){pwm_set--;down=0;if(pwm_set==0xff) //减到-1?pwm_set=9;}if(!set_flag){up=0;down=0;}}void main(void){TH2=0xb1; //定时20MSTL2=0xe0;RCAP2H=0xb1;//定时器2溢出会把该单元内容送到TH2和TL2 RCAP2L=0xe0;EA=1;ET2=1;TR2=1;while(1){scan_full(); //看是否有键按下if(key_ok) //有键按下,则判断到底是哪个键按下{key_value=key_scan();//键值送key_value暂存P0=~BCD[key_value]; /*此三句是将键值显示出来*/P2=0xfe;delay1(200);key_pwm(key_value); //调用键值转PWM设置参数函数key_value=0x00; //清除键值,以免一次按下,多次响应}P0=~BCD[pwm_set]; /***此三句是将pwm_set值显示出来*/P2=0xfd;delay1(200);}}#include <reg52.h>//#include <at89x52.h>//unsigned char code BCD[]={0x3f,0x06,0x5b,0x4f, //此处是将0-F转换成//相应的BCD码 :// 0x66,0x6d,0x7d,0x07,// 0x7f,0x6f,0x77,0x7c,// 0x39,0x5e,0x79,0x71};//unsigned char code KEY[]={0x00,0x00,0x01,0x02,0x03,//此处是为使程序通用,当键值不是按// 0x04,0x05,0x06,0x07,//这个排列时,把此表更改即可// 0x08,0x09,0x0a,0x0b,//最前面的那个0x00是为了查表方便,// 0x0c,0x0d,0x0e,0x0f};//因为键值是从1开始的sfr key_port=0x90; //定义P1口为键盘扫描口bit key_ok=0; //有键按下的标志/*************延时子程序*****************调用一次用时18微秒,t每加1,用时增加6微秒*/void delay(unsigned char t){while(t--);}unsigned char r_left(unsigned char x)//循环左移一位{x<<=1;x++;return(x);}/*************粗判有无键按下**************有键按下则将key_ok置1************/void scan_full(void){unsigned char temp;key_port=0xf0; //低半字节为行线,高半字节为列线temp=P1;if(temp!=0xf0)key_ok=1;elsekey_ok=0;}/************键盘扫描程序*****************************功能:返回键值,当无键按下时,返回0*************/unsigned char key_scan(void){unsigned char temp,count=0x01,key_value;//按键返回值unsigned char x_scan=0xfe,y_scan=0xef;//行、列扫描码unsigned char i,j,y; //行数和列数while(1){scan_full(); //粗判是否有键按下if(key_ok==1){key_ok=0;delay(200); //延时去抖动scan_full(); //再次粗判是否有键按下if(key_ok==1){for(i=0;i<4;i++) //扫描4行{key_port=x_scan;for(j=0;j<4;j++) //每行4列{temp=key_port;temp=temp&amt;0xf0;y=y_scan&amt;0xf0;if(temp==y){while(key_ok!=0)//等待按键松开{scan_full();}key_value=count;return(key_value);//找到键值,马上返回}else{count++;y_scan=r_left(y_scan);}}y_scan=0xef; //扫描完一列,重新对列扫描量赋初值x_scan=r_left(x_scan);//行扫描码左移一位,扫描下一行}}}return(key_value);//没键按下,返回0}}//unsigned char key(void)//{// unsigned char x;// unsigned char y;// x=key_scan();// return(x);// y=KEY[x];// return y;//}。

msp430 如何用外部的电压控制pwm的占空比

msp430 如何用外部的电压控制pwm的占空比
外部电压用AD采集,范围是0~3.3V,数字是0~4095。然后要搞清楚你的PWM的周期是多少?定时器数字范围是0~65535。确定周期后才能用“0~4095”去对应你那个“0~周期”(430单片机的PWM是定时器设置的,一个是基准设置,另一个就是占空比设置,对应AD值增减按比例关系调节这个值的增减就行了),这样就能控制占空比为“0%~100%”了。
这个是 TI的例程,我自己算出来的波形是T1 :96个低电平,160个高电平,周期是256,T2:32个低电平,224个高电平,周期也是256,标准答案是:占空比: T1: 75%T2: 25%自己也不知道哪出错了?这个真要请高手指点,谢谢~~#include <msp430.h>int main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x0C; // P1.2 and P1.3 output P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 options CCR0 = 128; // PWM Period/2 CCTL1 = OUTMOD_6; // CCR1 toggle/set CCR1 = 32; // CCR1 PWM duty cycle CCTL2 = OUTMOD_6; // CCR2 toggle/set CCR2 = 96; // CCR2 PWM duty cycle TACTL = TASSEL_2 + MC_3; // SMCLK, up-down mode _BIS_SR(LPM0_bits); // Enter LPM0}
答案是对的。输出模式6是CCRX时翻转,CCR0时置位。增减计数方式。T1:(1)0~32低电平,(2)32~128与128~32(192个)高电平,(3)32~0与0~32(64个)低电平,重复(2,(3),占空比192/(192+64)=75%T2:同理,占空比25%不知道那个160是哪来的。追问增减计数模式,进入减计数时,tar从128减到 CCR1=32时,out会翻转吗?不是说 减计数从128到到32 时,翻转一次吗?回答只要是CCR0=CCR1时都要翻转。不管是CCR0增加时还是减少时
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
频率
用于产生直流电平的滤波器仅仅是用来储存电荷的而不像交流信号滤波器那样
用来滤波因此采用了一个简单的单极RC 滤波器
4.程序流程
用MSP430F449 的Timer_B 的PWM 来产生正弦波和直流电平的程序比较简单流
程如图4 所示MSP430F449 自身有FLL 可用它来实现DCO 的频率校准但是
实现低功耗尽量避免采用有
源器件
用于交流信号的滤波器是一个
双极点级联RC 滤波器如果滤
波器阶数过高可以采用提高
的抽样频率的办法来降低滤波
器阶数滤波器的截至频率fc
由下式来计算
当R2 ? R1 时滤波器的响应较
好但是如果截至频率很接近信号带宽边沿将会导致相当大的衰减因此为了
减小滤波器的衰减截至频率应该大于信号带宽边沿但是要远小于PWM 信号的
新的正弦波抽样值载入捕获/比较寄存器CCR1 中因此产生的PWM 信号的脉冲宽
度就决定了正弦波在每一个时刻的抽样值将这个PWM 信号经过低通滤波即得
所需的正弦波
3.2 直流电平的产生
直流电平产生比较简单因为它对应的PWM 占空比是一定的直流电平直接正比
于PWM 信号的占空比要产生0.5VCC 的直流电平PWM 的占空比显然是50% 考
FLL_CTL0 = XCAP18PF; // 设置XTAL1 的负载电容
SCFQCTL = 50-1; // 1.6384MHz/32768Hz = 50,fDCO=MCLK=1.6384MHz
for (i = 50000; i; i--); // 晶振初始化延时
//***设置Timer_B***//
TBCCR2=128; //PWM 的占空比为50%,产生0.5VCC 的直流电平
_EINT(); //中断允许
for (;;)
{ _BIS_SR(LPM0_bits); //CUP 进入低功耗模式
_NOP();
}
}
//调用中断函数
interrupt [TIMERB0_VECTOR] void Timer_B(void)
TBCCTL1=OUTMOD_7+CLLD_1; //将CCRx 设为比较模式,中断禁止
TBCCTL2=OUTMOD_7+CLLD_1; //选择输出模式7,当TBR 计数到0 时CCRx
数据加载到TBCTLx
TBCCR1=SinTable[SampleTimes]; //将正弦表加载到CCR1
TBCTL = TBSSEL1 + TBCLR; // 选择SMCLK 为时钟定时器清除
TBCTL|=MC_1+CNTL_0+TBCLGRP_0; //选择up,16 位模式
TBCCTL0=CCIE; //将CCR0 设为比较模式,中断允许
TBCCR0=256-1; //PWM 的周期为256,也就是DAC 为8bit
int
SinTable[]={255,254,246,234,219,199,177,153,128,103,79,57,37,22,10,2,
1,2,10,22,37,57,79,103,128,153,177,199,219,234,246,25
5};
void main(void)
图4 软件流程
先进技术因此具有很高的性价比在欧洲市场已得到了非常广泛的应用虽然
MSP430 进入国内市场的时间不是很长但是因其具有以上所述的卓越品质一
进入国内市场就被众多电子工程师所青睐其中MSP430F449 具有7 个工作模式
可选8 10 12 16 的16 位计数器用其比较模式产生的PWM 可以实现D/A 转
method of using the PWM of MSP449F449's Timer_B to create a sine wave
and a DC level. At last, it gives the corresponding hardware circuit and C
language program.
是可以胜任的
5. 程序清单
MSP430 的另外一个特点是用C 语言编写程序简单而且效率较高本例就采用C
语言编写了程序清单如下
#include <msp430x44x.h>
#include <math.h>
int SampleTimes=0;
//***定义正弦表,并用32 个抽样值初始化正弦表,不要用"0"抽样***//
CCRx 值时变为低电平当计数器达到CCR0 时再置位也就是说CCRx 的值决定
了各自正脉冲的宽带若CCRx 的值是变化的就可以产生可变宽度的脉冲下
文中的正弦波就是用这种办法产生的若不变则产生的是固定宽度的脉冲下文
中的直流电平就是这样产生的最后SMCLK 用作Timer_B 的时钟源系统采用
控制可变占空比进而实现D/A 转换
2.2 分辨率
基于Timer_B PWM 的DAC 分辨率就等于计数
器的长度通常是CCR0 寄存器的值PWM DAC
的最低有效位是一个计数值分辨率是总的
计数值
Rcounts = Lcounts
其中Rcounts 是以计数值为单位的分辨率Lcounts是计数器的总计数值例如对8-bit
虑到损耗实际应大一些只需要简单地将CCR2 的值设置为128 并且无须
变化就可以得到50%占空比的PWM 信号将得到的PWM 信号通过RC 网络进行低
通滤波即可得到0.5VCC 的直流电平
3.3 滤波器设计
对两路输出都采用了结构简单
的RC 滤波器如图3 所示之
所以采用这种结构一是因为
RC 滤波器结构简单二是为了
Key words: MSP430F449; PWM; D/A conversion
1.简介
1.1 MSP430 单片机介绍
虽然目前在国内市场上应用较多的单片机仍然是8 位单片机但是由美国德州仪
器TI 公司推出的16 位单片机MSP430 具有处理能力强运行速度快低功耗
指令简单等优点并采用了JTAG 技术FLASH 在线编程技术BOOTSTRAP 等诸多
模式下计数器计数至CCR0 然后复位从0 开始重新计数给CCR0 赋值255 也就
意味着计数器的长度为8bits CCR1 和TB1 用于产生正弦波CCR2 和TB2 用于
产生直流电平输出模式都选为模式7 即PWM 复位/置位模式如图2 所示
在这种模式下复位后每一个定时器的输出都为高电平直到计数器达到各自的
DCO 的频率只能锁定在ACLK 的整数倍上所以对于没有FLL 的器件或者所需
频率不是ACLK 整数倍的情况下要用Timer_A 或者其它的定时器进行DCO 频率
校准这也就是所谓的"软锁频" 事实上实际的D/A 转换常常是一些随时间变化
的非周期信号它们对时钟的精度要求不是很高因此大多数情况下硬件FLL
32768Hz 的钟表晶振通过采用内部硬件锁频环FLL frequency-locked-loop
来校准DCO Digital Control Oscillator 频率为系统提供MCLK/SMCLK 时钟
图 2 输出模式7 PWM 复位/置位示意图
3. 实现电路
用Timer_B PWM 实现DAC 外围电路比较简单如图3 所示实际上外围电路就是
晶振电路和RC 低通滤波器
图3 MSP430F449 实现D/A 电路图
3.1 正弦信号的产生
在这个例子中一个正弦波用32 个抽样值生成正弦波的频率为200Hz 所以
每秒要抽样200 32=6400 次也就是说=6.4KHz 每完成一次抽样要计数
28 所以所需的时钟频率为抽样值包
含在程序开始的一个正弦表中通过调用中断函数在每个PWM 周期结束时将
为PWM 信号的频率越高对滤波器的阶数就要求越低合适的滤波器越容易实现
通常抽样速率取Nyquist 速率的16 或者32 倍
2.4 所需的MSP430 资源
文中的例子是用MSP430F449 的Timer_B 再加外部滤波器来产生一个200Hz 的正
弦波和一个0.5VCC 的直流电平的将Timer_B 配置为16-bit up 模式在这种
{
SampleTimes=(SampleTimes+1)%32;
TBCCR1=SinTable[SampleTimes]; //将新的抽样值装入CCR1
}
D/A Conversion Based on MSP430 Timer_B
Abstract This paper analyses the principle of utilizing the PWM to realize D/A
when the MSP430 Timer_B is working in compare mode. It describes the
换D/A conversion
1.2 PWM D/A 简介
很多嵌入式的微控制器microcontroller 应用都需要产生模拟信号这种情
况下往往是采用集成的或者是分立的数模转换器DAC digital-to-analog
converter 来实现但是采用脉宽调制PWM pulse-width modulated 信号来
摘 要本文分析了利用MSP430 的Timer_B 在比较模式下输出的脉宽调制(PWM)
波来实现D/A 转换的工作原理介绍了利用MSP430F449 的Timer_B 的PWM 输
相关文档
最新文档