西电微机系统课程设计——步进电机开环控制系统设计

本文详细介绍了西电微机系统课程设计中关于步进电机开环控制系统的实现,包括系统功能、设计要求、硬件连线和代码实现。通过手动调节电位器模拟水位,控制步进电机转动调节水闸。设计中涉及了A/D转换、步进电机控制、数码管显示和速度调节等功能,并分析了实际操作中遇到的问题,如步进电机速度不恒定和响应延迟。作者通过此次课程设计加深了对微机系统接口和控制原理的理解。

西电微机系统课程设计——步进电机开环控制系统设计


一、课程设计目的

1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。

2.加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。

3.搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。


二、课程设计的内容

手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50 米,CPU收到水位信号后,根据水位高度控制步进电机(水闸)进行调节。

在这里插入图片描述


三、系统功能与设计要求

基本功能要求

手动调节电位器旋钮,步进电机根据水位实时调节水闸。设水闸全部打开需要逆时针旋转 10 圈 (10 x 360°)度。随着上游进入水库的水流量变化,水库水位不断变化(手动调节电位器旋钮),每到一定高度,步进电机顺时针(关)或逆时针(开)旋转一定的角度调节水闸开启程度,从而控制水库水位在 10~50 米之间。调节精度控制在±5%,调节规律如下:

在这里插入图片描述

步进电机采用四相八步控制,开关顺序如图:

在这里插入图片描述
步进电机不使用时要关闭,不可以停止在一个相位上时间过长,会导致发热;

发挥部分

1.增加速度调节功能。水位在 10~40 米期间,步进电机中速转动,水位低于 10 (水位过低)或高于 40 米(水位过高)时,步进电机高速转动。

2.增加实时水位显示。用数码管 DLED 高两位显示当前水位(00~50 米)。

3.增加水闸开启程度显示。用数码管 DLED 低两位实时显示水闸开启程度(00~10圈)。


四、操作步骤

  1. 首先根据题目要求选择合适的器件并参考示例代码了解各器件的操作方法:
器件名称 功能
电位器 获取0~5V的模拟量
ADC0809 模拟量转换为数字量
步进电机 模拟水闸转动
数码管 显示必要参数
LED 根据水位亮不同的灯
74HC273N 锁存器,锁存控制LED的信号
系统总线 控制其他器件
8255 将系统总线的命令传输到步进电机和数码管
  1. 阅读硬件接口手册,粗略连接各器件,并加部分的流程控制,画出大致的流程控制图:

在这里插入图片描述

  1. 对于一些实验要求的分析:
    • 由于水位可能下降也可能上升,所以步进电机要记录历史状态,根据上一次水位信息来判断正转和反转;
    • 步进电机的速度控制通过延时不同时间来实现,延时函数可以粗略地使用空循环;
    • 数码管水位信息应该随步进电机旋转动态变化,所以应该放入步进电机旋转的函数中不停得对数码管进行刷新以实现;
    • 步进电机的每次旋转停下之后的相位应该被记录,下一次旋转应该在上一次停下的相位进行继续驱动,否则会出现旋转开始时倒转的现象;
    • 步进电机正转就是根据控制图由上到下循环out给步进电机的控制端口,同样反转是由下到上循环out给步进电机的控制端口;由于步进角我们并不清楚,所以采用测验来大致确定步进角,测验结果为步进电机运行40步为旋转一圈,在代码实现中,可以通过acircle这个全局变量来修改旋转一圈的步数;

五、硬件连线图

在这里插入图片描述
在这里插入图片描述


六、代码实现

/*
	步进电机开环控制系统设计:
		电位器功能描述:
			调节电位器旋钮(0~5V)作为水位;
			动态获取模拟量并转换为数字量显示在数码管上;
			4s左右时间不旋转电位器则停止采样,进入控制水闸功能模块;
		8位数码管功能描述:
			数码管低2位显示水位(m);
			数码管高2位显示水闸开启程度,用百分比表示;
			数码管4(中间位置)显示旋转速度,1表示中速,2表示高速;
		步进电机功能描述:
			[0,10)m和[40,50]m水位时,高速旋转,每转一步60ms延时;
			[10,40)m时,中速旋转,每转一步160ms延时;
			可以根据历史水闸开启状态来关闸或开闸(即逆时针旋转和顺时针旋转);
		LED管功能描述:
        	[0,10)m水位时,黄灯闪烁;
			[10,50)m水位时,绿灯常亮;
			50m水位时,红灯闪烁;
*/
#define	u8 unsigned char
#define u16 unsigned int

/* 接口地址定义 */
#define IO8255_PC	0x272			//8255 C口地址;
#define IO8255_Con	0x273			//8255 控制字地址;
#define addr0809	0x250			//0809 地址;
#define IO273       0x230 			//74LS273地址;

/* 库函数定义 */
extern void outportb( unsigned int, char);						//写I/O;
extern char inportb( unsigned int );							//读I/O;

extern void cInitKeyDisplay();  //对键盘、数码管管理器初始化;

//将pBuffer指向的8字节缓冲区内容显示于F5区数码管上;
extern void cDisplay8(u8* pBuffer);

u8 buffer[8];			//用于显示数码管缓冲区,8个字节;
u8 SpeedNo;				//选择哪一级速度;
u8 StepDelay;			//转动一步后,延时常数;
u16 StepCount;			//转动步数;

//传给步进电机的值(四相八步);
u8 StepControl[8]={
   
   0x11, 0x99, 0x88, 0xcc, 0x44, 0x66, 0x22,
一、 课程设计的目的 课程设计是本科教学全过程中的重要环节。《微机应用系统设计与综合实验(实践)》课程设计主要培养我们自动化专业学生,运用所学知识解决计算机应用领域内实际问题能力,进一步提高学生运用计算机编程语言综合编程能力、程序调试技能和微机系统接口综合应用及电路设计能力。 1、学习在PC系统中扩展简单的I/O接口的方法。 2、熟练掌握和运用汇编和C语言编写程序控制8255各口的输入输出,并正确带动数码管及步进电机;能熟练运用汇编和C语言实现8254的定时功能,以确保8255输出的脉冲频率稳定。 3、熟练掌握ISA总线配置方式下硬件实验的调试,并能独立的排除故障,以确保实验的顺利进行。 二、 设计的题目名称及要求 设计题目:小型步进电机控制系统设计设计要求: 1、编程语言为C语言或汇编语言。 2、硬件电路基于80x86微机小键盘和数码显示接口。 3、控制性能要求,实现步进电机启动、方向、速度调节和停止功能选择,并且在计算机屏幕上及数码管上实时显示步进电机当前参数及工作状态。编程语言为汇编语言或C语言。 三、实验设备 PC机一台(装有TDPIT软件)、唐都AEDK8688ET实验箱。 四、设计的思想和实施方案 由于本次课程设计控制的对象是步进电机,首先我得通过查阅相关资料对步进电机有个初步的了解和认识。所谓步进,就是指每给步进电机一个递进脉冲,步进电机各绕组的通电顺序就改变一次,即电机转动一次(一定的角度),本次课程设计控制的是四项八拍步进电机。在了解了步进电机的工作原理后,我的初步想法是用8255给步进电机传送脉冲,用8254控制传送脉冲的频率,以实现对步进电机转速的控制。 8255内部包含3个8位的输入输出端口A、B和C,端口A和端口B都可以用作一个8位的输入口或8位的输出口,端口C既可以作为一个8位的输入口或8位的输出口,又可以作为两个4位的输入输出口(C口上半部分和C口下半部分)使用,还可以配合A口和B口工作,分别用来产生A口和B口的输出控制信号和输入A口和B口的端口状态信号。 本次设计,我对8255的使用是这样的:8255工作于方式0,A口低四位接键盘及数码管显示单元的X1~X4;C口低四位接键盘及数码管显示单元的Y1~Y4; C口高四位接步进电路的驱动电路,使电机转动起来;B口接数码管的A、B、C、D、E、F、G和DP,以使数码管显示电机的转向和转速。8255的A口高四位本次课程设计没有用到。
摘 要 在现代电子产品中,步进电机广泛应用于ATM机、喷绘机、刻字机、写真机、喷涂设备、医疗仪器及设备、计算机外设及海量存储设备、精密仪器、工业控制系统、办公自动化、机器人等领域。所以步进电机控制是一门很实用的技术。本实验主要是基于唐都——PIT试验箱的步进电机控制设计。主要使用到了并行接口电路8255、LED七段数码管电路、8086cpu、步进电机等元件。主要是通过按键的不同来设置直流电机的转速、运行状态和方向。软件部分采用了汇编语言编写程序代码和C语言编写的步进电机控制程序,通过判断、跳转、循环、延时等基本技术实现。 此系统可以通过键盘输入相关数据, 并根据需要, 实时对步进电机工作方式进行设置, 具有实时性和交互性的特点。该设计可应用于步进电机控制的大多数场合 目录 摘要…………….…………………………………………...…...3 一. 课程设计目的……………………………………….....…...4 二. 设计题目名称及要求……………………………….....…….4 三. 实验设备…………………………………………...…..…….4 四. 设计的思想和实施方案……………………………..….…….5 五. 硬件原理图…………………………………………………….11 六. 典型程序模块及典型编程技巧…………………….…....…13 七. 课程设计中遇到的问题及解决方法………………...………16 八. 程序流程图………………………………………….…......19 九. 汇编程序清单及程序注释…………………………..…..……..23 十. C语言程序清单及注释………………………….……..…..…30 十一. 收获体会………………………………….………..……..…37 十二. 参考文献………………………………………..….…..……38
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OutlierLi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值