单片机课程设计温度控制直流电动机转速.docx
《单片机课程设计温度控制直流电动机转速.docx》由会员分享,可在线阅读,更多相关《单片机课程设计温度控制直流电动机转速.docx(17页珍藏版)》请在冰豆网上搜索。
单片机课程设计温度控制直流电动机转速
温
度
控
制
电
机
转
速
学院:
机电学院
班级:
机电111
学号:
201100384110
姓名:
刘爱华
1引言
直流电动机具有良好的起动、制动性能,宜于在大范围内平滑调速,在许多需要调速或快速正反向的电力拖动领域中得到了广泛的应用。
从控制的角度来看,直流调速还是交流拖动系统的基础。
早期直流电动机的控制均以模拟电路为基础,采用运算放大器、非线性集成电路以及少量的数字电路组成,控制系统的硬件部分非常复杂,功能单一,而且系统非常不灵活、调试困难,阻碍了直流电动机控制技术的发展和应用范围的推广。
随着单片机技术的不断进步,使得许多控制功能及算法可以采用软件技术来完成,为直流电动机的控制提供了更大的灵活性,并使系统能达到更高的稳定性能。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率。
2设计任务与要求
2.1设计任务
温度控制直流电动机转速
2.2设计要求
(1)、使用AT89C51单片机为核心,使用4位集成式数码管显示当前温度,温度传感器使用DS18B20,使用L298驱动直流电动机。
(2)、用4位集成式数码管显示当前温度,当温度在
时,直流电动机在L298驱动下加速正转,温度在
全速正转;当温度
时,直流电动机加速反转,温度
时,直流电动机全速反转;温度
之间时,直流电动机停止转动。
(3)、控制程序在Keil软件中编写,编译,整个控制电路在Proteus仿真软件中连接调示。
3本课程设计的意义
直流电动机作为一种高效率速度控制电动机引人注目、但市场的知名度还小高。
许多用户在设备用电动机的选择上经常出现不合理的现象。
比如为了实现设备的功能、当变频器控制的异步电动机满足不了要求时就盲目的选用昂贵的伺服电动机、其中有些情况完全可以用价格较低的直流电动机来实现。
采用单片机构成控制系统,可以节约人力资源和降低系统成本,从而有效的提高工作效率,可以实现复杂的控制,控制灵活性和适应性好,无零点漂移,控制精密高,可提供人机界面,多机联网工作。
采用智能功率电路驱动比传统的分立功率器件组成的驱动体积小,功能强;减少了电路元器件数量,提高了系统的可靠性;控制电路哈尔功率电路集成在一起,使监控更容易实现;集成化使电路的连线减少,减少了布线电容和电感以及信号传输的延时,增加了系统抗干扰的能力;集成化使系统成本大大降低。
4应用软件介绍
4.1Proteus仿真软件
Proteus是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。
该软件的特点:
(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。
(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
③目前支持的单片机类型有:
68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。
④支持大量的存储器和外围芯片。
总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真51、AVR、PIC。
4.2Keil软件
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
5keil软件编写
5.1BS18B20温度采集
5.1.1温度采集初始化
voiddsreset(void)
{
uinti;
DS=1;
i++;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
DS=1;
}
5.1.2写命令控制温度传感器
voidtmpwritebyte(uchardat)
{
uinti;
ucharj;
bittestb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)//write1
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{
DS=0;
i=8;while(i>0)i--;//write0
DS=1;
i++;i++;
}
}
}
5.1.3读数据赋值给dat
bittmpreadbit(void)
{
uinti;
bitdat;
DS=1;
DS=0;i++;i++;
DS=1;i++;
dat=DS;
i=8;while(i>0)i--;
return(dat);
}
uchartmpread(void)
{
uchari,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
dat=(j<<7)|(dat>>1);
}
return(dat);
}
5.1.4数据处理即判断温度正负
uinttmp()
{
floattt;
uchara,b,b1;
dsreset();
delay
(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
b1=b;
temp<<=8;
temp=temp|a;
if(b1<8)
{
flag+=1;
tt=temp*0.0625;
temp=tt*10+0.5;
dis_buf[0]=0;
}
else
{
flag-=1;
temp=~temp;
temp=temp+1;
tt=temp*0.0625;
temp=tt*10+0.5;
dis_buf[0]=0x40;
}
returntemp;
}
5.2数码管显示采集的温度
5.2.1将采集后转化的温度对数组赋值
voiddisplay(uinttemp)
{
ucharA1,A2,A3;
A1=temp/100;
A2=temp%100/10;
A3=temp%10;
t=A1*10+A2;
dis_buf[3]=table[A3];
dis_buf[2]=table1[A2];
dis_buf[1]=table[A1];
}
5.2.2用定时器T1调用温度采集函数进行温度采集
voidtimer1()interrupt3
{
TH1=(65536-20000)/256;
TL1=(65536-20000)%256;
tmpchange();
display(tmp());
}
5.2.3用定时器T0将处理后的温度用数码管显示
voidtimer0()interrupt1
{
TH0=(65536-500)/256;
TL0=(65536-500)%256;
P2=0xff;
P0=dis_buf[dis_index];
P2=dis_digit;
dis_digit=_crol_(dis_digit,1);
dis_index++;
dis_index&=0x07;
}
5.3判断电机旋转情况
if(flag==1)
{
flag=0;
if(t>=75)
Turn_z();
else
if(t>=45)
Turn_zj();
else
if(t>10)
Turn_t();
else
Turn_fj();
}
else
if(flag==-1)
{
flag=0;
Turn_f();
}
6Proteus仿真
6.1Proteus中各元件的元件图
6.1.1AT89C51截图
6.1.2L298截图
6.1.3DS18B20截图
6.1.4直流电动机截图
6.1.5晶体管截图
6.2芯片功能控制
6.2.1Lm298芯片
ENA为IN1、IN2的控制使能端,本次设计用OUT1、OUT2作为输出控制直流电机转动。
由于正反转换相时会产生饭香电压为保护LM298用图中二极管来起到保护作用。
IN1
IN2
ENA
电机状态
X
X
0
停止
1
0
1
正转
0
1
1
反转
6.2.2DS18B20时序图即简介
VCC接+5V、GND接地。
DQ为总线接单片机P1.6口
DS18B20初始化
DS18B20写入
DS18B20读出
6.3Proteus仿真电路
仿真图(未运行状态)
温度大于75
温度大于45小于75
温度大于10小于45
7结论
通过该课程设计,我掌握了编译程序的原理以及步骤,还有编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,构造工具及其相关的技术。
课本上的知识是机械的,抽象的。
在本次课程设计,我有很大的收获,这不仅仅是理论知识上的完善,而且实践能力和动手能力有了质的飞跃!
设计中,我自感知识的缺陷,不断的上网查阅资料,翻阅各类相关书籍,自己动手,自己设计,让我的思维逻辑更加清晰。
在操作中,靠这次设计我基本掌握了单片机编程,将理论变为实际开了一个好头。
在这次课程设计过程中,我发现了自己综合应用能力的欠缺。
以后,我会更加重视用软件编程,应用单片机处理好更多的电路。
参考文献
[1]辜承林,陈乔夫.电机学.华中科技大学出版社.2010
[2]徐玮.C51单片机高效入门.机械工业出版社.2007
[3]吴金戌.沈庆阳,等.8051单片机实践与应用[M].清华大学出版社
[4]苏家健.曹柏荣,等.单片机原理及应用技术[M].高等教育出版社
[5]肖兰.马爱芳.电机与拖动[M].中国水利水电出版社
[6]胡汉才.单片机原理及其接口技术[M]。
北京:
清华大学出版社
[7]孙虎章.自动控制系统[M]。
北京:
中央广播电视大学出版社
[8]杨兴姚.电动机调速的原理及系统[M]。
北京:
水利电力出版社