单片机与模糊控制算法?

单片机与模糊控制算法?,第1张

哈哈,这不用模糊算法也能做哦:P

如果要求不高,就根本不需要反馈控制

1, 加低通滤波器。其实加一个大电容就行。

2, 在这开关电源之后还需要接一个可调稳压电路,如果电流不大(1A以内)可用可调三端集成稳压器LM317,应用电路网上有很多,麻烦你找找吧~你可以看见它调节输出电压要用一个可变电阻。用单片机控制电压输出时,把这个可变电阻换成数字电位计(应用电路网上有很多,麻烦你找找吧~)就好了~

如果电流更大,用线性稳压器会严重发热,只好用单片机和外围元件做DC-DC降压了。如果有不懂的欢迎再问。

本设计的温度测量及加热控制系统以 AT89S52 单片机为核心部件,外加温度采集电

路、键盘及显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传

感器 DS18B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制

的开关器件。本作品既可以对当前温度进行实时显示又可以对温度进行控制,以使达到

用户需要的温度,并使其恒定在这一温度。人性化的行列式键盘设计使设置温度简单快

速,两位整数一位小数的显示方式具有更高的显示精度。建立在模糊控制理论上的控制

算法,使控制精度完全能满足一般社会生产的要求。通过对系统软件和硬件设计的合理

规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降

低了硬件成本,系统 *** 控简便。

实验证明该温控系统能达到 0.2℃的静态误差,0.45℃的控制精度,以及只有 0.83%

的超调量,因而本设计具有很高的可靠性和稳定性。

关键 词: 单片机恒温控制 模糊控制

1

引 言

温度是工业生产中主要的被控参数之一,与之相关的各种温度控制系统广泛应用于

冶金、化工、机械、食品等领域。温度控制是工业生产过程中经常遇到的过程控制,有

些工艺过程对其温度的控制效果直接影响着产品的质量,因而设计一种较为理想的温度

控制系统是非常有价值的。

硬件 系统的设计

1、电路总体原理框图

温度测量及加热系统控制的总体结构如图 1 所示。系统主要包括现场温度采集、实

时温度显示、加热控制参数设置、加热电路控制输出、与报警装置和系统核心 AT89S52

单片机作为微处理器。

图 1:系统总体原理框图

温度采集电路以数字量形式将现场温度传至单片机。单片机结合现场温度与用户设

定的目标温度,按照已经编程固化的模糊控制算法计算出实时控制量。以此控制量控制

固态继电器开通和关断,决定加热电路的工作状态,使水温逐步稳定于用户设定的目标

值。在水温到达设定的目标温度后,由于自然冷却而使其温度下降时,单片机通过采样

回的温度与设置的目标温度比较,作出相应的控制,开启加热器。当用户需要比实时温

度低的温度时,此电路可以利用风扇降温。系统运行过程中的各种状态参量均可由数码

管实时显示。

2、温度采集电路的设计

温度采集电路模块如图 2 示。DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、

温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。其中 DQ 为数字信号输

入/输出端;GND 为电源地;VDD 为外接供电电源输入端。

2

图 2:温度采集电路

DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 位符号扩展

的二进制补码读数形式提供,以 0.0625℃/LSB 形式表达,其中 S 为符号位。

这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进

制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘

于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加 1

再乘于 0.0625 即可得到实际温度。

3、键盘和显示的设计

键盘采用行列式和外部中断相结合的方法,图 3 中各按键的功能定义如下表 1。其

中设置键与单片机的 INT 0 脚相连,S 0 −−S 9 、YES、NO 用四行三列接单片机 P0 口,REST

键为硬件复位键,与 R、C 构成复位电路。模块电路如下图 3:

表 1:按键功能

按键 键名 功能

REST 复位键 使系统复位

RET 设置键 使系统产生中断,进入设置状态

S 0 −−S 9 数字键 设置用户需要的温度

YES 确认键 用户设定目标温度后进行确认

NO 清除键 用户设定温度错误或误按了 YES 键后使用

3

图 3 键盘接口电路

显示采用 3 位共阳 LED 动态显示方式,显示内容有温度值的十位、个位及小数点后

一位。用 P2 口作为段控码输出,并用 74HC244 作驱动。P1.0—P1.2 作为位控码输出,

用 PNP 型三极管做驱动。模块电路如下图 4:

4、加热控制电路的设计

图 4 显示接口电路

用于在闭环控制系统中对被控对象实施控制,被控对象为电热杯,采用对加在电热

杯两端的电压进行通断的方法进行控制,以实现对水加热功率的调整,从而达到对水温

控制的目的。对电炉丝通断的控制采用 SSR-40DA 固态继电器。它的使用非常简单,只

要在控制端 TTL 电平,即可实现对继电器的开关,使用时完全可以用 NPN 型三极管接

成电压跟随器的形式驱动。当单片机的 P1.3 为高点平时,三极管驱动固态继电器工作

接通加热器工作,当单片机的 P1.3 为低电平时固态继电器关断,加热器不工作。控制

电路图如下图 5:

4

图 5 加热控制电路

5、报警及指示灯电路的设计

当用户设定的目标温度达到时需用声音的形式提醒用户,此时蜂鸣器为三声断续的

滴答滴答的叫声。在本系统中我们为用户设计了越限报警,当温度低于用户设置的目标

温度 10 度或高于 10 度时蜂鸣器为连续不断的滴答滴答叫声。当单片机 P1.7 输出高电

平时,三极管导通,蜂鸣器工作发出报警声。P1.7 为低电平时三极管关断,蜂鸣器不

工作。

D1 为电热杯加热指示灯,P1.5 低电平有效;D0 为检测到 DS18B20 的指示,高电平

有效;D10 为降温指示灯,低电平有效。报警及指示灯电路如下图 6 示:

图 6 报警及指示灯电路

5

软 件系统的设计

系统的软件由三大模块组成:主程序模块、功能实现模块和运算控制模块。

1、主程序模块

主程序主要完成加热控制系统各部件的初始化和实现各功能子程序的调用,以及实

际测量中各个功能模块的协调在无外部中断申请时,单片机通过循环对外部温度进行实

时显示。把设置键作为外部中断 0,以便能对数字按键进行相应处理。主程序流程图如

下图 7:

6

图 7 主程序流程图

7

2、功能实现模块

以用来执行对固态继电器及电热杯的控制。功能实现模块主要由中断处理子程序、

温度比较处理子程序、键盘处理子程序、显示子程序、报警子程序等部分组成。键盘显

示及中断程序流程图如下图 8:

3、运算控制模块

图 8 键盘、显示、中断 子程序流程图

该模块由标度转换、模糊控制算法,及其中用到的乘法子程序。

3.1 标度转换

16

式中 A 为二进制的温度值, A0 为 DS18B20 的数字信号线送回来的温度数据。

8

单片机在处理标度转换时是通过把 DS18B20 的信号线送回的 16 位数据右移 4 位得

到二进制的温度值。其小数部分通过查小数表的形式获取。程序流程图如下图 9:

开始

将28H低4位与29H高4位组合成

一个字节

将合成的字节(整数部分)送29H

单元

将29H单元低4位送A

给DPTR赋常数表格2首地址

将查到的数值(即小数部分)送

30H单元

结束

3.2 模糊控制算法子程序

图 9 标度转换子程序流程图

该系统为一温度控制系统,由于无法确切确定电炉的物理模型,因而无法建立其数

学模型和传递函数。加热器为一惯性系统,我们采用模糊控制的方法,通过多次温度测

量模糊计算当用户设定目标温度时需提前关断加热器的温度,利用加热器自身的热惯性

使温度上升到其设定温度。每隔 5 摄氏度我们进行一次温度测量,并当达到其温度时关

断加热器记录下因加热器的热惯性而上升的温度值。从而可以建立热惯性的温度差值

表,在程序中利用查表法,查出相应设定温度对应的关断温度。通过实验数据我们可以

看出,当水温从 0℃加热到 50℃这段温度区域,其温度惯性曲线可近似成线性的直线,

水温从 50℃加热到 100℃这段温度惯性曲线可近似成另一条线性的直线段。通过对设置

的目标温度与温控系统监测温度进行差值处理就可近似的求出单片机的提前关断温度。

程序流程图如图 10:

9

4.源程序见附录[2]

图 10 模糊控制算法子程序流程图

设计 总结

我们的温度控制系统是基于 AT89S52 单片机的设计方案,她能实时显示当前温度,

并能根据用户的要求作出相应的控制。此系统为闭环系统,工作稳定稳定性高,控制精

度高,利用模糊控制算法使超调量大大降低。软件采用模块化结构,提高了通用性。本设

计的目的不仅仅是温度控制本身,主要提供了单片机外围电路及软件包括控制算法设计

的思想,应该说,这种思想比控制系统本身更为重要。

1、设计所达到的性能指标

1.1 温控系统的标度误差

我们将标准温度计和温控系统探头放人同一容器中,选定若干不同的温度点,记

录下标准温度计显示的温度和温控系统显示的温度进行比较。测量数据如下表 2 所示:

表 2 标准温度计测量的温度和温控系统显示的温度

标准温度计和温控系统显示的温度(℃)

标准温度计 16.9 47.7 57.8 63.0 72.8 85.1 90.9

温控系统 16.5 48.0 58.3 62.9 73.0 85.5 90.5

差值比较 -0.4 0.3 0.5 0.1 0.2 0.4 -0.4

标度误差 1.5%

10

1.2 温控系统的静态误差

通过测量在不同的温度点同标准温度的温度差来确定温控系统的静态误差。其测量

数据如下表 3:

表 3 标准温度和温控系统显示的温度

标准温度和温控系统显示的温度(℃)

标准温度 26.0 37.0 46.0 60.0 70.0 83.0

系统显示值 25.7 36.4 46.1 59.6 70.0 83.3

差值 -0.3 -0.6 -0.1 -0.4 0 0.3

静态误差 0.18℃

1.3 温控系统的控制精度

通过设定不同的温度值,使加热器加热,待温度稳定时记录各温度点的温度计数据

和温控系统的显示值。其记录数据如下表 4:

温度计读数和温控系统显示的温度(℃)

设定温度

值 20.0 28.0 35.0 45.0 55.0 75.0 87.0 91.0

系统显示

值 20.5 27.7 34.4 45.1 54.1 74.9 86.1 91.2

差值 0.5 -0.3 -0.6 0.1 -0.9 -0.1 -0.9 0.2

控制精度 0.45℃

超调量 0.83%

2、结果分析论述

我们的系统完全满足设计要求,静态误差方面可以达到 0.18℃的误差,在读数正确

方面与标准温度计的读数误差为 1.5%,对一般的工业生产完全可以采用我们的设计。

该系统具有较小的超调值,超调值大约为 0.83%左右。虽然超调为不利结果,但另

一方面却减小了系统的调节时间。从其数据表可以看出该系统为稳定系统。

3、设计方案评价

3.1 优点

在硬件方面:本设计方案采用了单总线型数字式的温度传感器,提高了温度的采集

精度,节约了单片机的口线资源。方案还使用仅一跟口线就可控制的美国生产的固态继

电器 SSR—40DA 作加热控制器件,使设计简单化,且可靠性强。在控制精度方面,本设

计在不能确定执行机构的数学模型的情况下,大胆的假设小心的求证,利用模糊控制的

算法来提高控制精度。

在软件方面:我们采用模块化编程,思路清晰,使程序简洁、可移植性强。

3.2 缺点

本设计方案虽然采用了当前市场最先进的电子器件,使电路设计简单,但设计方案

造价高。本系统虽然具有较小的超调量,但加大了调节时间。如果需要更高的控制精度,

则我们的模糊控制将不适应,需修改程序。

11

3.3 方案的改进

在不改变加热器容量的情况下,为减小调节时间,可以实行在加热快达到设定温度

时开启风扇来减小热惯性对温度的影响的措施。在控制精度上可采用先进的数字 PID

控制算法,对加热时间进行控制,提高控制精度。

可以改进控制系统使能同 PC 联机通信,以利用 PC 的图形处理功能打印显示温度曲

线。AT89S52 串行口为 TTL 电平,PC 串行口为 RS232 电平,使用一片 MAX232 作为电

平转换驱动。

参考 文献

[1] 李广弟 单片机基础 北京:北京航空航天大学出版社,2001

[2] 王福瑞 单片微机测控系统设计大全 北京:北京航空航天大学出版社,1997

[3] 赵茂泰 智能仪器原理及应用(第 2 版)北京:电子工业出版社,2004

[4] 赖寿涛 微型计算机控制技术 北京:机械工业出版社,2000

[5] 沙占友 模拟与数字万用表检测及应用技术北京:电子工业出版社 1999

12

附 录

附录[1]使用说明书

按 键功能说明

数字键:按 SET 键后,按相应的数字键(0~9)可对温度进行设置,所设置的温

度将实时显示在 LED 显示器上;

SET 键:按 SET 键可对温度的十位、个位以及小数部分进行设置;

YES 键:设置好温度后按 YES 键,系统将据你所设置的温度(须大于当前实际

温度)对水进行加热;

NO 键:若误按了 SET 键,或对输入有误,可按 NO 键进行取消;

RST 键:对系统进行复位。

指示 灯及报警器说明

红 灯:加热状态标志;

绿 灯:温度传感器正常工作标志;

蓝 灯:保温状态标志;

报警器:功能①当水温达到预设值时报警提醒;

功能②当水温达到或超越上、下限时报警提示。

13

附录[2]设计总电路

14

附录[3]程序清单

TEMPER_LEQU 29H 用于 保存读出温度的低 8 位

TEMPER_HEQU 28H 用于 保存读出温度的高 8 位

FLAGEQU 38H 是否 检测到 DS 18B20 标志位

DAYUEQU 44H 设温 >实温

XIYUEQU 45H 设温 <实温

DEYUEQU 46H 设温 =实温

GAOLE EQU 47H 水温 高于最高温度

DILEEQU 48H 水温 低于最低温度

A_bit EQU 79h 数码 管个位数存放内存位置

B_bit EQU 7Ah 数码 管十位数存放内存位置

C_BIT EQU 78H 数码 管小数存放内存位置

ORG 0000H

AJMPSTART

ORG 0003H

AJMPPITO

ORG 0030H

START: CLR P1.7

CLR P1.3

CLR P1.5

SETB P1.6

MOV R4, #00H

MOV SP, #60H 确立堆栈区

MOV PSW, #00H

MOV R0, #20H RAM 区首地址

MOV R7, #60H RAM 区单元个数

ML:MOV @R0, #00H

INC R0

DJNZR7, ML

CLRIT0

MAIN:LCALL GET_TEMPER 调用读温度子程序 进行温度显示,这里我们考

虑用网站提供的两位数码管来显示温度

显示范围 00 到 99 度,显示精度为 1 度

因为 12 位转化时每一位的精度为 0.0625 度,

我们不要求显示小数所以可以抛弃 29H 的低 4

位将 28H 中的低 4 位移入 29H 中的高 4 位,这

样获得一个新字节,这个字节就是实际测量获

得的温度

LCALL DISPLAY 调用数码管显示 子程序

JNB 00H, MAIN

CLR 00H

15

MOV A, 38H

CJNEA, #00H, SS

AJMPMAIN

SS:LCALL GET_TEMPER

LCALL DISPLAY调用 数码管显示子程序

LCALL BIJIAO

LCALL XIAOYU

LCALL JIXIAN

JNB DEYU,LOOP

CLR P1.3 关加热器

SETBP1.6 关 蓝灯

SETBP0.7 关风扇

CLR DEYU

LCALL GET_TEMPER

LCALL DISPLAY

AJMPTT2

LOOP:JNB DAYU ,TT

CLR DAYU

SETBP1.3

SETBP1.6

SETBP0.7

CLR P1.7

LCALL GET_TEMPER

LCALL DISPLAY

AJMPTT2

TT:JNBXIYU,TT2

CLRXIYU

CLRP0.7

CLRP1.6

CLRP1.3

CLRP1.7

LCALL GET_TEMPER

LCALL DISPLAY

TT2:MOV A, 29H

CLR C

CJNEA, 50H, JX

MOV A ,30H

CLR C

CJNEA, 51H, JIA1

AJMPYS2

JIA1:JC JX

MOV A, 51H

MOV 52H, A

ADD A, #2

16

MOV 52H, A

CLR C

MOV A, 30H

CJNEA, 52H,JIA2

JIA2:JNC JX

YS2:SETBP1.7

CLR P1.6

MOV R5,#20H

YS:LCALL GET_TEMPER

LCALL DISPLAY

DJNZR5,YS

CLR P1.7

SETBP1.6

MOV R5,#20H

YS1:LCALL GET_TEMPER

LCALL DISPLAY

DJNZR5,YS1

YS3:SETBP1.7

CLR P1.6

MOV R5,#20H

YS0:LCALLGET_TEMPER

LCALL DISPLAY

DJNZR5,YS0

CLR P1.7

SETBP1.6

MOV R5,#20H

YS01:LCALLGET_TEMPER

LCALL DISPLAY

DJNZR5,YS01

YS4:SETBP1.7

CLR P1.6

MOV R5,#20H

YS02:LCALL GET_TEMPER

LCALL DISPLAY

DJNZR5,YS02

CLR P1.7

SETBP1.6

MOV R5,#20H

YS03:LCALL GET_TEMPER

LCALL DISPLAY

DJNZR5,YS03

JX: MOVA,29H

CJNEA,31H, JX00

JX01:SETBP1.7

17

CLR C

AJMPLAST

JX00:JC JX01

CLR P1.7

CJNEA,

JX02:SETBP1.7

CLR C

AJMPLAST

JX03:JNC JX02

32H,

JX03

CLR P1.7

LAST:LCALL GET_TEMPER

LCALL DISPLAY

AJMPSS

***************************常数表格区**** ******************************************

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8 H,80H 0-8

DB 90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH ,0CH9,A,B,C,D,E,F,灭,p.

TAB1:DB40H,79H,24H,30H,19H,12H,02H,78H,00H ,10H, 0.--9.

TAB2:DB 0, 0, 1, 2, 3, 3, 4, 4, 5, 5, 6, 7, 8, 8, 9, 9, 小数点

*************************1ms 延时程序*************** *********************

************************* ****中断服务程序* *********************************

完成按键识别,键值求取,按键实时显示 等功能

************************* **************** **********************************

PITO:PUSHACC

PUSHPSW

SETBRS0

CLR RS1

SET B00H

MAIN1: MOV R7 , #03H 显示位数为 2 位

MOV R0, #7AH

MOV 78H, #00H

MOV 79H, #00H

MOV 7AH, #00H

KK: LCALL DIR

LCALL KEY1

LOOP1:CJNEA, #11, LOOP2

AJMPLAST0

LOOP2:CJNEA, #12, LOOP3

LJMP LAST3

LOOP3: CJNEA, #10, L4

MOV A, #00H

L4: MOV @R0, A

LCALL DIR

DEC R0

DJNZR7, KK

18

SETB01H

LAST0:JNB 01H, KK

LOOP4:LCALL KEY1

CJNEA, #12,LOOP5

AJMPLAST3

LOOP5:CJNEA, #11,LOOP4

LAST1:LCALL DIR

LCALL MUN

LCALL JD

LCALL BIJIAO

LAST3:POPPSW

POPACC

RETI

******************精度控制 子程序********** ******

JD: PUSHACC

PUSHPSW

CLR C

MOV A, 38H

MOV 50H, A

MOV A, 39H

MOV 51H, A

CJNEA, 29H,L001

L001:JC LAST02设温<实温,则跳出

MOV A, 29H

MOV 41H, A

MOV A, 38H

CJNEA, #25,L002

L003:CLRC 0 <T<25

SUBBA, 41H

CJNEA, #3, L004

L005:MOV A, 30H

ADD A, #5 0<T<25, 差值小于 3 度

DA A

JNB ACC.4, L0051

ANL A, #0FH

SETBC

L0051:MOV39H, A

MOV A, 29H

ADDCA, #1

MOV 38H, A

AJMPLAST2

LAST02: AJMPLAST2

L004:JC L005

MOV A, 39H

19

SUBBA, #0

DA A

MOV 39H, A

JNC L0041

DEC 38H

L0041:MOV A, 38H

SUBB A, #20<T<25, 差值大 于 3 度

MOV38H,A

AJMP LAST2

L002:JC L003

CJNE A, #50,L006

L007:CLRC25<T<5 0

SUBB A, 41H

CJNE A, #3, L008

L009:MOVA, 30H

ADDA, #1

DA A

JNBACC.4, L0091

ANLA, #0FH

SETB C

L0091:MOV39H, A

MOVA, 29H

ADDC A, #1

MOV38H, A

AJMP LAST2

L008:JCL009

MOV A, 39H

SUBB A, #0

MOV 39H, A

MOV A, 38H

SUBB A, #2

MOV 38H,A

AJMP LAST2

L006:JC L007

CJNEA, #65, L010

L011:CLRC

SUBBA, 41H

CJNEA, #3, L012

L013:MOVA, 30H

ADDA, #2

JNBACC.4, L00131

ANLA, #0FH

SETBC

L00131:MOV39H, A

20

MOVA, 29H

ADDCA, #1

MOV38H, A

AJMPLAST2

L012:JC L013

MOVA, 39H

SUBBA, #0

MOV39H, A

MOVA, 38H

SUBBA, #2

MOV38H, A

AJMPLAST2

L010:JC L011

CJNEA, #90, L016

L017:CLRC

SUBBA, 41H

CJNEA, #2, L014

L015:MOVA, 30H

ADDA, #0

JNBACC.4, L00151

ANL A, #0FH

SETB C

L00151:MOV39H, A

MOVA, 29H

ADDCA, #1

MOV38H,A

AJMPLAST2

L014:JCL015

CLRC

MOVA, 38H

SUBBA, #1

MOV38H,A

AJMPLAST2

L016:JC L017

LAST2:POPPSW

POPACC

RET

*******************************键扫描** ************************************

KEY1:LCALL KS1 键 扫描

JNZ LK1

LCALL DIR

AJMPKEY1

LK1:LCALL DIR

LCALL DIR

21

LCALL KS1

JNZ LK2

LCALL DIR

AJMPKEY1

LK2:MOV R2, #0FEH 确定键值

MOV R4, #01H

MOV A, R2

LK4:MOV P0, A

NOP

MOV A, P0

JB ACC.3, LONE

MOV A, #00H

AJMPLKP

LONE:JB ACC.4 , LTWO

MOV A, #03H

AJMPLKP

LTWO:JB ACC.5, LTHR

MOV A, #06H

AJMPLKP

LTHR:JB ACC.6, NEXT5

MOV A, #09H

AJMPLKP

NEXT5:INC R4

MOV A, R2

JNB ACC.2,KND

RL A

MOV R2, A

AJMPLK4

KND:AJMPKEY1

LKP: ADD A, R4

PUSHACC

LK3:LCALL DIR

LCALL KS1

JNZ LK3

POP ACC

RET

KS1:PUSHPSW

MOV P0, #78H

NOP

MOV A, P0 判断有无键按下

CPL A

ANL A, #78H

POP PSW

22

RET

*************求设置温度的二 进制代码,值保存在 38H 单元**************

MUN: PUSH PSW

MOV R0, #7AH 求键值

MOV A, @R0

SWAPA

DEC R0

ADD A, @R0

MOV R1, A

ANL A, #0F0 H

SWAPA

MOV B, #10

MUL AB

MOV R2, A

MOV A, R1

ANL A, #0FH

ADD A, R2

MOV 38H, A

MOV R0, #78H

MOV 39H, @R0

POP PSW

RET

*************比较实际温度和设置温度的大小 并设置相应的标志位***********

BIJIAO:MOV A, 29 H 实际温度

MOV 40H, A

怎样用单片机控制直流电机所转动的角度?

----AVR169单片机是新一代RISC结构微控制器,具有高性能、低功耗、非易失性和CMOS技术等特点,AVR169还具有32个寄存器和丰富的指令集,带有四路8/9/10位PWM功能的16位定时器,8道的10位ADC,16KB可编程Flash,1KBSRAM,可以擦写10000次,接近1MIPS/MHZ的运行速度。

AS5040是Austria microsystems公司推出的世界上最小的10位多输出旋转磁性编码器, 是将现场传感霍尔(Hall)元件、A/D转换、数字信号处理和输出接口集成到单个芯片的系统级芯片(SoC),利用其包含的小磁体,可通过磁体的360度旋转探测1024个绝对位置,即每360度提供10位分辨率的1024 个绝对位置,同时提供了积分A/B、单通道和U-V-W交换等三种不同的增量输出模式,既可根据用户的特定要求设置,也可设置为脉宽调制(PWM)输出信号。PWM 数字输出所需外部元件最少,使用方便简单。本装置采用AS5040旋转编码器PWM_LSB端输出PWM脉冲,计算出电风扇摇头偏离初始位置的角度。控制电风扇摇头速度以及使其角度在一定范围内摇动,其工作原理为:把AS5040传感器装在电风扇摇头的转轴上,就能感应出电扇转过的角度与初始位置的夹角,计算出当前风扇摇头的速度,在下一个采样周期到来时,AS5040旋转编码器测得的速度信号及电机位置反馈信号通过AS5040接口反馈到AVR单片机169...

旋转编码器AS5040接口电路设计

AS5040旋转编码器把圆周分成1024份,当转离初始位置后,PWM_LSB端输出PWM脉冲。在0位置处,对应高电平宽度为1us,位置每加1,PWM高电平脉宽相应增加1us。通过对电机PWM的控制可以控制电机的转动,而AS5040旋转编码器随电机转轴转动,可以根据LSB端口输出脉冲计数得出电风扇摇头的速度变化,通过检测PWM_LSB输出脉冲可以得出此时刻转动的位置。AS5040引脚B_Dir_V可以直接检测出电机的正转和反转(输出1为顺时针,0为逆时针转动)。

3966 驱动接口电路设计

AVR 单片机169 输出的脉宽调制( PWM) 信号需经过功率放大才能驱动电机,调速控制系统采用的是3966 驱动芯片, 双极性工作方式是指在一个PWM 周期内电机电枢两端的电压呈正负变化,系统采用的双极性PWM控制,采用PI控制算法进行速度调节。驱动接口电路如图3 所示。单片机PWM引脚PF7直接接电机的ENABLE端,它控制着电机的转速的大小。

直流电机,大体上可分为四类:

第一类为有几相绕组的步进电机。这些步进电机,外加适当的序列脉冲,可使主轴转动一个精密的角度(通常在1.8°--7.5°之间)。只要施加合适的脉冲序列,电机可以按照人们的预定的速度或方向进行连续的转动。

步进电机用微处理器或专用步进电机驱动集成电路,很容易实现控制。例如常用的SAAl027或SAAl024专用步进电机控制电路。

步进电机广泛用于需要角度转动精确计量的地方。例如:机器人手臂的运动,高级字轮的字符选择,计算机驱动器的磁头控制,打印机的字头控制等,都要用到步进电机。

第二类为永磁式换流器直流电机,它的设计很简单,但使用极为广泛。当外加额定直流电压时,转速几乎相等。这类电机用于录音机、录相机、唱机或激光唱机等固定转速的机器或设备中。也用于变速范围很宽的驱动装置,例如:小型电钻、模型火车、电子玩具等。在这些应用中,它借助于电子控制电路的作用,使电机功能大大加强。

第三类是所谓的伺服电机,伺服电机是自动装置中的执行元件,它的最大特点是可控。在有控制信号时,伺服电机就转动,且转速大小正比于控制电压的大小,除去控制信号电压后,伺服电机就立即停止转动。伺服电机应用甚广,几乎所有的自动控制系统中都需要用到。例如测速电机,它的输出正比于电机的速度;或者齿轮盒驱动电位器机构,它的输出正比于电位器移动的位置.当这类电机与适当的功率控制反馈环配合时,它的速度可以与外部振荡器频率精确锁定,或与外部位移控制旋钮进行锁定。

最后一类为两相低电压交流电机。这类电机通常是直流电源供给一个低频振荡器,然后再用低频低压的交流去驱动电机。这类电机偶尔也用在转盘驱动机构中。

----友情链接


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11332023.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存