您好,欢迎来到微智科技网。
搜索
您的当前位置:首页单片机实现直流电机测速和正反转

单片机实现直流电机测速和正反转

来源:微智科技网
西南科技大学 自动化专业方向设计报告

设计名称: 直流电机数控器设计与制作 姓 名:汪少华

学 号: 20105191 班 级: 电气1002 指导教师: 聂诗良 起止日期: 2013.10.19-2013.11.9

西南科技大学信息工程学院制

方向设计任务书

学生班级:电气1002班学生姓名:汪少华学号: 20105191 设计名称:直流电机数控器设计与制作

起止日期: 2013.10.19--2013.11.9 指导教师:聂诗良

设计要求:要求采用单片机、LM298等器件设计制作一个可进行直流电机正反转和加减调速控制的电路板,电机实际转速可在LED或LCD上显示。

方向设计学生日志

时间 设计内容 10.19至10.22 查阅,积累相关课题资料;了解单片机运行方式;了解LM298引脚功能 10.23至10.24 根据资料罗列课题方案,论证方案可行性,决定方案 10.25至10.26 利用Altiumdesigner软件绘制课题原理图 10.27至10.28 利用Altiumdesigner软件绘制课题PCB版图 10.29至10.30 编写单片机程序并购买所需材料 10.31至11.3 11.4至11.5 11.6至11.8 11.9 根据PCB版图及其原理图完成电路板制作 单片机程序测试,电路板模块测试 设计报告的编写 答辩 直流电机数控器设计与制作

摘要

STCC52RC是一个典型的,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,可通过串口下载的单片机。Lm298是ST公司生产的一种高电压、大电流电机驱动芯片。本文设计了基于Lm298芯片的直流电机驱动,用TCRT5000光电管进行转速测量的硬件电路,用LCD显示电机转速。并采用STCC52RC单片机作为控制芯片,进行直流电机正反转和加减调速控制的直流电机数控器。本文设计的电路中主要包含4个模块:测速模块(光电传感器测量电机的转速)、电源模块(LM7805集成稳压芯片)、显示模块(LCD液晶显示)和控制模块(利用PWM控制电机转速以及LM298控制正反转)。

关键词

单片机 直流电机 光电管测速

DC motor design and production of CNC

Summary

STCC52RC is a typical, built 4KB EEPROM, MAX810 reset circuit, three 16-bit timer / counter, can be downloaded via the serial port of SCM. Lm298 is ST produces a high voltage, high current motor driver chip. This article is designed based on Lm298 chip DC motor drives, optical tube with TCRT5000 speed measurement hardware circuit, the motor speed with the LCD display. And using STCC52RC chip microcontroller as control for DC motor reversing and subtraction NC DC motor speed control device. This design of the circuit mainly includes four modules: speed module (photoelectric sensor to measure the motor speed), power supply module (M7805 integrated voltage regulator chips), displays (LCD liquid crystal display) and a control module (with PWM control motor speed, and LM298 positive control inversion).

Categories

DC motor microcontroller Photoelectric tachometer

一、 设计目的和意义

随着现代科技的不断发展,现在的电子产品越来越多,在早期,电子产品一般是纯硬件电路,没有使用单片机,电路复杂难以设计,也难以检查问题,随着微控制技术的不断完善和发展,集成芯片越来越多,单片机便出来了,换言之,单片机的应用是对传统控制技术的一场。具有划时代的意义。在电机控制方面也是靠人的感觉,没有侧速和侧距的概念,以前人机界面一般采用LED数码二极管,随着LCD液晶显示器的出现,人机界面更加人性化、智能化,它能显示数字、汉字和图象,控制LCD液晶显示器也很方便,电路设计也比较简单;加上单片机,组合实现的功能也比较强大,还可方便以后电路的升级与扩展。本设计结合LCD显示、电机控速、光电管测速等多种技术,实现了基于单片机的电机转速测量控制系统的设计,以达到对直流电机负载(与电机连结的运行装置)运行状况控制的目的。

二、控制要求

采用单片机、LM298等器件设计制作一个可进行直流电机正反转和加减调速控制的电路板,电机实际转速可在LED或LCD上显示。

三、设计方案论证

测速模块

①模拟测速:即利用测速电机作为发电机,通过检测反电势E的大小和极性即可得到转速N和电机转向;采用这种方法直接可以得到转速N和输出电压的特性曲线,直观,但也有很多不足,比如在高速和低速情况下实际输出偏离理想特性。

②数字检测技术:即通过分析数字信号产生的一系列脉冲间接获取电机转速。这种方法不会受高低速的,通过比较所以选择数字检测技术。

③采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。计

算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。 电源模块

①使用电压源供电,可提供较稳定,精确电源,缺点是电压源体积太大,不利于设计的小体积要求。

②使用220V转±15V,再使用集成稳压芯片LM7805将电压稳定至所需,缺点是散热不易,需加装散热片,体积小。 显示模块

①采用数码管动态显示,但显示的内容有限,不丰富。 ②采用LED点阵显示,但需要的I/O资源较多。 ③ 采用LCD液晶显示,显示内容最丰富,只通过串口通信与单片机连接。

调速模块

采用集成芯片Lm298及其外部辅助电路和电机构成驱动电路,利用LM298的功能引脚控制电路正反转。通过单片机的接口,利用PWM控制电机的转速及其加减速。

最终方案:采用光电传感器测量电机的转速,使用集成稳压芯LM7805将电压稳定至所需,LCD液晶显示,利用PWM控制电机转速并利用LM298控制正反转。

四、系统设计

4.1控制系统原理框图

系统原理框图如图1所示。总系统主要包括:LCD显示、键盘输入、测速模块、PWM调速模块和电机驱动模块5个部分。

图1

4.2系统硬件设计

4.2.1系统硬件原理图及工作原理说明

硬件由电源部分、单片机最小系统、液晶显示、按键、电源指系统硬件原理图见附件原理图。

示、光电对管及PWM调速电机等模块构成。

4.2.2单元电路设计原理。

(1)电源模块设计

使用220V转±15V,再使用集成稳压芯片LM7805将电压稳定至所需。 电源原理图见图2

图2

(2)单片机核心控制模块

系统采用单片机STCC52RD为中心控制器件,显示部分采用液晶显示屏显示。控制系统采用5V电源供电,外接11.0592MHz晶振。

单片机核心控制模块主要实验一下功能:1、控制电机的运行;2、控制测速模块测量电机的速度;3、控制液晶显示器显示电机的设定转速及当前转速。单片机电路设计原理图如图3.

图3

(3)PWM调速及正反转模块

本设计采用集成芯片Lm298及其外部辅助电路和电机构成驱动电路。 Lm298是 SGS 公司的产品, 其内部包含 4 通道逻辑驱动电路, 即内含二个H 桥的高电压大电流双全桥式驱动器, 接收标准TTL 逻辑电平信号, 可驱动 46V、2A以下的电机。由 Lm298构成的通过单片机的接口,利用PWM控制电机的转速及其加减速。通过按键P2.4、P2.5分别控制电机的加速减速。电路原理图如图4。

图4

(4 )测速模块

采用光电传感器测量电机的转速,在设计中,在电机转轴末梢上安装纸卡,在纸卡上留出两个孔。电机转轴每转一圈,发射二极管发出的光便通过纸卡的孔到达接受二极管,就可在接受二极管上产生相应的脉冲信号。计算下1s内输出的脉冲信号的个数,把计数的结果取一半,就可得到电动机的转动速度。为提高精度,将输出信号经LM324整流后送入单片机T1口。测速原理图如图6,实物如图5。

图5 图6 (5)显示模块 采用LCD液晶显示,显示内容最丰富,只通过数据线与单片机连接,采用了串口通信的原理。显示原理图如图7,实物图如图8。

图7

图8

4.2.3硬件PCB图

图9

4.3软件各功能的流程图

4.3.1定时计数模块

T0计数开始 是否有脉冲信号 是 T1计数+1 否 计时是否结束 是 输出T1值 否

4.3.2PWM调速模块

4.4主程序及注解

#include #include #include \"1602.h\"

sbitKEY_CTRl=P2^7; sbit KEY_UP=P2^6; sbit KEY_DOWN=P2^5; sbit KEY_REVERSE=p2^4;

sbit IN1=P1^0; sbit IN2=P1^1; sbit IN3=P1^2; sbit IN4=P1^3; sbit ENA=P1^4; sbit ENB=P1^5;

unsigned char temp[16];

unsigned char SwitchZT,LEVEL,SPEED,REVERSE,ENA,SPEED_COUNT;

/*--------------------------------------- 系统延时

---------------------------------------*/ void Delay(unsigned int z) {

unsignedintx,y; for(x=0;x所有东西初始化

---------------------------------------*/ voidEVE_Init(void) {

LEVEL=50; REVERSE=0; ENA=1;

SPEED_COUNT=0; TMOD =0X11;

TH0 = (65536-10000) /256; TL0 = (65536-10000) %256; TH1 = (65536-50000) /256; TL1 = (65536-50000) %256; EA = 1; IT0=1; EX0=1; ET0 = 1; TR0 = 1; ET1 = 1;

TR1 = 1; }

/*--------------------------------------- 显示

---------------------------------------*/ void Show(void) {

sprintf(temp,\"LEVEL:%3d\LCD_Write_String(0,0,temp);

sprintf(temp,\"SPEED:%3d\LCD_Write_String(0,1,temp); if(REVERSE==1) {

sprintf(temp,\"REV\

LCD_Write_String(12,0,temp); } if(ENA==0) {

sprintf(temp,\"STO\LCD_Write_String(12,1,temp); } }

/*--------------------------------------- 按键扫描

---------------------------------------*/ voidKey_Scan(void) {

KEY_UP=1; KEY_DOWN=1; KEY_CTRL=1; KEY_REVERSE=1;

if(KEY_UP==0) { Delay(1); if(KEY_UP==0) { if(LEVEL>=0&&LEVEL<100) LEVEL++; while(KEY_UP==0) {Show();} } }

if(KEY_DOWN==0) { Delay(1); if(KEY_DOWN==0) { if(LEVEL>0&&LEVEL<=100) LEVEL--; while(KEY_DOWN==0) {Show();} } }

if(KEY_CTRL==0) { Delay(1); if(KEY_CTRL==0) { ENA=~ENA; while(KEY_CTRL==0) {Show();} } }

if(KEY_REVERSE==0)

{ Delay(1); if(KEY_REVERSE==0) { REVERSE=~REVERSE; while(KEY_REVERSE==0) {Show();} } } }

/*--------------------------------------- 计算速度

---------------------------------------*/ void COUNT_SPEED() interrupt 0 {

SPEED_COUNT++; }

void CHECK_SPEED() interrupt 3 {

static unsigned char s_count=0; TH1 = (65536-50000) /256; TL1 = (65536-50000) %256; s_count++;

if(speed_count>=20) { s_count=0;

SPEED=SPEED_COUNT; SPEED_COUNT=0; } }

/*--------------------------------------- PWM速度调制

---------------------------------------*/ void PWM() interrupt 1 {

static unsigned char PWM_switch=0,PWM_COUNT; switch(PWM_switch) { case 0: {

if(LEVEL==100) {PWM_switch=2;}

else if(LEVEL==0) {PWM_switch=3;} else

{PWM_COUNT=LEVEL; IN1=REVERSE&1; IN2=(~REVERSE)&1; PWM_switch=1;} } break; case 1: { PWM_COUNT--; if(PWM_COUNT==0) {

IN1=0; IN2=0; PWM_switch=0;

} } break; case 2: { IN1=REVERSE&1; IN2=(~REVERSE)&1; if(LEVEL!=100) {PWM_switch=0;} } break; case 3: { IN1=0; IN2=0; if(LEVEL!=0) {PWM_switch=0;} } break; }

TH0 = (65536-10000) /256; TL0 = (65536-10000) %256; }

/*--------------------------------------- 状态机

---------------------------------------*/

voidMain_Fun(void) {

static unsigned char SwitchZT=0; switch(SwitchZT) { case 0: { DATA=CHECK_SPPED(); SwitchZT=1; } break; case 1: { Show(); SwitchZT=0; } break; } }

void main() {

EVE_Init(); LCD_Init();

while(1) {

Main_Fun(); Key_Scan(); } }

五、设计结果及分析

5.1调试过程

本作品的主要由PWM调速电机模块、电源模块、显示模块、测速模块

以及单片机核心控制模块同组成,安装调试的过程遵循由简到繁、由易到难的原则进行。

(1) 单片机核心控制模块的应用于调试,将一些外部器件,例如液晶模块

安装到实验板上,并检测是否可用。

(2) 将电源电压值调到+5V,检查电路是否工作。各个器件的电压值和是

否正常。

(3) 将PWM调速电机安装到实验板上,接通电源,检查电机是否工作。

若不能工作则继续调试,若能正常工作则记录数据。

5.2调试数据

数据分析见表1: 速度 速度0 慢 快 设定值 0 20 60 次数1 0 21 60 次数2 0 22 59 次数3 0 19 60 次数4 0 20 60 次数5 0 21 59 平均值 0 20.6 59.6 误差 0 3% -0.7% 表1

结束语

本系统用单片机STCC52RD作为直流电机调速系统的控制核心,利用红外传感器直流电机的转速,控制直流电机的转动速度,用PWM调速方式控制直流电机转动的速度,以及正反转动,并可以自动调节速度至预先设定的速度。整个系统的电路逻辑结构简单,可靠性能高,实现功能强。

参考文献

(1)李朝青.单片机原理及接口技术[M].北京:北京航空航天大学出版社,2006.

(2)茹占军、谢家兴.基于ATS52单片机直流电机调速系统的设计.软件导刊,2010年8月

(3)孙绪才.L298N 在直流电机PWM 调速系统中的应用.潍坊学院学报,2009年7月

附录

系统硬件原理图

PCB版图

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务