当前位置: 首页 > 其他范文 > 其他范文

实验4,电机控制与综合实验

作者:漂亮迷人 | 发布时间:2021-01-20 06:44:45 收藏本文 下载本文

渤海大学学生实验报告(理工类)课程名称:

单片机 开课实验室:

EDA 技术实验室 实验室位置:

理工 3 号 楼 707 室 完成实验时间:

年 月 日 学院 新能源学院 专业/年级/班 微电子/2012/1 姓名 ##### 实验题目 定时计数器 学号 ####### 实验环境 指导教师 成绩 成绩评定标准:

序号 项目 满分成绩 备注 1 预习、实验原理 2 2 实验内容与实验步骤 3 3 分析、解决问题及创新能力 2 4 实验结果、数据处理 2 5 讨论及建议 1 一、实验目的:

1、掌握电机的应用; 2、掌握综合系统的设计。

二、实验设备(名称、型号):

联想启天 M710E 计算机、连接导线等 Techshine® EL-NC800 综合创新实验实训系统 三、实验(设计)原理概述:

步进电机相数:产生不同对极 N、S 磁场的激磁线圈对数。常用 m 表示。

步进电机拍数:完成一个磁场周期性变化所需脉冲数或导电状态用 n 表示,或指电机转过一个齿距角所需脉冲数,以四相电机为例,有四相四拍运行方式即 A-B-C-D-A,四相双四拍运行方式即 AB-BC-CD-DA-AB,四相八拍运行方式即 A-AB-B-BC-C-CD-D-DA-A。四相双四拍方式(AB-BC-CD-DA-AB),各线圈通电顺序如下。

顺序/相 A B C D 0 1 1 0 0 1 0 1 1 0 2 0 0 1 1 3 1 0 0 1 按这种顺序切换,电机轴按顺时针方向旋转。若通电顺序相反,则电机轴按逆时针方向旋转。为提高步进电机负载能力和运行平稳,可使用四相八拍驱动方式。

步距角:对应一个脉冲转子的角位移。θ=360°/mZC(m 定子相数、转子齿数、C 单双拍)。

实验箱步进电机 28BYJ48,面板标注一周 64 格,每格 5.625°。

28BYJ48 基本参数及驱动方式:

5V,5 线(含共电源线)4 相,转子 8 齿,双拍步距角 360/(4×8×2)=5.625°,减速比1/64。其中红色 5 号线,橙色 4 号线,黄色 3 号线,粉色 2 号线,蓝色 1 号线,由 74LS07驱动。

四、实验内容与步骤(方法)、实验数据(表格)、数据处理:

1 1、步进电机控制(四相 8 8)拍)。

编程 :

连线:将 MCU 的 IO1---IO4 分别连接到 STEP MOTOR 的 ORANGE、YELLOW、PINK、BLUE管脚。

#include sbit P0_0=P0^0;sbit P0_1=P0^1;sbit P0_2=P0^2;sbit P0_3=P0^3;static unsigned int count;/ // 定时中断次数计数 static int step_index;/ // 步进索引数,值为 0 0 -7 7,记录步进位置 static bit turn;/ // 转动方向, ,为 为 1 1 逆时针, ,为 为 0 0 顺时针 static bit stop_flag;/ // 停止标志, ,为 为 1 1 停止, ,为 为 0 0 运行 static int speedlevel;/ // 转速参数,数值越大速度越慢,最小值为 1 1,速度最快 static int spcount;/ // 转速参数计数 void delay(unsigned int endcount);// 延时函数声明,延时为 5 endcount*0.5 毫秒 void gorun();/ // 控制步进函数声明 void main(void){ count=0;/ // 定时中断计数 =0 step_index=0;/ // 步进索引数 =0 spcount=0;/ // 转速参数计数 =0 stop_flag=1;P0_0=0;P0_1=0;P0_2=0;P0_3=0;/ // 停止 EA=1;ET0=1;TMOD=0x01;TH0=0xFE;TL0=0x0C;TR0=1;/ // 允许 0 T0 方式 1 1 中断定时 s 0.5ms 启动 do{ turn=0;/ // 转动方向 =0 spe edlevel=2;/ // 转速参数 =2,每拍 拍 1ms stop_flag=0;/ // 运行 8 8 192 /26 =4096 拍,步距角 5.625 ° /64 / // 两者相乘,即运行 360 0 度 delay(8 192;);stop_flag=1;/ // 停止 1 1 秒 delay(2000);turn=1;/ // 转动方向 =1 speedlevel=4;/ // 转速参数 =4,1 1 拍 拍 2ms stop_flag=0;/ // 运行 16384/46 =4096 拍 delay(16 384;);stop_flag=1;/ // 停止 1 1 秒 delay(2000);}while(1);} } void timeint(void)interrupt 1{ / // 定时器 0 0 中断处理 TH0=0xFE;TL0=0x0C;/ // 重装 s 0.5ms 初值 count++;/ //每 每 s 0.5ms 计数加 1 1 spcount---;;/ //每 每 s 0.5ms 转速参数计数减 1 1 if(spcount<=0){ / // 如果转速参数计数 <=0 spcount=speedlevel;/ // 转速参数计数= = 转速参数 gorun();/ //每 每 s 0.5ms 步进 } } 批注 [l1]: 把自己编写并调试正确的程序写在实验报告上。此处程序只为示例。

} } void delay(unsigned int endcount){ count=0;/ // 定时中断计数 =0, 保证进入如下循环 do{}while(count7)step_index=0;/ // 如果索引数 >7, 索引数 =0 }else{ / // 如果转动方向 =1 步进索引数减 1 1 step_index---;;if(step_index<0)step_index=7;/ // 如果索引数 <0, 索引数 =7 } } } } 2 2、直流电机检测,并 通信。

步骤 :

1 1))箱、将甲、乙两个实验箱 U MCU 模块的跳线帽 2 JP2 端都短接在 上侧。甲做发送设备,乙做接收设备。

2 2))、连线:

发送设备甲:

(1 1)将 MCU 的 的 TXD、RXD、IO1(P0.0)和 0 INT0 分别连接到 5 RS485 的 的 TXD、RXD、5 E485 和单脉冲输出 P P--孔。

(2 2)顺序连接甲、乙两个实验箱的 5 RS485 的 的 1 UR1 差分接口(A A、B B 分别对接)。

(3 3)将 MCU 的 的 0 INT0 连接到 DC_MOTOR 的 的 SPEED,DC_MOTOR 的 的 DRV 连接到ANOUT。

接收设备乙:

(1 1)将 U MCU 的 的 TXD、RXD、INT0(P P3 3..2 2)分别连接到 5 RS485 的 的 TXD、RXD、E485 ;(2 2)8 IO1~IO8 顺次连接 LED_A~LED_DP,CAP0、SDA、L SCL 顺次连接 LED_C1、LED_C2、LED_C3 3、LED_C4 4。

3 3))备、分别连接好仿真器,上电,在甲设备 PC 机上打开 Keil C 环境,编译如下程序,进入调试状态,即将程序下载到“ “ 发送设备甲” ” 的仿真器中。

#include sbit EN=P0^0;unsigned int speedNum =0;;unsigned char timerCounter =0;;

void init(void){ PCON = 0x80;TMOD = 0x21 1;;SCON = 0x50;TH1 = 0xfa;TL1 = 0xfa;TH0 0 = 0x 3c;;TL0 0 = 0x b0;;TR1 = 1;TR0 = 1;IT0 = 1;PX0 = 1;EX0 = 1;E ET T 0 = 1;EA = 1;EN = 1;} } void Speed_ISR(void)interrupt 0 { // 电机计数 中断程序 speedNum ++;;} } void T0 _ISR(void)interrupt 1 1 { // 定时 s 1s 中断程序 timerCounter ++;;if(timerCounter==20){ timerCounter=0;SBUF = speedNum;;while(!TI);TI = 0;speedNum=0;} } TH0 0 = 0x 3c;;TL0 0 = 0x b0;;} } void main(void){ { init();while(1);;} } 再在乙设备 PC 机上打开 Keil C 环境,编译 如下程序,进入调试状态,即将程序下载到“ “ 接收设备乙” ”的 的 CPU 板中。

#include #define OUTBIT P1 #define OUTSEG P0 sbit EN = P3 3^ ^2 2;;unsigned char LEDBuf[] ={0,0,0,0};;// 显示缓冲区 code unsigned char LEDMAP[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f};void init(void){ { PCON = 0x80;TMOD = 0x20;SCON = 0x50;TH1 = 0xfa;TL1 = 0xfa;TR1 = 1;ES = 1;EA = 1;EN = 0;} } void D D elay(u nsigned int x){ u u nsigned char t;while(x---{){ for(t=0;t<120;t++);

} } } } void Display(){ unsigned char i;;unsigned char Pos;un signed char LED;Pos = 0x 08;// 初始位选字,从左边开始显示 for(i = 0;i < 4 4;i++){ OUTBIT = 0;// 关所有八段管 LED = LEDBuf[i];// 取段码 OUTSEG = LED;OUTBIT = ~ ~ Pos;// 显示一位八段管 Delay(2 2;);Pos >>= 1;} } } void UART0_ISR(void)interrupt 4{ 0 //UART0 中断服务子程序 u u nsigned char temp;if(RI){ RI = 0;temp = SBUF;LEDBuf[0] = LEDMAP[temp /10 00;];/ // 千 LEDBuf[1] = LEDMAP[temp /100 %10];/ // 百位 LEDBuf[2] = LEDMAP[temp /10];/ // 十位 LEDBuf[3] = LEDMAP[temp %10];/ // 个位 } } } } void main(void){ { init();while(1){ { Display();;} } } } 4 4))、运行接收设备乙的程序,并把跳线帽 2 JP2 短接在 下侧,让出串行口。

5 5))、运行 发送设备甲 的程序帽,并把跳线帽 2 JP2 短接在 下侧,让出串行口。

观察“ “ 接收设备乙” ” 实验箱上的 显示 变化。

调整发送设备甲 上的 电位器旋钮,观察“ “ 接收设备乙” ” 实验箱上的 显示 变化。

6 6))、备注:在该 5 RS485 的通讯中,关键是设置 5 RS485 的 的 5 E485 端的状态,从而决定是接收回来数据还是发送出去数据。

结果:

3 3、将直流电机的转速直接显示在当前实验板的数码管上。

五、实验结果及误差分析:

六、讨论的问题及结论、改进实验的建议:

1、显示设计的方法有几种,分别是什么,它们的原理是什么? 2、LED 显示接口电路为什么需要驱动?如何解决驱动的问题? 3、键盘设计方法有几种,分别是什么,它们的原理是什么? 批注 [l2]: 此处描述实验现象,写出实验结果。

批注 [l3]: 参考题目 2 自行编写程序,连接电路。

批注 [l4]: 对实验做必要的分析说明。

批注 [l5]: 作答以下问题,以及写下改进实验的建议。

控制专业实验

实验08_交通灯控制实验

GPIO控制实验实验报告

电子综合实验

综合实验1

本文标题: 实验4,电机控制与综合实验
链接地址:https://www.dawendou.com/fanwen/qitafanwen/405054.html

版权声明:
1.大文斗范文网的资料来自互联网以及用户的投稿,用于非商业性学习目的免费阅览。
2.《实验4,电机控制与综合实验》一文的著作权归原作者所有,仅供学习参考,转载或引用时请保留版权信息。
3.如果本网所转载内容不慎侵犯了您的权益,请联系我们,我们将会及时删除。

重点推荐栏目

关于大文斗范文网 | 在线投稿 | 网站声明 | 联系我们 | 网站帮助 | 投诉与建议 | 人才招聘 | 网站大事记
Copyright © 2004-2025 dawendou.com Inc. All Rights Reserved.大文斗范文网 版权所有