直流电机调速与系统控制详解Word格式.docx

上传人:b****5 文档编号:18741912 上传时间:2022-12-31 格式:DOCX 页数:21 大小:1.10MB
下载 相关 举报
直流电机调速与系统控制详解Word格式.docx_第1页
第1页 / 共21页
直流电机调速与系统控制详解Word格式.docx_第2页
第2页 / 共21页
直流电机调速与系统控制详解Word格式.docx_第3页
第3页 / 共21页
直流电机调速与系统控制详解Word格式.docx_第4页
第4页 / 共21页
直流电机调速与系统控制详解Word格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

直流电机调速与系统控制详解Word格式.docx

《直流电机调速与系统控制详解Word格式.docx》由会员分享,可在线阅读,更多相关《直流电机调速与系统控制详解Word格式.docx(21页珍藏版)》请在冰豆网上搜索。

直流电机调速与系统控制详解Word格式.docx

霍尔器件是有半导体材料制成的一种薄片,器件的长、宽、高分别为l、b、d。

若在垂直于薄片平面(沿厚度d)方向施加外加磁场B,在沿l方向的两个端面加以外电场,则有一定的电流经过。

由于电子在磁场中运动,所以将受到一个洛仑磁力,其大小为:

fl=qVB

fl――洛仑磁力,q――载流子电荷,V――载流子运动速度,B――磁感应强度。

这样使电子的运动轨迹发生偏移,在霍尔元器件薄片的两个侧面分别产生电U称为霍形成霍尔电场,子积聚或电荷过剩,霍尔元器件两个侧面间的电位差H尔电压。

UR×

I霍尔电压大小为:

×

=B/d(mV)

HHR---霍尔常数,d---元件厚度,B---磁感应强度,式中:

I---控制电流HUKKR×

I=设=×

/d,则B(mV)

HHHHK为霍尔器件的灵敏系数(mV/mA/T),它表示该霍尔元件在单位磁感应H强度和单位控制电流下输出霍尔电动势的大小。

应注意,当电磁感应强度B反向时,霍尔电动势也反向。

若控制电流保持不变,则霍尔感应电压将随外界磁场强度而变化,根据这一原理,可以将一块永久磁钢固定在电动机的转轴上转盘的边沿,转盘随被测轴旋转,磁钢也将跟着同步旋转,在转盘附近安装一个霍尔元件,转盘随轴旋转时,霍尔元件受到磁钢所产生的磁场影响,故输出脉冲信号,其频率和转速成正比,测出脉冲的周期或频率即可计算出转速。

二系统设计

2.1硬件设计

通过自制5V电源来确保工作电压正常,由霍尔元件及外围器件组成的测速电路将电动机转速转换成脉冲信号,送至单片机的计数器T1,由T1测出电动机的实际转速,并与设定值比较形成偏差。

根据比较结果,使DAC0832输出控制电压增大或减小。

功放电路将DAC0832输出的模拟电压转换成具有一定输出功率的电动机控制电压。

2.1.2电机测速及驱动部分

测速在这里选用美国史普拉格公司(SPRAGUE)生产的3000系列霍尔开关传感器3013,它是一种硅单片集成电路,器件的内部含有稳压电路、霍尔电势发生器、放大器、史密特触发器和集电极开路输出电路,具有工作电压范围宽、可靠性高、外电路简单、输出电平可与各种数字电路兼容等特点。

LM324,它价格便宜,带有真差动输入的四运算放大器。

因为DAC0832输出的为电流,所以需要接一个运放,将信号转化为电压输出。

电路如图2.1.2所示。

图2.1.2电机测速及驱动部分

2.1.3数模转换

DAC0832是采用CMOS工艺制成的单片电流输出型8位D/A转换器,其内部结构如图图2.1.3a所示:

芯片内有两级输入寄存器,使DAC0832具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要(如要求多路D/A异步输入、同步转换等)。

D/A转换结果采用电流形式输出。

要是需要相应的模拟信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。

运放的反馈电阻可通过RFB端引用片内固有电阻,还可以外接。

电路或微机电路相接。

TTL可直接与电压电平范围,TTL该片逻辑输入满足.

图2.1.3aDAC0832内部结构图

Vcc:

芯片电源电压,为:

+5V~+15V;

VREF:

参考电压,为:

-10V~+10V;

RFB:

反馈电阻引出端,此端可接运算放大器输出端;

AGND:

模拟信号地;

DGND:

数字信号地;

DI7~DI0:

数字量输入信号,其中:

DI0为最低位,DI7为最高位;

ILE:

输入锁存允许信号,高电平有效;

CS:

片选信号,低电平有效;

WR1:

写信号1,低电平有效;

当ILE、CS、WR1同时有效时,LE=1,输入寄存器的输出随输入而变化;

WR1在上升沿时,LE=0,将输入数据锁存到输入寄存器;

XFER:

转移控制信号,低电平有效;

WR2:

写信号2,低电平有效;

当XFER、WR2同时有效时,LE2=1,DAC寄存器输出随输入而变化;

WR1在上升沿时,LE=0,将输入数据锁存到DAC寄存器,数据进入D/A转换器,开始D/A转换;

IOUT1:

模拟电流输出端1,当输入数字为:

全”1”时,输出电流最大,约RV;

全”0”时,输出电流为0;

IOUT2为:

255/256:

模拟电流输出端2,FBREFIOUT1+IOUT2=常数。

数模转换如图2.5.3b所示。

其中DAC0832的DI0~DI78个数字量输入端接89C51单片机的P0.0~P0.7端。

由于DAC0832采用了直通的方式,所以可以直接往其数据端口加上数值,就能从DAC0832后面的运放的输出端得到所需的模拟电压。

由于其输出电压可根据公式:

DnVV2X/=inoutREF

计算得来,因而在需要输出某个电压值时,按该式求出对应的数值,通过P0端口输出,就可以得到所需的模拟电压。

图2.1.3b数模转换

2.1.48421BCD编码键盘—手动控制转速部分

采用8421编码的键盘,“0”表示“0000”,“1”表示“0001”,……,“9”表示“1001”。

如图2.1.4所示

图2.1.48421BCD编码键盘

2.1.5显示部分

采用74LS164串入并出的移位寄存器给出串行口扩展的3位LED显示接口电路,如图2.1.5所示

图2.1.5显示部分

2.1.6系统心脏———AT89C51单片机

VCC:

供电电压。

GND:

接地。

位漏级开口为一个8口:

P0P0门8TTL口,每脚可吸收路双向I/O时,1当P1口的管脚第一次写电流。

能够用于外P0被定义为高阻输入。

它可以被定义为部程序数据存储器,编程FIASH数据/地址的第八位。

在FIASH当时,P0口作为原码输入口,P0输出原码,此时进行校验时,P0外部必须被拉高。

口是一个内部提供上P1P1口:

口缓P1I/O口,拉电阻的8位双向口P14TTL门电流。

冲器能接收输出可被内部上拉为高,1后,管脚写入口被外部下拉为低电P1用作输入,这是由于内部上将输出电流,平时,FLASH

拉的缘故。

在口作为第八位地址接收。

编程和校验时,P1口缓冲器可接收,口,P2口为一个内部上拉电阻的8位双向I/OP2口:

P2”时,其管脚被内部上拉电阻拉高,且作口被写“1个TTL门电流,当P2输出4口的管脚被外部拉低,将输出电流。

这是由于为输入。

并因此作为输入时,P2位地址外部数据存储器进行口当用于外部程序存储器或16内部上拉的缘故。

P2”时,它利用内部上拉优势,口输出地址的高八位。

在给出地址“1存取时,P2口输出其特殊功能寄存器的内容。

P2当对外部八位地址数据存储器进行读写时,编程和校验时接收高八位地址信号和控制信号。

P2口在FLASH个4I/O口,可接收输出个带内部上拉电阻的双向口:

P3口管脚是8P3”后,它们被内部上拉为高电平,并用作输入。

作1P3口写入“TTL门电流。

当)这是由于上拉的缘故。

ILL由于外部下拉为低电平,P3口将输出电流(为输入,AT89C51的一些特殊功能口,如下表所示:

P3口也可作为

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;

当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:

来自反向振荡器的输出。

振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。

在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。

在闲置模式下,CPU停止工作。

但RAM,定时器,计数器,串口和中断系统仍在工作。

在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

串口通讯:

单片机的结构和特殊寄存器,这是你编写软件的关键。

至于串口通信需要用到那些特殊功能寄存器呢,它们是SCON,TCON,TMOD,SCON等,各代表什么含义呢?

SBUF数据缓冲寄存器这是一个可以直接寻址的串行口专用寄存器。

有朋友这样问起过“为何在串行口收发中,都只是使用到同一个寄存器SBUF?

而不是收发各用一个寄存器。

”实际上SBUF包含了两个独立的寄存器,一个是发送寄存,另一个是接收寄存器,但它们都共同使用同一个寻址地址-99H。

CPU在读时会指到接收寄存器,在写时会指到发送寄存器,而且接收寄存器是双缓SBUF

冲寄存器,这样可以避免接收中断没有及时的被响应,数据没有被取走,下一帧数据已到来,而造成的数据重叠问题。

发送器则不需要用到双缓冲,一般情况下我们在写发送程序时也不必用到发送中断去外理发送数据。

操作SBUF寄存器的方法则很简单,只要把这个99H地址用关键字sfr定义为一个变量就可以对其进行读写操作了,如sfrSBUF=0x99;

当然你也可以用其它的名称。

通常在标准的reg51.h或at89x51.h等头文件中已对其做了定义,只要用#include引用就可以了。

SCON串行口控制寄存器通常在芯片或设备中为了监视或控制接口状态,都会引用到接口控制寄存器。

SCON就是51芯片的串行口控制寄存器。

它的寻址地址是98H,是一个可以位寻址的寄存器,作用就是监视和控制51芯片串行口的工作状态。

51芯片的串口可以工作在几个不同的工作模式下,其工作模式的设置就是使用SCON寄存器。

它的各个位的具体定义如下:

SM0SM1SM2RENTB8RB8TIRI

SM0、SM1为串行口工作模式设置位,这样两位可以对应进行四种模式的设置。

串行口工作模式设置。

SM0

SM1

模式

功能

波特率

0

同步移位寄存器

fosc/12

1

UART8位

可变

2

9位UART

fosc/32或fosc/64

3

在这里只说明最常用的模式1,其它的模式也就一一略过,有兴趣的朋友可以找相关的硬件资料查看。

表中的fosc代表振荡器的频率,也就是晶振的频率。

UART为(UniversalAsynchronousReceiver)的英文缩写。

SM2在模式2、模式3中为多处理机通信使能位。

在模式0中要求该位为0。

REM为允许接收位,REM置1时串口允许接收,置0时禁止接收。

REM是由软件置位或清零。

如果在一个电路中接收和发送引脚P3.0,P3.1都和上位机相连,在软件上有串口中断处理程序,当要求在处理某个子程序时不允许串口被上位机来的控制字符产生中断,那么可以在这个子程序的开始处加入REM=0来禁止接收,在子程序结束处加入REM=1再次打开串口接收。

大家也可以用上面的实际源码加入REM=0来进行实验。

TB8发送数据位8,在模式2和3是要发送的第9位。

该位可以用软件根据需要置位或清除,通常这位在通信协议中做奇偶位,在多处理机通信中这一位则用于表示是地址帧还是数据帧。

RB8接收数据位8,在模式2和3是已接收数据的第9位。

该位可能是奇偶位,地址/数据标识位。

在模式0中,RB8为保留位没有被使用。

在模式1中,当SM2=0,RB8是已接收数据的停止位。

TI发送中断标识位。

在模式0,发送完第8位数据时,由硬件置位。

其它模式中则是在发送停止位之初,由硬件置位。

TI置位后,申请中断,CPU响应中断后,发送下一帧数据。

在任何模式下,TI都必须由软件来清除,也就是说在数据写入到SBUF后,硬件发送数据,中断响应(如中断打开),这时TI=1,表明发送已完成,TI不会由硬件清除,所以这时必须用软件对其清零。

RI接收中断标识位。

在模式0,接收第8位结束时,由硬件置位。

其它模式中则是在接收停止位的半中间,由硬件置位。

RI=1,申请中断,要求CPU取走数据。

但在模式1中,SM2=1时,当未收到有效的停止位,则不会对RI置位。

同样RI也必须要靠软件清除。

常用的串口模式1是传输10个位的,1位起始位为0,8位数据位,低位在先,1位停止位为1。

它的波特率是可变的,其速率是取决于定时器1或定时器2的定时值(溢出速率)。

AT89C51和AT89C2051等51系列芯片只有两个定时器,定时器0和定时器1,而定时器2是89C52系列芯片才有的。

波特率在使用串口做通讯时,一个很重要的参数就是波特率,只有上下位机的波特率一样时才可以进行正常通讯。

波特率是指串行端口每秒内可以传输的波特位数。

有一些初学的朋友认为波特率是指每秒传输的字节数,如标准9600会被误认为每秒种可以传送9600个字节,而实际上它是指每秒可以传送9600个二进位,而一个字节要8个二进位,如用串口模式1来传输那么加上起始位和停止位,每个数据字节就要占用10个二进位,9600波特率用模式1传输时,每秒传输的字节数是9600÷

10=960字节。

51芯片的串口工作模式0的波特率是固定的,为fosc/12,以一个12M的晶振来计算,那么它的波特率可以达到1M。

模式2的波特率是固定在fosc/64或fosc/32,具体用那一种就取决于PCON

寄存器中的SMOD位,如SMOD为0,波特率为focs/64,SMOD为1,波特率为focs/32。

模式1和模式3的波特率是可变的,取决于定时器1或2(52芯片)的溢出速率。

那么我们怎么去计算这两个模式的波特率设置时相关的寄存器的值呢?

可以用以下的公式去计算。

波特率=(2SMOD÷

32)×

定时器1溢出速率

上式中如设置了PCON寄存器中的SMOD位为1时就可以把波特率提升2

倍。

通常会使用定时器1工作在定时器工作模式2下,这时定时值中的TL1做的值会TH1,这个定时模式下,定时器溢出后,做为自动重装值TH1为计数,

自动装载到TL1,再次开始计数,这样可以不用软件去干预,使得定时更准确。

在这个定时模式2下定时器1溢出速率的计算公式如下:

溢出速率=(计数速率)/(256-TH1)

上式中的“计数速率”与所使用的晶体振荡器频率有关,在51芯片中定时器启动后会在每一个机器周期使定时寄存器TH的值增加一,一个机器周期等于十二个振荡周期,所以可以得知51芯片的计数速率为晶体振荡器频率的1/12,一个12M的晶振用在51芯片上,那么51的计数速率就为1M。

通常用11.0592M

晶体是为了得到标准的无误差的波特率,那么为何呢?

计算一下就知道了。

如我们要得到9600的波特率,晶振为11.0592M和12M,定时器1为模式2,SMOD设为1,分别看看那所要求的TH1为何值。

代入公式:

11.0592M

9600=(2÷

((11.0592M/12)/(256-TH1))

TH1=250

12M

((12M/12)/(256-TH1))

TH1≈249.49

上面的计算可以看出使用12M晶体的时候计算出来的TH1不为整数,而TH1

的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600波特率。

当然一定的误差是可以在使用中被接受的,就算使用11.0592M的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计。

2.2软件设计

1、编程思路:

控制系统程序的功能是用89C51单片机的T0、T1测出电动芯片的输出控DAC0832使根据比较结果,并与给定值进行比较。

机的实际转速,

制电压增大或减小。

30H单元存放实际转速与设定值是否相等的标志。

“1”表示相等,“0”表示不相等。

40H单元存放送入DAC0832芯片的数字控制电压。

7FFFH为DAC0832地址。

2、系统流程图如图2.2所示:

图2.2直流电动机转速控制系统流程图

2.3PWM初始化、占空比设置、频率计算

(3)调速

(4)通信模块的设计

voidsend(unsignedintn)发送//

{

SBUF=n;

while(!

TI);

TI=0;

}

voidReceive()//接收速度设定值

if(RI==1)//接收二位十六进制数并进入PID调速

{

speed_t=SBUF;

RI=0;

}

(5)中断服务模块PCA测速

voidPCA_interrupt(void)interrupt7

TR0=0;

//关定时器T0

if(CCF1==1)//PCA模靠块1中断

CCF1=0;

//清PCA模块1中断标志

catch_speed+=1;

catch=256*CCAP1H+CCAP1L;

catch=catch/1000.0;

speed=1000*0.9216/catch;

CH=CL=0x00;

catch=0;

TR0=1;

//开定时器T0

(6)键盘修改转速

voidkey_xiugai(void)

if(KEY3==0)

while(!

KEY3)//消除抖动

{;

switch(k2)

case1:

gewei++;

if(gewei>

9)gewei=0;

break;

case2:

shiwei++;

if(shiwei>

9)shiwei=0;

case3:

shiwei++;

if(baiwei>

9)baiwei=0;

default:

break;

if(KEY4==0)

KEY4)//防止掉显

gewei--;

9)gewei=9;

shiwei--;

9)shiwei=9;

shiwei--;

baiwei=9;

9)

四.调试与分析

本系统用单片机构成电动机转速的控制系统,采用比例积分调节器算法,

效率高,电路简单,使用也比较广泛。

本测速系统采用集成霍尔传感器敏感速率信号,具有频率响应快、抗干扰能力强等特点。

霍尔传感器的输出信号经信号调理后,通过单片机对连续脉冲记数来实现转速测控,并且充分利用了单片机的内部资源,有很高的性价比。

经过测试

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1