首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
用单片机和CPLD实现步进电机的控制
来源:本站整理  作者:佚名  2009-02-19 16:11:46




2.2 CPLD硬件电路的设计
    使用CPLD器件使电路的设计变得十分简洁。我们只需要把CPLD的I/O脚引出来, 接上相应的外围器件就可以了。CPLD与专用数字芯片(如74SC164等)的一个重要区别是其I/O 口的功能可任意在软件上设定,这样在硬件设计中便可只用考虑电源线与地线的分布。以减小高频电流噪声对数据传输的影响。
    在设计CPLD电路时,电源、时钟以及I/O与目标芯片都可通过接插件进行连接。最后在管脚锁定的时候把CPLD的I/O分别与单片机和电机电路部分相连就可以了,这样使电路的安装调试变得更加简便。
2.3 控制的实现
    由于篇幅的限制。在此只讨论单片机与CPLD逻辑接口部分以及CPLD中控制信号的产生部分。
    首先说明单片机和CPLD逻辑接口的问题。AT89S51与EPM7128SLC84的I/O电压都为5V。所以它们的I/O可以直接连接。无需增加额外的电路。如果使用的是I/O电压为3.3V的可编程逻辑器件,则需要考虑逻辑接口这个问题。
    同时通过时序分析. 我们可以知道该系统中EPM7128SLC84的输入信号建立时间Ts=8ns。也就是说输入CPLD的信号必须持续8ns以上才能够被CPLD识别。单片机如采用12MHZ的晶振,则信号的改变时间为微秒级,完全满足这个条件。
    当单片机根据实际情况计算出控制信息(电机的速度和方向)后就要"联络"CPLD以便及时的把信息传给它。单片机和CPLD交换数据可以选用并行传送或者串行传送的方式。考虑到单片机和CPLD的引脚都比较丰富。而且并行传送的接口相对简单,因此选用并行的方式交换数据。规定传送数据的协议如下图所示:

由图可知,单片机每次用P0口发送3个字节的数据(N1、N2分别为速度和方向控制字,N3为和校验字节),当CPLD检测到EN从高到低的跳变表示传进数据开始。每个字节的有效数据出现在CLK的上升沿。ACK为CPLD的应答信号。当CPLD接收完数据后进行和校验.如果不对则把ACK拉高。单片机若检测到ACK为高电平则重新开始送数的过程。CPLD接收到正确的数据后就把它转换成步进电机的物理运动。直到接收到新的控制信息。我们用VHDL语言编程,并选择EPM7128SLC84-15作为目标器件进行时序仿真和硬件测试。程序的框图如下:

EN:系统使能信号。
CPLD_CLK:系统时钟信号。
N1:速度控制信号。
N2:方向控制信号。
    系统时钟CPLD_CLK在速度控制信号N1的控制下得到脉冲分配器(状态机)的输入时钟,此时钟的频率决定控制逻辑输出的频率从而(在允许的范围内)控制电机的转速。EN为高电平时系统使能开始正常运转。N1为01H代表电机正转,00H代表电机反转。
    程序的脉冲分配器部分采用状态机的方法编写。状态机是纯硬件数字系统中的顺序控制电路,在状态机的运行方式上类似于控制灵活方便的CPU,而在运行速度和工作可靠性方面都优于CPU。
状态机部分的VHDL代码如下:
PROCESS(C_ST,EN,N1,BCLK)
BEGIN
IF RISING_EDGE(BCLK) THEN C_ST<=N_ST;
IF EN='1' THEN
CASE C_ST IS
WHEN ST0=> IF N1="00000000" THEN
N_ST<=ST1; ELSE N_ST<=ST7;END IF;
CON_OUT<="1000";
WHEN ST1=> IF N1="00000000" THEN
N_ST<=ST2; ELSE N_ST<=ST0;END IF;
CON_OUT<="1100";
WHEN ST2=> IF N1="00000000" THEN
N_ST<=ST3;ELSE N_ST<=ST1;END IF;
CON_OUT<="0100";
WHEN ST3=> IF N1="00000000" THEN
N_ST<=ST4;ELSE N_ST<=ST2;END IF;
CON_OUT<;"0110";
WHEN ST4=> IF N1="00000000" THEN
N_ST<=ST5;ELSE N_ST<=ST3;END IF;
CON_OUT<="0010";
WHEN ST5=> IF N1="00000000" THEN
N_ST<=ST6; ELSE N_ST<=ST4;END IF;
CON_OUT<="0011";
WHEN ST6=> IF N1="00000000" THEN
N_ST<=ST7;ELSE N_ST<=ST5;END IF;
CON_OUT<="0001";
WHEN ST7=> IF N1="00000000" THEN
N_ST<=ST0; ELSE N_ST<=ST6;END IF;
CON_OUT<="1001";
WHEN OTHERS=> N_ST<=ST0;
CON_OUT<="0000";
END CASE;
END IF;
END IF;
END PROGESS;

2.4 结论
    实践表明.这样的控制方法切实可行。在整个工作过程中,单片机运行稳定.电机能够根据情况完成正常的正转反转,加速减速。

3 结语
    单片机是一种非常传统的智能控制器件,无论是智能家电还是消费类产品都有它的身影。CPLD器件在各种场合的应用也越来越广泛。两者有各自的优缺点。单片机控制功能很强,能完成复杂的数学运算.但是稳定性稍差。CPLD运行速度快。程序不会跑飞。适合产生各种复杂组合逻辑和时序逻辑。可以灵活的定义各个引脚的与外围电路连接的电气特性等。使用单片机和CPLD联合控制步进电机只是不同类型的器件协同完成同一任务在实际应用中的一个例子。实践证明这种方法是可取的。


上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:74,753.91000 毫秒