LAMOST(Large Sky Area Multi-Obiect Fiber Spectroscopy Telescope,大天区面积多目标光纤光谱天文望远镜)需要对焦而上的4 000个光纤定位单元进行精确定位,一个光纤定位单元需要两个步进电机来驱动,即需要对8 000个电机进行驱动控制。如何对这8 000个电机进行有效的控制,是本文主要的研究内容。 本义引入EDA(Electronic Design Automation),技术,以FPGA和CAN总线为硬件载体来进行设计。FPGA相比较于DSP,单片机而言,具有10管脚多,资源丰富,使用灵活等优点,可以存片内集成多个电机的摔制,这样对于提高系统的集成度,节约成本无疑有着很大的帮助。 在电机的控制当中,其失步和过冲会直接影响到系统的精度,所以需要对电机脉冲频率加以控制,对于在平稳状态下能正常工作的电机,失步往往发生在启动停止等脉冲频率突然发生改变的时刻。具体实现方法是通过实验找出一条理想的加减速曲线,再将曲线离散化,并把离散化后的加减速分频系数存储在FPGA片内ROM里而,当电机运行到对应的步数时,取出分频系数来获取对应的运行频率。 在LAMOST观测中,光纤定位单元的零位是个很重要的基准,在每次观测之前,电机都要回零,理论上电气零位和机械零位在同一点上,如果电气检测到达零位则认为已经到达机械零位位置。但是实际中由于装配等一些原因,可能会出现零位短路和零位断路的情况。零位断路是指电机处于机械零位,但是电气不能检测到;零位短路是指电机不在机械零位,但是电气已经检测到处于零位。这两种情况会造成越界和机械零位一直被挤压的后果,有可能会损坏光纤定位单元,为了防止这些情况出现,软件程序中加入了计数器,从而从有效地保护了光纤定位单元,同时将这些状况向上反馈,以便维护和检修。 在本文完成之时,能够控制驱动336个光纤定位单元的小系统已经在北京天文台兴隆观测站实际投入运行,并于2007年5月28日获得首条光谱,取得了不错的效果。
上传时间: 2013-04-24
上传用户:afeiafei309
】本文介绍了一个使用单片机和CPLD联合控制步进电机的方案。首先阐明步进电机的工作原理及控制方法,然后\r\n提出了系统的软硬件设计框架,详细讨论了单片机和CPLD的逻辑接口问题和交换数据的协议,以及用状态机来设计脉冲分配器\r\n的方法。
上传时间: 2013-08-14
上传用户:y13567890
简介:1、PWM调制,H桥双极性驱动,最大相输出电流:1.5A。2、2细分、4细分、8细分订制。3、供电电压:DC12V。4、脱机电平。5、光耦隔离。6、自动半电流功能。本驱动器不设置可调整项,电流及细分数分别在1.5A及8细分以下由用户任意订制,以适配不同工况及不同型号的2相步进电机。
上传时间: 2013-10-11
上传用户:tuilp1a
AT89C2051驱动步进电机的电路和源码:AT89C2051驱动步进电机的电路和源码 程序:stepper.c stepper.hex/* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */#i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.hregister unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n;unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400/* flag1 mask byte 0x01 run cw() 0x02 run ccw() */main(){ flag1=0; serinit(9600); disable(); /* no need timer interrupt */ cw_n = n; /* initial step number for cw */ flag1 |=0x01; /* initial enable cw() */while(1){ { tick_wait(); /* wait for 10ms elapsed */energize(); /* round-robin execution the following tasks every 10ms */ cw(); ccw(); } }}cw(){ if((flag1&0x01)!=0) { cw_n--; /* decrement cw step number */ if (cw_n !=0) j++; /* if not zero increment index j */ else {flag1&=~0x01; /* disable cw() execution */ ccw_n = n; /* reload step number to ccw counter */ flag1 |=0x02; /* enable cww() execution */ } }
上传时间: 2013-11-21
上传用户:boyaboy
51单片机驱动步进电机(含电路图和源程序代码) 源程序:stepper.c stepper.hex /* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */ #i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.h register unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n; unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400 /* flag1 mask byte 0x01 run cw() 0x02 run ccw() */
上传时间: 2013-11-09
上传用户:钓鳌牧马
摘要: 本文介绍了利用A3955对步进电机实现控制的方法及其电路设计。关键词: 步进电机;PIC16C621A; A3955;脉宽调制 步进电机广泛应用于对精度要求比较高的运动控制系统中,如机器人、打印机、软盘驱动器、绘图仪、机械阀门控制器等。目前,对步进电机的控制主要有由分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。分散器件组成的环形脉冲分配器体积比较大,同时由于分散器件的延时,其可靠性大大降低;软件环形分配器要占用主机的运行时间,降低了速度;专用集成芯片环形脉冲分配器集成度高、可靠性好,但其适应性受到限制,同时开发周期长、需求费用较高。 步进电机控制步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机制。步进电机可分为反应式步进电机(VR)、永磁式步进电机(PM)和混合式步进电机(HB)。 步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。就转动一个角度,因此非常适合于单片机控。
上传时间: 2013-12-05
上传用户:lionlwy
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[采购订单_供货商_fk]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[采购订单] DROP CONSTRAINT 采购订单_供货商_fk GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[采购订单历史_供货商_fk]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[采购订单历史] DROP CONSTRAINT 采购订单历史_供货商_fk GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[采购合同_供货商_fk]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[采购合同] DROP CONSTRAINT 采购合同_供货商_fk GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[进货单_供货商_fk]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[进货单] DROP CONSTRAINT 进货单_供货商_fk
上传时间: 2013-11-15
上传用户:wkxiian
线程通信 本 文 我 们 将 在VC++4.1 环 境 下 介 绍 一 个 父 进 程 和 其 子 进 程 的 通 信 实 例。 在 父 进 程Parent 窗 口 中 按 一 下 鼠 标 左 键, 就 会 产 生 一 个Pipe 和 启 动 子 进 程Child, 并 从Pipe 一 端 发 送 信 息, 同 时Child 启 动 后 会 创 建 一 个 工 作 线 程, 专 门 用 来 从 管 道 的 另 一 端 读 入 数 据。 通 过 父 进 程 菜 单 项 的 控 制 来 改 变 图 形 形 状 参 数, 并 传 给Child 使 之 在 自 己 的 窗 口 中 绘 出 响 应 的 图 形。 下 面 分 别 就 父 进 程Parent 和 子 进 程Child 来 进 行 说 明。
上传时间: 2015-02-26
上传用户:hopy
给定n个大小不等的圆c , c , , cn 1 2 ,现要将这n个圆排进一个矩形框中,且要求各圆 与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例 如,当n=3,且所给的3 个圆的半径分别为1,1,2时,这3个圆的最小长度的圆排列如图 所示。其最小长度为2 + 4 2 。
上传时间: 2013-11-25
上传用户:lunshaomo
我的查表算法思路是这样的 : 1、构造N个二维数组(N=你需要输入的最大频率值位数,例如你需要精确到10HZ,最高30MHZ,那么就有10M位、1M位、100K位、10K位、1K位、100HZ位、10HZ位,共7位,所以N=7)。 2、根据你所用的芯片型号,和晶振频率,计算出每个频率位0-9时的控制字。 3、使用时,把你频率的每一位控制字,查表读出,并相加(特别需要注意进位也需要处理)。 4、把加出的4字节控制字,送DDS。
上传时间: 2015-12-21
上传用户:zjf3110