本帖最后由 ldxywdg 于 2014-12-1 21:35 编辑
【视频详情见3楼】看过很多大神发一些单片机的设计,我也发一个大学时候做的设计,AT89C51步进电机转向/转速控制操作视频见3楼,算是怀念一下大学的时光,转眼毕业半年了,真是快啊。我这款设计是基于ATMEL公司生产的AT89C51为核心芯片,设计的主要用来控制步进电机的正转和反转,以及转速,并将运行情况显示在两个数码管上。AT89C51具有抗干扰能力强,可靠性高且系统扩展容易等优势。 【代码及电路图见本楼层最后】
一、设计内容:
1)步进电机运行正常 2)能正确手动复位; 3)数码管能正确显示正反转,转数等级;
总电路图
各模块电路图
控制电路原理图
根据系统的控制要求,控制输入部分设置了启动控制,换向控制,加速控制和减速控制按钮,分别是K1、K2、S2、S3,控制电路如图 5 所示。通过 K1、K2 状态变化来实现电机的启动和换向功能。当 K1、K2 的状态变化时,内部程序检测P1.0 和 P1.1 的状态来调用相应的启动和换向程序,发现系统的电机的启动和正反转控制。
根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。对于单片机而言,主要的方法有:软件延时和定时中断在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过S2、S3 的断开和闭合,从而控制外部中断根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。
步进电机驱动电路
步进电机常用的驱动方式是全电压驱动,即在电机移步与锁步时都加载额定电压。为了防止电机过流及改善驱动特性,需加限流电阻。由于步进电机锁步时,限流电阻要消耗掉大量的功率,故限流电阻要有较大的功率容量,并且开关管也要有较高的负载能力。 通过 ULN2803 构成比较多的驱动电路,电路图如图6所示。通过单片机的 P1.0-P1.3 输出脉冲到ULN2803 的 1B-4B口,经信号放大后从 1C-4C 口分别输出到电机的A、B、C、D相。 步进电机的另一种驱动方式是高低压驱动,即在电机移步时,加额定或超过额定值的电压,以便在较大的电流驱动下,使电机快速移步;而在锁步时,则加低于额定值的电压,只让电机绕组流过锁步所需的电流值。这样,既可以减少限流电阻的功率消耗,又可以提高电机的运行速度,但这种驱动方式的电路要复杂一些。驱动脉冲的分配可以使用硬件方法,即用脉冲分配器实现。
复位及时钟振荡电路 单片机最小系统或者称为最小应用系统,即用最少的元件组成的单片机可以工作的系统,对单片机来说,最小系统一般应该包括:单片机、复位电路、晶振电路。 复位电路:使用了独立式键盘,单片机的 P1 口键盘的接口。该设计要求只需4 个键对步进电机的状态进行控制,但考虑到对控制功能的扩展,使用了6路独立式键盘。复位电路采用手动复位,所谓手动复位,是指通过接通一按钮开关,使单片机进入复位状态,晶振电路用 30PF 的电容和一 12M 晶体振荡器组成为整个电路提供时钟频率。如图7所示。 晶振电路:89C51 单片机的时钟信号通常用两种电路形式电路得到:内部震荡方式和外部中断方式。在引脚 XTAL1 和 XTAL2 外部接晶振电路器(简称晶振)或陶瓷晶振器,就构成了内部晶振方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。内部振荡方式的外部电路如图7所示。其电容值一般在 5-30pf,晶振频率的典型值为 12MHz,采用6MHz 的情况也比较多。内部振荡方式所得的时钟信号比较稳定,实用电路实用较多。
显示电路 本系统是基于提高智能机灵活性而设计的,对于步进电机的频率、步数、位置和停止等通过键盘输入相应指令,由单片机输出步进电机控制信号来实现控制,用数码管显示输入的参数并在工作时动态显示剩下的步数。 显然,要显示一个字型就应该使此字型的相应发光二极管点亮,实际上就是送一个不同电平的组合代表的数据到数码管。在该步进电机的控制器中,电机可以正反转,可以加速、减速,其中电机转速的等级分为七级,为了方便知道电机的运行状态和电机的转速的等级,这里设计了电机转速和电机的工作状态的显示电路。在显示电路中,主要是利用了单片机的 P0 口和 P2 口。采用两个共阳数码管作显示。显示电路如图8所 第一个数码管接的 a、b、c、d、e、f、g、h 分别接 P0.0~P0.7 口,用于显示电机正反转状态,正转时显示“1” ,反转时显示“一”,不转时显示“0”。第二个数码管的 a、b、c、d、e、f、g、h分别接 P2.0~P2.7口,用于显示电机的转速级别,共七级,即从 1~7 转速依次递增,“0”表示转速为零。
系统总体框图
在系统中采用AT89C51单片机产生A、B、C、D四相信号(更具实际需要,可以扩充更多相)。当采用单片机控制时,需要在单片机和步进电机之间设置隔离电路以使强弱分开。由于步进电机的驱动电流相对较大,可增设放大电路来提供步进电机的工作电流。
AT89C51介绍
本系统采用AT89C51单片机产生控制信号单片机内部的内存即可满足要求。如需要扩展较多的外部RAM和ROM可加上数据缓冲器。步进电机控制信号通过AT89C51单片机其中一个口进行扩充。为了增加步进电机工作的灵活性,在启动步进电机工作之后,当有键按下,设置产生外部中断,达到灵活控制电机的目的。
主程序流程图
主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各种开关状态的检测判断等。其中系统初始状态的设置内容较多,该系统中,需要初始化定时器、外部中断;对 P1 口送初值以决定脉冲分配方式,速度值存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电机旋转方向等内容。若初始化 P1=11H、速度和方向初始值均设为 0,就意味着步进电机按相单四拍运行,系统上电后在没有操作的情况下,步进电机不旋转,方向值显示“0”,速度值显示“0”,主程序流程图如图10所示
补上元器件列表
程序附件供下载(汇编语言)
步进电机.zip
(12.21 KB)
|