综合实验报告电机共12页.docx

上传人:b****5 文档编号:6926984 上传时间:2023-01-12 格式:DOCX 页数:12 大小:103.36KB
下载 相关 举报
综合实验报告电机共12页.docx_第1页
第1页 / 共12页
综合实验报告电机共12页.docx_第2页
第2页 / 共12页
综合实验报告电机共12页.docx_第3页
第3页 / 共12页
综合实验报告电机共12页.docx_第4页
第4页 / 共12页
综合实验报告电机共12页.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

综合实验报告电机共12页.docx

《综合实验报告电机共12页.docx》由会员分享,可在线阅读,更多相关《综合实验报告电机共12页.docx(12页珍藏版)》请在冰豆网上搜索。

综合实验报告电机共12页.docx

综合实验报告电机共12页

成绩:

我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。

为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?

吕叔湘先生早在1978年就尖锐地提出:

“中小学语文教学效果差,中学语文毕业生语文水平低,……十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!

”寻根究底,其主要原因就是腹中无物。

特别是写议论文,初中水平以上的学生都知道议论文的“三要素”是论点、论据、论证,也通晓议论文的基本结构:

提出问题――分析问题――解决问题,但真正动起笔来就犯难了。

知道“是这样”,就是讲不出“为什么”。

根本原因还是无“米”下“锅”。

于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。

所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。

要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到“死记硬背”的重要性,让学生积累足够的“米”。

重庆邮电大学

要练说,得练听。

听是说的前提,听得准确,才有条件正确模仿,才能不断地掌握高一级水平的语言。

我在教学中,注意听说结合,训练幼儿听的能力,课堂上,我特别重视教师的语言,我对幼儿说话,注意声音清楚,高低起伏,抑扬有致,富有吸引力,这样能引起幼儿的注意。

当我发现有的幼儿不专心听别人发言时,就随时表扬那些静听的幼儿,或是让他重复别人说过的内容,抓住教育时机,要求他们专心听,用心记。

平时我还通过各种趣味活动,培养幼儿边听边记,边听边想,边听边说的能力,如听词对词,听词句说意思,听句子辩正误,听故事讲述故事,听谜语猜谜底,听智力故事,动脑筋,出主意,听儿歌上句,接儿歌下句等,这样幼儿学得生动活泼,轻松愉快,既训练了听的能力,强化了记忆,又发展了思维,为说打下了基础。

自动化学院综合实验报告

唐宋或更早之前,针对“经学”“律学”“算学”和“书学”各科目,其相应传授者称为“博士”,这与当今“博士”含义已经相去甚远。

而对那些特别讲授“武事”或讲解“经籍”者,又称“讲师”。

“教授”和“助教”均原为学官称谓。

前者始于宋,乃“宗学”“律学”“医学”“武学”等科目的讲授者;而后者则于西晋武帝时代即已设立了,主要协助国子、博士培养生徒。

“助教”在古代不仅要作入流的学问,其教书育人的职责也十分明晰。

唐代国子学、太学等所设之“助教”一席,也是当朝打眼的学官。

至明清两代,只设国子监(国子学)一科的“助教”,其身价不谓显赫,也称得上朝廷要员。

至此,无论是“博士”“讲师”,还是“教授”“助教”,其今日教师应具有的基本概念都具有了。

题目51系列单片机直流电机闭环调速实验

学生姓名:

韩栋

班级:

0841001

学号:

2019213219

指导教师:

郭鹏

完成时间:

2019年12月

一、实验名称:

51系列单片机直流电机闭环调速实验

基本情况:

用电位器上的电压大小通过单片机对0VEN温度的控制

1.学生姓名:

韩栋

2.学号:

2019213219

3.班级:

0841001

2、实验内容:

1.主控芯片选择:

51系列单片机单片机的基本组成:

中央处理器(CPU):

中央处理器是单片机的核心,能完成运算和控制功能。

51系列单片机能处理8位二进制数据和代码。

内部数据存贮器(内部RAM):

8051共有256个RAM,其中128个被占有寄存器占用,能作为寄存器供用户使用的只有128个单元,简称内部RAM内部程序存贮器(内部ROM):

8051共有4K掩膜ROM,用于存放程序,原始数据,表格。

称程序存贮器,简称内部ROM定时器/计数器:

8051共有2个16位定时器/计数器,以实现定时或计数功能,并以定时或计数结果对计算机进行控制。

并行I/O口:

8051共有8个I/O口P0、P1、P2、P3以实现数据的并行输出,输入。

串行I/O口:

MCS-51的一个全双工的串行口,以实现单片机与其它设备之间的串行数据传输。

该口功能较强,既可作为全双工异步通信收发器使用,也可作为同步移位器使用。

中断控制系统:

8051共有5个中断源,外中断2个,定时器/计数中断2个,串行中断1个。

分为高级和低级两个级别。

综上所述,本项目选择应用较为普遍的80C51单片机。

851单片机一些电路的介绍和基本知识

 1.时钟电路

图1时钟电路

  在设计时钟电路之前,让我们先了解下51单片机上的时钟管脚:

  XTAL1(19脚):

芯片内部振荡电路输入端。

  XTAL2(18脚):

芯片内部振荡电路输出端。

  XTAL1和XTAL2是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。

图2中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。

一般来说晶振可以在1.2~12MHz之间任选,甚至可以达到24MHz或者更高,但是频率越高功耗也就越大。

在本实验套件中采用的11.0592M的石英晶振。

和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。

当采用石英晶振时,电容可以在20~40pF之间选择(本实验套件使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在30~50pF之间。

通常选取33pF的陶瓷电容就可以了。

2.复位电路

图2复位电路

  在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。

  MCS-5l系列单片机的复位引脚RST(第9管脚)出现2个机器周期以上的高电平时,单片机就执行复位操作。

如果RST持续为高电平,单片机就处于循环复位状态。

  复位操作通常有两种基本形式:

上电自动复位和开关复位。

图2中所示的复位电路就包括了这两种复位方式。

上电瞬间,电容两端电压不能突变,此时电容的负极和RESET相连,电压全部加在了电阻上,RESET的输入为高,芯片被复位。

随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。

并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。

一般来说,只要RST管脚上保持10ms以上的高电平,就能使单片机有效的复位。

图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。

  3.EA/VPP(31脚)的功能和接法

  51单片机的EA/VPP(31脚)是内部和外部程序存储器的选择管脚。

当EA保持高电平时,单片机访问内部程序存储器;当EA保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。

  对于现今的绝大部分单片机来说,其内部的程序存储器(一般为flash)容量都很大,因此基本上不需要外接程序存储器,而是直接使用内部的存储器。

  在本实验套件中,EA管脚接到了VCC上,只使用内部的程序存储器。

这一点一定要注意,很多初学者常常将EA管脚悬空,从而导致程序执行不正常。

  4.P0口外接上拉电阻

  51单片机的P0端口为开漏输出,内部无上拉电阻(见图3)。

所以在当做普通I/O输出数据时,由于V2截止,输出级是漏极开路电路,要使“1”信号(即高电平)正常输出,必须外接上拉电阻。

图3P0端口的1位结构

  另外,避免输入时读取数据出错,也需外接上拉电阻。

在这里简要的说下其原因:

在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。

例如,当从内部总线输出低电平后,锁存器Q=0,Q=1,场效应管V1开通,端口线呈低电平状态。

此时无论端口线上外接的信号是低电平还是高电平,从引脚读入单片机的信号都是低电平,因而不能正确地读入端口引脚上的信号。

又如,当从内部总线输出高电平后,锁存器Q=1,Q=0,场效应管V1截止。

如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。

所以当P0口作为通用I/O接口输入使用时,在输入数据前,应先向P0口写“1”,此时锁存器的Q端为“0”,使输出级的两个场效应管V1、V2均截止,引脚处于悬浮状态,才可作高阻输入。

  总结来说:

为了能使P0口在输出时能驱动NMOS电路和避免输入时读取数据出错,需外接上拉电阻。

在本实验套件中采用的是外加一个10K排阻。

此外,51单片机在对端口P0—P3的输入操作上,为避免读错,应先向电路中的锁存器写入“1”,使场效应管截止,以避免锁存器为“0”状态时对引脚读入的干扰。

2.AD转换器的选择:

由于考虑到单片机的I/O口的数量有限,所以本实验选择应用广泛的串行AD转换芯片TLC2543。

TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。

由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。

2TLC2543的特点:

(1)12位分辩率A/D转换器;

(2)在工作温度范围内10μs转换时间;

(3)11个模拟输入通道;

(4)3路内置自测试方式;

(5)采样率为66kbps;

(6)线性误差±1LSBmax;

(7)有转换结束输出EOC;

(8)具有单、双极性输出;

(9)可编程的MSB或LSB前导;

(10)可编程输出数据长度。

TLC2543的引脚排列及说明

   TLC2543有两种封装形式:

DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。

 

图4TLC2543的封装

接口时序:

   可以用四种传输方法使TLC2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。

   一个片选脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。

   图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列开始处插入一次时序。

图5TLC2543引脚说明

图6TLC2543工作时序图

3、显示模块选择:

实验选择LCD1602液晶显示器。

LCD1602液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。

1602采用标准的16脚接口,其中:

第1脚:

VSS为地电源

第2脚:

VDD接5V正电源

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15~16脚:

空脚

4、电机驱动模块选择:

L298N为SGS-THOMSONMicroelectronics所出产的双全桥步进电机专用驱动芯片(DualFull-BridgeDriver),内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。

L298与单片机的线路图:

图7驱动电路L298

图8单片机线路图

5.键盘输入模块选择:

本实验选择简易广泛的4X4矩阵键盘输入参数。

图94X4矩阵键盘

6.工作原理:

实验启动后,通过调节滑动变阻器得到一个电压值,AD转换器转换电压换算成速度,即设定的速度值;输入PID参数;单片机通过外部中断检测直流电机编码器所产生的脉冲数;再通过PID算法所计算出的值来计算驱动直流电机的占空比;从而可以调节直流电机的速度。

直流电机调速原理即PWM(PulseWidthModulation)简称脉宽调制。

即,通过改变输出脉冲的占空比,电压U=Umax*(VH/T)

实现对直流电机进行调压调速控制。

5、实验硬件图:

图10实验硬件图

3、实验程序:

PID函数

M_State_tmotor_pid(M_State_tin)

M_State_tout;

out=(M_Pid.A0*in)

+(M_Pid.A1*M_Pid.state[0])

+(M_Pid.A2*M_Pid.state[1])

+(M_Pid.state[2]);

M_Pid.state[1]=M_Pid.state[0];

M_Pid.state[0]=in;

M_Pid.state[2]=out;

if(out>Motor_Max)

out=Motor_Max;

elseif(out

out=Motor_Min;

return(out);

参数修改处理函数

voidproc_main()

ucharkey;

key=keyscan();

switch(key)

case16:

case15:

case14:

change_mode(key);break;

case13:

flag_run=1;break;

case12:

flag_run=0;break;

voidproc_adj()

ucharkey;

key=keyscan();

if(key>0&&key<10)

str[p_pos]=key+'0';

p_pos++;

else

switch(key)

case10:

str[p_pos]='0';p_pos++;break;

case11:

str[p_pos]='.';p_pos++;break;

case16:

case15:

case14:

change_mode(key);break;

case13:

*pst=str2f(str);

M_pid_init(0);

case12:

change_mode(12);

break;

voidchange_mode(ucharkey)

L1602_string(0,0,BLANK16);

L1602_string(1,0,BLANK16);

LCD_clear();

switch(key)

case16:

mode=SET_KP;

pst=&KP;

L1602_string(0,0,"KP:

");

break;

case15:

mode=SET_KI;

pst=&KI;

L1602_string(0,0,"KI:

");

break;

case14:

mode=SET_KD;

pst=&KD;

L1602_string(0,0,"KD:

");

break;

case12:

mode=DIS_MAIN;

L1602_string(0,8,"r/min");

L1602_string(1,8,"r/min");

break;

if(mode!

=DIS_MAIN)

Trans_Data_To_Disp(str,*pst,6);

L1602_string(1,0,"OLD:

");

L1602_string(1,5,str);

p_pos=0;

memset(str,0,17);

中断处理函数

voidTimer0_ser()interrupt1

TH0=(65536-INT_TIME)/256;

TL0=(65536-INT_TIME)%256;

timer_cnt1++;

if(timer_cnt1>=200)

timer_cnt1=0;

timer_cnt2++;

if(timer_cnt2>=5)

timer_cnt2=0;

speed_cnt=(TH1*256+TL1);

speed_cnt=speed_cnt*6;

TH1=0;

TL1=0;

flag_s=1;

if(flag_run)

PWM=timer_cnt1>duty?

1:

0;//PWM=timer_cnt1>duty?

0:

1;

else

PWM=1;//PWM=1;

TLC2543函数

uintread2543(ucharport)

uintad=0,i;

CLOCK=0;

_CS=0;

port<<=4;

for(i=0;i<12;i++)

if(D_OUT)

ad|=0x01;

D_IN=(bit)(port&0x80);

CLOCK=1;

delay(3);

CLOCK=0;

delay(3);

port<<=1;

ad<<=1;

_CS=1;

ad>>=1;

return(ad);

主函数

voidmain(void)

inti;

uchartemp;

L1602_init();

delay(30);

Int_T0_T1();

M_Pid.Kp=4;

M_Pid.Ki=0.01;//.1;

M_Pid.Kd=0.0008;

M_pid_init

(1);

speed_set=200;

PWM=0;//PWM=1;

IN1=0;

IN2=1;

L1602_string(0,7,"r/min");

L1602_string(1,7,"r/min");

while

(1)

switch(mode)

caseDIS_MAIN:

proc_main();break;

caseSET_KP:

caseSET_KI:

caseSET_KD:

proc_adj();

break;

if(flag_s)

flag_s=0;

get_sv();

if(flag_run)

duty=motor_pid(speed_set-speed_cnt);

switch(mode)

caseDIS_MAIN:

dis_main();break;

caseSET_KP:

caseSET_KI:

caseSET_KD:

dis_adj();

break;

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

当前位置:首页 > 工作范文

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

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