直流电机调速系统课程设计报告
- 格式:doc
- 大小:5.51 MB
- 文档页数:14
1 / 14
直流电机调速系统
设计报告
题目:H桥&串口输出
2016年3月
一、 设计任务
设计并制作一套直流电机调速系统,主要包括两部分:主电路部分和以单片机为核心的控制电路部分。要求设计、制作控制电路和主电路,实现如下功能:
(1)通过码盘和光耦得到一系列脉冲,利用M法、T法或M/T法对这些脉冲在单片机中进行处理得到电机的转速,在液晶或数码管上进行显示;
(2)DC/DC电路能够正常工作,通过旋钮或键盘设定转速,并能够通过电力电子电路输出合适的电压,使电机的转速达到设定转速。 2 / 14 (3)实验室提供24V直流电源为DC/DC电路供电,其余部分电源请利用220V市电自行设计。
数码管显示单元DC直流电源DC码盘和光耦驱动与保护电路单片机系统旋钮输入 图1 系统总体框图
二、 硬件电路设计与制作
2.1 显示部分电路设计
使用计数器采集到电机转速后,需要用数码管进行显示。我们组选择串口驱动数码管显示电路,74HC595芯片是一种串入并出的芯片,是8位串行输入/输出或者并行输出移位寄存器,具有高阻、关、断状态。首先使用三极管构成驱动电路,驱动数码管。采用单片机的P0.0-P0.2作为74HC595时钟信号与输入口,使数码管显示相应转速,具体实现电路如图1。
图1 显示电路原理图
2.2 驱动部分电路设计 3 / 14
驱动部分作为电机与单片机控制器的结合部分,是本次设计的主电路,需要完成DC/DC变化的功能。单片机产生PWM波送给驱动芯片IR2110,2110通过驱动电路控制MOSFET开关改变加在直流电机上的电压,从而达到改变转速的目的。单片机产生的PWM1和PWM2波形要相反,控制斩波电路的半桥互补通断。电路设计图如图2所示。
图2 驱动电路原理图
2.3 电源部分设计
电源设计部分共分两个部分,一部分是IR2110的供电电压和所有芯片的供电电压,另一部分是USB口供电电部分,使用电脑供电,两部分电路通过拨码开关进行切换。市电供电电源采用220V交流电变成15V交流电,经整流桥变成直流电,再经7815、7805稳压得到15V和5V直流电,分别给驱动和单片机系统供电。
图3 市电电源设计图
图4 mini-USB供电接口图 4 / 14
2.4 单片机系统设计
本设计采用STC15W4K48S4型号单片机,使用它的计数功能、定时器功能、数码管驱动功能、PWM波输出功能进行设计制作。
图5 单片机管脚功能图
图6 单片机最小系统原理图 5 / 14
图7 单片机管脚使用示意图
2.5 转速反馈设计
此次设计使用单片机的P3.4口作为计数器使用。
图8 A/D采集和转速反馈电路图
2.6 硬件电路焊接图
图9 硬件电路焊接图
三、 软件设计与编程
3.1主要程序流程 6 / 14
图10 主要程序流程图
3.2完整程序
见附录
四、 测试结果
上电后,电机运转正常,调节键盘后后,电机转速随之变化,数码管显示显示转速也随之变化,但是反转时程序中转速调节的P值过大,导致电机转速正负跳变,没有实现闭环控制。
五、 课程设计中遇到的问题及解决方法
问题一 整体硬件电路的设计原理不清楚,对于电路设计没有信心。
解决方法:通过不断查阅资料,焊电路过程中不断修改电路才得到正确的电路。
问题二 IR2110的1和7脚 PWM波不能正常输出,DC/DC电路不输出。
解决方法:后来经过排查电路,发现主要有两个问题,第一个问题是芯片的5脚没有和IRF540的半桥臂连起来 ,另一个问题是24V和5V电源的地没有共起来,把这两个问题解决了,电路可以正常工作。
六、 课程设计感悟
本次课程设计是内容是通过单片机控制驱动电路,改变加在直流电机上的电压,从而达到调节电机转速的目的。 7 / 14 通过此次课程设计,使我更加扎实的掌握了有关直流电机调速方面的知识。在设计过程中遇到了一些问题,比如设计电路不知如何下手,电阻电容的选取只会照搬经典电路,却不会灵活应用,后来经过多次查找资,问题才得到解决。每次的课程设计都使我感觉到:我知识掌握的不够扎实,学会的知识不会应用,思想上总是存在侥幸心理,对一个电路不加验证就想着可以应用。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵,以后要多多联系吧,毕竟这样的机会是少之又少。
我认为,这次课程设计不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力
此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识。
七、 附录
附录1
7.1重要芯片资料
1. 74HC595芯片
74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。数据在SCHcp的上升沿输入,在STcp的上升沿进入到存储寄存器中去。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
图1 74HC595引脚图
管脚编号 管脚名 管脚定义功能
1、2、3、4、5、6、7、15 QA—QH 三态输出管脚
8 GND 电源地
9 SQH 串行数据输出管脚
10 SCLR 移位寄存器清零端 8 / 14 11
SCK 数据输入时钟线
12 RCK 输出存储器锁存时钟线
13 OE 输出使能
14 SI 数据线
15 VCC 电源端
图2 74HC595管脚功能图
2. IR2110芯片
IR2110采用HVIC和闩锁抗干扰CMOS制造工艺,DIP14脚封装。具有独立的低端和高端输入通道;悬浮电源采用自举电路,其高端工作电压可达500V,dv/dt=+50V/ns,15V下静态功耗仅116mv;输出的电源端电压范围10-20V;逻辑电源电压范围5-15V,可方便的与TTL、CMOS电平相匹配,而且逻辑电源地和功率之间允许有+5V的偏移量;工作频率高,可达500KHz;开通、关断延时小,分别为120ns和94ns;图腾柱输出峰值电流为2A。
图3 IR2110直插式管脚图
附录二
7.2 程序
7.2.1主程序
#include "config.h"
#include "Exti.h"
#include "timer.h"
#include "delay.h"
#include "GPIO.h"
#include "PWM.h"
/************* 功能说明 **************
******************************************/
/************* 本地常量声明 **************/
//u8 code t_display[]={ //标准字库
//// 0 1 2 3 4 5 6 7 8 9 A B C D E F
// 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; 9 / 14
u8 code t_display[]={ //标准字库
// 0 1 2 3 4 5 6 7 8 9 A B C D E F
0xD7,0x14,0xCD,0x5D,0x1E,0x5B,0xDB,0x15,0xDF,0x5F}; //0. 1. 2. 3. 4. 5. 6. 7. 8. 9. -1
unsigned char code T_COM[]={0x80,0x40,0x20,0x10}; //位码
//=====================================================================
// 端口声明
//=====================================================================
//595的三个开关
sbit P_HC595_SER = P0^0; //pin 14 SER data input
sbit P_HC595_RCLK = P0^1; //pin 12 RCLk store (latch) clock
sbit P_HC595_SRCLK = P0^2; //pin 11 SRCLK Shift data clock
//转速测量的中断输入口 INT0 P3.2
//pwm 1路 分别为p2.5
//调节按钮,一路加,一路减
sbit add_zhuansu = P0^3; //接的是第二个按钮,正常为高电平
sbit sub_zhuansu = P0^4;
//=====================================================================
//extern bit B_Timer0_1ms; //中断是否结束,,如果时间到了则为1
u8 LED8[4]; //显示的数据 数码管要显示的数据,1300,,,1, 3, 0, 0
u8 display_index; //显示位索引 4 3 2 2
/************* 本地变量声明 **************/
long int zhuansu=0; //测量到的转速
long int set_zhuansu=3600; //设定的转速
u8 dir=1; //为正转
u16 pwm0,pwm1,pwm2;
/************* 外部函数和变量声明 *****************/
extern u32 Pulse;
extern u8 PulseTimeOut;
/******************* 外中断配置函数 *******************************/
void EXTI_config(void)
{
EXTI_InitTypeDef EXTI_InitStructure; //结构定义