当前位置:首页 > 单片机 > 单片机
[导读]一、实验目的和要求  掌握脉宽调制调速的原理与方法,学习频率/周期测量的方法,了解闭环控制的原理。二、实验设备  单片机测控实验系统  直流电机调速实验模块  Keil开发环境  STC-ISP程序下载工具三、实

一、实验目的和要求

  掌握脉宽调制调速的原理与方法,学习频率/周期测量的方法,了解闭环控制的原理。

二、实验设备

  单片机测控实验系统
  直流电机调速实验模块
  Keil开发环境
  STC-ISP程序下载工具

三、实验内容  

  1. 编写程序,能够在数码管上显示一个数值。
  2. 固定向P1.1输出0,然后测量每秒钟电机转动的转数,将其显示在数码管,每秒刷新一次即可。
  3. 使用脉宽调制的方法,动态调整向P1.1输出的内容,使得电机转速能够稳定在一个预定值附近,同时实时显示当前转速。
  4. 根据输入修改电机转速目标值,设置两个转速目标值:低转速和高转速。
  5. 每隔一秒钟读取两个开关的状态,如果S1按下,动态调整输出,使得电机转速能够稳定到低转速目标值附近,如果S2按下,动态调整输出,使得电机转速能够稳定到高转速目标值附近。交替显示目标值和当前转速值。

四、实验步骤

1. 建立工程,实现实验内容1

  参考辅助材料,学习8031汇编语言使用和直流电机原理。  

2. 编写中断程序,测量电机转速

  本程序需要使用定时器定时,并使用中断来同步。中断程序的典型例子如下: 

ORG 0000H
LJMP START
ORG 000BH
LJMP T0IN ;中断向量表
ORG 0040H
START: ...;初始化
...
T0IN: ...;中断程序
...
RETI ;中断返回
END

3. 完成控制转速程序

  按照脉宽调制的原理,再添加一个快速的定时中断(0.1ms左右),在这个中断里面动态改变P1.1的输出,宏观上输出有效(0)的比例就是预定的控制变量。这个控制变量增大,电机转速就应该提高,但由于各种内部和外部因素,它们之间不存在简单的函数关系,因此必须根据测量出来的实际转速进行动态调整。

  首先将电机转速控制在一个预定数值附近,在每一个1秒钟中断测量出当前转速之后,将其与目标值相对比,如果不够则增加控制变量,否则减少之,这样就能逐步达到稳定转速的目的。同时将速度显示出来。

4. 完成整体实验内容

  在上面程序的基础上,再加上根据开关状态改变预定转速的代码。同时,在主程序中交替显示目标值和当前转速值,显示一个内容之后等待一段时间(可以由延时代码实现),然后再显示另一个并延时。要显示的内容都是在中断中被修改的。

五、实验原理

本实验示意电路原理图(图中的P1.3应改为P1.1):

  对于直流电机来说,其转速由输入电压决定,因此具有平滑调速的效果;相比而言,交流电机的转速由交流电频率和电机结构决定,难以改变速度。当然,交流电机构造简单,没有换向器,所以容易制造高转速、高电压、大电流、大容量的电机;而直流电机一般用在负荷小,但要求转速连续可调的场合,如伺服电机。

  脉宽调制(Pulse Width Modulation,PWM)是一种能够通过开关量输出达到模拟量输出效果的方法。使用PWM可以实现频率调制、电压调制等效果,并且需要的外围器件较少,特别适合于单片机控制领域。这里只关心通过PWM实现电压调制,从而控制直流电机转速的效果。也称作脉宽调制调速。

  PWM的基本原理是通过输出一个很高频率的0/1信号,其中1的比例为δ(也叫做占空比),在外围积分元件的作用下,使得总的效果相当于输出δ×A(A为高电平电压)的电压。通过改变占空比就可以调整输出电压,从而达到模拟输出并控制电机转速的效果。

  使用单片机实现PWM,就是根据预定的占空比δ来输出0和1,这里δ就是控制变量。最简单的办法就是以某个时间单位(如0.1ms,相当于10kHz)为基准,在前N段输出1,后M-N段输出0,总体的占空比就是N/M。这种方法由于0和1分布不均匀,所以要求基准频率要足够高,否则会出现颠簸现象。

  要达到更稳定的效果,可以采用累加进位法如果将总的周期内的0和1均匀分散开。设置一个累加变量x,每次加N,若结果大于M,则输出1,并减去M;否则输出0。这样整体的占空比也是N/M。在实验中取M=256可以使程序更加简单。

  另外,由于本实验板的设计,输出0使电机工作。因此对于本实验,上面所说的0和1要翻转过来用。

  在本实验板中,电机每转动一次,与之相连的偏心轮将遮挡光电对管一次,因此会产生一个脉冲,送到INT0。要测量转速,既可以测量相邻两次中断之间的时间;也可以测量一秒种之内发生的中断次数。显然,后一种方法更加简单。

  进行转速控制时,涉及到三个变量:预期转速,实际转速和控制变量。这里控制变量就是占空比。我们并不能够预先精确知道某个控制变量的值会导致多少的实际转速,因为这里有很多内部和外部因素起作用(如摩擦力,惯性等),但可以确定就是随着控制变量的增加,实际转速会增加。

  反馈控制的基本原理就是根据实际结果与预期结果之间的差值,来调节控制变量的值。当实际转速高于预期转速时,我们需要减少控制变量,以降低速度;反之则需要调高控制变量。

  本实验的转速控制可以使用简单的比例控制算法,也就是当转速S大于预定值时,将输出0的个数减少;当转速小于预定值时,将输出0的个数增加。改变值正比于测量出的差值。也可自行使用其他更加复杂的算法。

  实验中采用的电机最大转速在200转/s左右,转速小于40转/s左右将不稳定,可能会停转。

六、实验代码

ORG 0000H
LJMPSTART
ORG0003H
LJMPOUTINT
ORG000BH
LJMPTIME0
ORG001BH
LJMPTIME1
ORG 0030H

P4SW EQU 0BBH
P4 EQU 0C0H
CLKEQUP4.4
DATEQUP4.5
S1EQUP3.6
S2 EQU P3.7
MOT EQU P1.1
START:
;对P4口进行初始化设置
MOVDPTR,#TAB
MOVP4SW,#70H

MOVR0,#0;计转速
MOVR1,#0;产生1s定时用

;R6、R5、R4数码管显示控制
MOV R6,#0;数码管个位
MOV R5,#0;数码管十位
MOV R4,#0;数码管百位

MOVR7,#0;交替显示时用
MOV60H,#100;存高电平
MOV61H,#100;存低电平

MOVR2,61H;R2用于快速定时中断中给MOT送值时计数,赋初值为低电平的个数

MOV62H,#200;按下s1时的目标值(最大值)
MOV63H,#100;按下s2时的目标值(最小值)
MOV64H,#150;不按键时的转速

MOV R3,64H ;计目标值(初始值为不按键时的转速)
;---------------------------------------------------------------------
;TMOD说明、T1/T0初值计算:
;---------------------------------------------------------------------
;T1"T0
;TMOD D7D6D5D4D3D2D1D0
;(89H)GATEC/TM1M0GATEC/TM1M0
;00010010
;|定时模式| 方式1 |由软件启动|| 方式2
;---------------------------------------------------------------------
MOVTMOD,#12H
;---------------------------------------------------------------------
;T0初值计算(快速定时中断,动态改变MOT的输出,0.1ms,方式2),Tosc=12MHz
;X=(2^8-(0.1ms)/12*Tosc)=256-100=156=9CH
;---------------------------------------------------------------------
MOVTH0,#9CH
MOVTL0,#9CH
;---------------------------------------------------------------------
;T1初值计算(定时中断,数码管显示控制,1s,方式1),Tosc=12MHz
;X=(2^16-(1s)/12*Tosc)=65536-1000000<0
;折中方法:每20次产生1s定时初值,一次间隔50ms
;X=(2^16-(50ms)/12*Tosc)=65536-50000=15536=3CB0H
;---------------------------------------------------------------------
MOVTH1,#3CH
MOVTL1,#0B0H

;中断开关
SETBEA
SETBEX0
SETBIT0
SETBET0
SETBTR0
SETBET1
SETBTR1

CLRMOT;电机初始状态设置为低电平

L1:
SJMPL1;死循环,用于查询

;---------------------------------------------------------------------
;每个1ms调整MOT口输出一次,一次调整一个脉冲
;60H存高电平输出次数,61H存低电平输出次数
;每隔1s调整60H,61H的值一次,来动态调整电机转速
;---------------------------------------------------------------------
TIME0:
;保存程序状态
PUSHACC
PUSHPSW
DJNZ R2,RETURN0;R2用于快速定时中断中给MOT送值时计数

CPLMOT;取反MOT
JNBMOT,LP0;判断MOT电平高低
MOVR2,60H;若MOT=1,给R2赋高电平计数值
LJMPRETURN0
LP0:
MOV R2,61H;若MOT=0,给R2赋低电平计数值

RETURN0:
POPPSW
POPACC
RETI

TIME1:
;保存程序状态
PUSHACC
PUSHPSW
INCR1;R1自增
CJNER1,#20,RETURN1;不等于20(小于20)直接return1,TIME1执行20次,产生1秒中断
MOVR1,#0
MOVR3,64H

;在1s中断中应该执行的操作
JNBS1,MAX;s1按下,R3置为MAX
JNBS2,MIN;s2按下,R3置为MIN
SJMPLOOP
MAX:
MOVR3,62H
SJMPLOOP
MIN:
MOVR3,63H
SJMPLOOP

;转速调整
LOOP:
MOVA,R0;R0计转速
SUBBA,R3;A-R3影响Cy
JCZENG;R0JNCJIAN;R0>R3,跳转JIAN
SJMPSHOW;跳转交替显示

ZENG:
INC61H;增加低电平
DEC60H;减少高电平
SJMPSHOW

JIAN:
INC60H;增加高电平
DEC61H;减少低电平
SJMPSHOW

;交替显示
SHOW:
INCR7
CJNER7,#2,LP1;R7=1显示当前转速,R7=2显示目标转速
MOVR7,#0

;显示目标转速
MOV A,R3
MOV B,#100
DIV AB ;商A,余数B
MOV65H,A;百位
MOVA,B
MOV B,#10
DIV AB
MOV 66H,A;十位
MOV 67H,B;个位
MOV R6,67H;目标转速
MOVR5,66H
MOV R4,65H

LP1:
LCALLDSL

MOVR6,#0
MOVR5,#0
MOVR4,#0
MOVR0,#0

RETURN1:
POPPSW
POPACC
RETI

OUTINT:
INCR0
INCR6
CJNER6,#10,COUNT_EXIT

INCR5
MOVR6,#0
CJNER5,#10,COUNT_EXIT

INCR4
MOVR5,#0
CJNER4,#10,COUNT_EXIT
MOVR4,#0
COUNT_EXIT:
RETI

DSL:
MOVA,R6
MOVC A,@A+DPTR
LCALL DISPLAY
MOVA,R5
MOVC A,@A+DPTR
LCALL DISPLAY
MOVA,R4
MOVC A,@A+DPTR
LCALL DISPLAY
RET;中断函数内,此处必须是RET,RETI结束中断

DISPLAY:
MOVR0,#8
DS_L:
CLRCLK
RLCA
MOV DAT,C
SETB CLK
DJNZ R0,DS_L
RET

TAB:
DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END


七、一点想法

在本次实验中,PWM脉宽调制是通过改变低电平(0,存在61

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器

随着科技的飞速发展,单片机和嵌入式系统在现代电子设备中的应用越来越广泛。它们不仅提高了设备的智能化水平,还推动了各行各业的创新与发展。在单片机和嵌入式系统的开发中,编程语言的选择至关重要。本文将深入探讨单片机和嵌入式系统...

关键字: 单片机 嵌入式系统 电子设备
关闭
关闭