实验教学任务单
2014 -----20##年度第 一 学期 开课单位(教研室):自动化教研室
注:1、本表由任课教师填写,教研室主任审核签字(其中实验室名称、实验教师由实验中心填写),报实验中心作为排课依据;
2、课程名称按教学计划名称填写;实验项目名称填写应具体,与大纲一致。
第二篇:实验报告 实验十三 直流电机控制实验
EDA实验报告 之
实验十三 直流电机控制实验
1、 实验目的
1) 了解直流电机控制原理。
2) 学习单片机控制直流电机的编程方法。
3) 了解单片机控制外部设备的常用电路。
2、实验要求
利用实验仪上的D/A变换电路,输出-8V至+8V电压,控制直流电机。改变输出电压值,改变电机转速,用8255的PC.0读回脉冲计数,计算电机转速。
3、实验说明
在电压允许范围内,直流电机的转速随着电压的升高而加快,若加上的电压为负电压,则电机会反向旋转。
本实验仪的D/A变换可输出-8V到+8V的电压,将电压经驱动后加在直流电机上,使其运转。通过单片机输出数据到D/A变换电路,控制电压的高低和正负,观察电机的旋转情况。在电机转盘上安装一个小磁芯,用霍尔元件感应电机转速,用单片机控制8255读回感应脉冲,从而测算出电机的转速。
有兴趣的同学,可以做一个恒速的试验,即让电机转速保持一定。若电机转速偏低,则提高输出电压,若电机转速偏高,则降低输出电压。 首先给电机一定的阻力,让转速保持一定,然后稍微给加大阻力,观察D/A输出的电压是否能做出反应,再减小阻力,也观察D/A电压,有何变化。注意所加的阻力不能过大,以免电机烧毁。
4、原理图。
5、 实验内容
5.1 使用仪器、仪表,开发平台型号
本实验用到了WAVE 6000软件平台,电脑一台,LAB6000实验箱,若干连线,串行数据线。
5.2 性能指标、技术要求、思路方案、流程图
5.2.1 性能指标、技术要求见实验目的和实验要求。
5.2.2 思路方案:在程序中给出一个数字量,通过D/A变换为模拟电压,将电压经驱动后加在直流电机上,使其运转。在电机转盘上安装一个小磁芯,用霍尔元件感应电机转速,用单片机控制8255读回感应脉冲,并用计时器得到转一圈所用的时钟周期,从而根据相关公式测算出电机的转速;另一方面,通过肉眼观察出转速;将理论值和观察值进行比较,看是否接近,如果有误差,说明原因。
5.2.3 流程图:
5.3源程序
; DC motor
; ASM for MCS51
mode equ 082h
STATUS equ 08001h
PORTA equ 08000h
CTL equ 08003h
CS0832 equ 09000h
DC_P equ 0
count0 equ 40H
count1 equ 41H
Org 0000h
ljmp start
ORG 000BH ;外部中断0
LJMP INT0
org 0030h
start:
mov 40H,#0
[番茄花园1] SETB EA ; 开所有中断
SETB IT0 ; INT0边沿触发
SETB ET0 ; 允许INT0中断
[番茄花园2] mov dptr, #CS0832
mov a, #0B5h
movx @dptr, a
lcall delay ; 等待电机运转稳
lcall read ; 读取时间
sjmp $
;###################
mov dptr, #CS0832 ; 设断点,观察上次时间
mov a, #80h
movx @dptr, a ;
lcall delay ;停止电机运行
mov dptr, #CS0832 ; 设断点,观察上次时间
mov a, #0ffh
movx @dptr, a
lcall delay ; 等待电机运转稳定
lcall read
mov dptr, #CS0832
mov a, #80h
movx @dptr, a
lcall delay ;停止电机运行
mov dptr, #CS0832 ; 设断点,观察上次时间
mov a, #40h ; 电机反转
movx @dptr, a
lcall delay ; 等待电机运转稳定
lcall read ; 读取时间
mov dptr, #CS0832
mov a, #80h
movx @dptr, a
lcall delay ;停止电机运行
mov dptr, #CS0832 ; 设断点,观察上次时间
mov a, #00h ; 电机反转加速
movx @dptr, a
lcall delay ; 等待电机运转稳定
lcall read
mov dptr, #CS0832
mov a, #80h
movx @dptr, a
lcall delay ;停止电机运行
LJMP START
SJMP $
;###################
[番茄花园3] ;========================
delay:
mov r5,#10
mov r6,#0
mov r7,#0
ddd:
djnz r7,ddd
djnz r6,ddd
djnz r5,ddd
ret
;========================
read: ;读测速度的霍尔器件,count0\count1 为电机转一圈的时间
mov TMOD, #01 ; 16 位计时
clr TR0
mov TH0, #0
mov TL0, #0
mov dptr, #STATUS
r_0:
movx a,@dptr
jnb acc.DC_P, r_0 ; 等待低电平完
r_1:
movx a,@dptr
jb acc.DC_P, r_1 ; 等待高电平完
setb TR0
r_2:
movx a,@dptr
jnb acc.DC_P, r_2 ; 等待低电平完
r_3:
movx a,@dptr
jb acc.DC_P, r_3 ; 等待高电平完
clr TR0
[番茄花园4]
mov count0+1,TH0
mov count1+1,TL0
ret
;========================
INT0:
clr TR0
mov TH0, #0
mov TL0, #0
SETB TR0
INC 40h
[番茄花园5] RETI
;========================
5.4实验步骤,完成情况
5.4.1 在WAVE 6000中新建文件,并将代码写入文件中,保存为EXPERIMENT13.ASM;
5.4.2 在WAVE 6000中新建项目,并在模块文件中包含上述EXPERIMENT13.ASM文件,最后保存为EXPERIMENT13.PRG。
5.4.3 编译程序,按照提示改正错误的地方,直到没有语法错误为止。
5.4.4 完成上一步后,检查是否有逻辑错误。
5.4.5 按连线图连好线,经师兄确认后打开电源。
5.4.6 观看直流电机的转动方向,转速是否大致正确,如果不是,检查源程序和连线,直到正确为止。然后用单片机控制8255读回感应脉冲,并用计时器得到转一圈所用的时钟周期,从而根据相关公式测算出电机的转速;另一方面,通过肉眼观察出转速;将理论值和观察值进行比较,看是否接近,如果有误差,说明原因。
5.4.7 结果正确后,等师兄检查完毕。然后收拾实验仪器,包括电源线、导线、串口线,示波器等,收拾桌面和凳子。
6、本实验遇到问题及解决方案
6.1 中断用的是计数器0,把中断允许位弄错了,导致一直没有中断产生,结果肯定就错了。
解决方案:正确将中断允许位置位。
6.2 转速的理论值与观察值有出入,有误差。
解决方案:一方面,由于直流电机的转速不稳定,导致得到的转一圈所需的时钟周期有波动,从而由它计算出的理论上的转速自然不是很准确。另一方面,肉眼观察的转速由于各种人为的原因也会造成误差。故理论值和观察值有出入是能容忍的,实验中的误差也是在允许的范围内。(转速理论值为1.9,转速观察值为2.1)
7、对本实验的改进建议和疑难问题:
7.1 改进建议:由于用计数电机转一圈来得到的时钟周期数来计算理论上的转速,而电机的转速不稳定,从而导致6.2提到的问题。为了减小误差,可以利用多次测量,求平均值的方法。当然,这也提高了程序的难度。不过值得一试。
7.1 疑难问题:如何采用更多的方法来减小人为或者机械造成的理论上的电机转速和观察到电机转速之间的误差,这是一个值得思考的问题。
20##-6-3
[番茄花园1]计数器中断次数计数器单元,初始值为0
[番茄花园2]计数器0中断允许
[番茄花园3]这部分是为了观看不同电压驱动直流电机的情况。要这部分时只需要将前面的sjmp $ 删掉即可。
[番茄花园4]计数一个低电平和高电平(即电机转动一圈)所用的时钟周期。
[番茄花园5]计数器中断次数加一。