基于单片机的直流调速系统.docx

上传人:b****5 文档编号:2840138 上传时间:2022-11-15 格式:DOCX 页数:12 大小:176.47KB
下载 相关 举报
基于单片机的直流调速系统.docx_第1页
第1页 / 共12页
基于单片机的直流调速系统.docx_第2页
第2页 / 共12页
基于单片机的直流调速系统.docx_第3页
第3页 / 共12页
基于单片机的直流调速系统.docx_第4页
第4页 / 共12页
基于单片机的直流调速系统.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于单片机的直流调速系统.docx

《基于单片机的直流调速系统.docx》由会员分享,可在线阅读,更多相关《基于单片机的直流调速系统.docx(12页珍藏版)》请在冰豆网上搜索。

基于单片机的直流调速系统.docx

基于单片机的直流调速系统

基于单片机的直流电机调速系统的设计

1、直流调速系统的总体设计思路

本设计是利用一块单片机,实现对一部直流电机的启动、停止、加速、减速和转向的控制,具体硬件部分由晶振电路、复位电路、显示电路、键盘电路、电源电路、单片机、电机驱动电路、测速电路和电源电路等组成,系统框图由图1所示。

图1直流调速系统框图

 

系统电路图如图2所示

图2直流调速系统硬件原理图

 

1、主控制模块的设计与实现

本设计选用AT89S52单片机作为主控制模块。

AT89S52单片机是一种低功耗、高性能CMOS8位微控制器,具有8K可编程Flash存储器,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,3个16位定时器/计数器,全双工串行口。

AT89S52单片机作为主控芯片,在该设计中主要实现以下几个功能:

1)接收键盘输入的控制信号;

2)驱动发光二极管显示电机工作状态;

3)驱动八段数码管显示电机速度;

4)通过使能端控制电机启动、正转或反转;

5)产生PWM脉冲,对电机进行调速;

6)接收脉冲测速电路测得的电机转速;

主电路控制模块的硬件电路包含复位电路,时钟电路和电源三部分,共同组成单片机的最小系统,满足单片机正常工作,具体硬件电路如图3所示。

图3AT89S52最小系统

复位电路是促使单片机进入复位状态的硬件结构,复位操作可以完成单片机的初始化,也可消除单片机的死机状态。

复位原理是在时钟电路开始工作后,在单片机RST引脚施加24个时钟振荡脉冲(即两个机器周期)以上的高电平,单片机便可实现复位。

在本设计中采用手动加上电复位电路,上电复位部分的原理是RC电路的充放电效应,放电时间为:

,由于本设计选用的晶振频率为12MHz,机器周期为

放电时间远大于2个机器周期的时间,可以实现正常复位。

本设计中单片机工作于内部时钟模式,在XTAL1引脚和XTAL2引脚连接一个晶体振荡器,并联两个电容后接地构成单片机的时钟电路。

由于AT89S52单片机P0口作为I/O口时,内部无上拉电阻,因此在使用时需上拉电阻(5k~10k左右)才能正常工作。

主控制器引脚分配表,表1:

I/0口

引脚号

对应元件

功能

输入/输出

P0.0~P0.7

39~32

DS1~DS4

八段数码管段选

输出(上拉电阻)

P1.0

1

DS1

八段数码管位选

输出

P1.1

2

DS2

八段数码管位选

输出

P1.2

3

DS3

八段数码管位选

输出

P1.3

4

DS4

八段数码管位选

输出

P1.4

5

S1

正转按键

输入

P1.5

6

S2

反转按键

输入

P1.6

7

S3

加速按键

输入

P1.7

8

S4

减速按键

输入

P2.0

21

S5

停止按键

输入

P2.1

22

D1

启动指示

输出

P2.2

23

D2

左转指示

输出

P2.3

24

D3

右转指示

输出

P2.4

25

ADC0832

片选信号

输出

P2.5

26

ADC0832

时钟信号

输出

P2.6

27

L298

正转信号

输出

P2.7

28

L298

反转信号

输出

P3.0

10

L298

使能信号

输出

P3.2

12

ADC0832

测速脉冲

输入(中断)

RST

9

复位电路

复位信号

输入

XTAL1

19

晶振电路

时钟信号

输入

XTAL2

18

晶振电路

时钟信号

输出

VCC

40

电源

+5V

输入

GND

20

PWM调制(脉冲宽度调制是)一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

本设计采用单片机内定时器产生PWM脉冲,设计方法是调整一个周期内高电平持续时间占一个周期时间的比例,即调整脉冲的占空比。

将产生的脉冲输入到L298的ENA端,通过控制H桥一路桥臂两个晶闸管的导通时间来控制电机的转速。

图4所示的是几种占空比不同的PWM脉冲波形。

图4几种占空比不同的PWM脉冲波形

2、转速检测模块的设计与实现

转速检测模块采用光电编码器作为检测器件。

测速原理为:

在电机转动轴上安装带有感光孔的编码盘,然采用红外对管的传感器来记录脉冲的数目,进而通过脉冲数求得电机在一段时间内转的圈数,从而计算出电机的转速。

设码盘上有1个感光孔,电机转动时间T(单位s)内计数器记得的脉冲数为N,那么电机此时的转速为:

(rad/s)。

由于光电编码器输出的信号为模拟信号,故在传感模块与单片机间加入A/D转换模块ADC0832,将转换过的数字信号检测到的转速信号发送到单片机中。

测速模块具体硬件电路如图5所示。

图5转速检测模块

ASC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。

该芯片具有双通道A/D转换,输入输出电平与TTL/CMOS相兼容,5V电源供电,工作频率为250KHZ,转换时间为

低功耗仅为15mW。

芯片接口说明如表2所示:

接口

引脚号

功能

/CS

1

片选使能,低电平有效

CH0

2

模拟输入通道0

CH1

3

模拟输入通道1

GND

4

DI

5

数字信号输入

DO

6

数字信号输出

CLK

7

芯片时钟输入

VCC(Vref)

8

电源及参考电源输入

3、直流电机驱动模块的设计与实现

本设计中直流电机驱动部分采用专用电机驱动芯片L298对电机进行驱动。

L298为SGS-THOMSONMicroelectronics出产的全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含两个高电压、大电流全双H桥驱动器,接收标准TTL逻辑准位信号。

L298管脚功能说明表3所示:

管脚

引脚号

功能

IN1

5

1A1输入端,TTL电平

IN2

7

1A2输入端,TTL电平

ENA

6

1EN使能端,低电平禁止输出

SENSEA

1

电流检测端

OUT1

2

1Y1输出端

OUT2

3

1Y2输出端

VSS

9

逻辑电源电压,此引脚与地之间必须连接100uF电容器

VS

4

功率电源电压,此引脚与地之间必须连接100uF电容器

GND

8

GND地

L298对直流电机控制逻辑真值表,表4:

输入

功能

ENA=H

IN1=H;IN2=L

正转

IN1=L;IN2=H

反转

IN1=IN2

制动

ENA=L

IN1=※;INT2=※

无输出,电机不工作

直流电机驱动模块的硬件实现如图6所示:

图6电机驱动模块

H桥驱动电路原理:

如图7所示,H桥驱动电路是一种典型的直流电机控制电路。

H桥驱动电路由4个三极管组成H桥条桥臂,通过控制对角桥臂上的一组三极管,使电流以不同的方向流过电机,从而控制电机的转向。

图7H桥驱动电路

4、显示模块

本设计中显示模块采用四个八段数码管显示电机转速,八段数码管采用共阴极方式连接,当单片机输出高电平时,点亮数码管。

一般点亮数码管内部发光二极管时需要5mA以上电流,但是单片机的I/O口送不出如此大的电流,所以数码管与单片机连接时需要加驱动电路,可采用上拉电阻的方式或专用驱动芯片(比如74HC573锁存器)对数码管进行驱动。

本设计中采用上拉电阻的方式对数码管进行驱动。

如图8所示:

图8显示模块

5、按键模块

本设计的键盘模块由5个弹性按键,采用低电平输入方式进行信号的输入,其中加入5个1k的限流电阻保证单片机的I/O口的输入电路不会太大。

如图9所示:

图9按键模块

6、电源模块

单片机系统需要一个稳定的工作电压才能正常工作,设计者习惯采用线性稳压器件(如78xx系列三端稳压器件)制作电源电路。

本设计采用LM2576作为电压调节和稳压器件,将较高的直流电转变成单片机所需的工作电压。

如图10所示:

图10电源模块

6、调速系统的软件设计

实际的应用程序一般都有一个主程序(包括若干功能模块),若干个子程序(每个中断程序一般作为一个功能模块,也可以包括多个功能模块),以及若干个子程序,共计三大部分构成。

该软件部分主要完成电机的控制和速度调节。

(1)软件实现流程如图11所示:

图11单闭环直流调速系统软件主流程图

 

(2)部分主要代码

1.单片机引脚宏定义

#include

#ifndefneMotor_H_

#defineMotor_H_

/*******************速度显示控制*******************/

unsignedcharcodetabel[]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71

}//八段数码管显示数表

sbitLED0=P1^0;

sbitLED1=P1^1;

sbitLED2=P1^2;

sbitLED3=P1^3;

/*********************A/D模块*********************/

sbitCS=P2^4;

sbitCLK=P2^5;

sbitDO=P3^2;

/*****************定义PWM速度控制***************/

sbitpwm=P3^0;

/*****************电机工作状态控制*****************/

sbitIN1=P2^6;

sbitIN2=P2^7;

/********************定义按键引脚********************/

sbitZZ_KEY=P1^4;//正转

sbitFZ_KEY=P1^5;//反转

sbitADD_KEY=P1^6;

sbitSUB_KEY=P1^7;

sbitSTOP_KEY=P2^0;

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

当前位置:首页 > 求职职场 > 自我管理与提升

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

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