三相步进电机控制程序及电路

合集下载

3MA22100 步进电机驱动器使用手册说明书

3MA22100 步进电机驱动器使用手册说明书

3MA22100(三相高压)细分步进驱动器使用手册Version1.0版权所有 不得翻印【使用前请仔细阅读本手册,以免损坏驱动器】宁波纳川自动化科技有限公司3MA22100步进电机驱动器使用说明 在使用本品前,请仔细阅读本使用说明书请妥善保管本说明书,以备日后参考本册外观图片仅供参考,请以实物为准安全注意事项请勿带电插拔连接线缆。

此产品非密封,请勿在内部混入镙丝、金属屑等导电性异物或可燃性异物,储存和使用时请注意防潮防湿。

驱动器为功率设备,尽量保持工作环境的散热通风。

在连上步进电机,调节好电流后使其连续工作半小时后观察步进电机是否在额定温度后方可进行后续使用,如果电机温度过高请联系制造商。

一、产品简介1.1 产品概述3MA22100是纳川科技最新推出的一款采用精密电流控制技术设计的高细分步进电机驱动器,适合驱动110-130型各种品牌的三相混合式步进电机。

由于采用了先进的抗噪声控制方法,能大幅度降低电机运转时的噪声和振动,使得步进电机运转时的噪声和平稳性趋近于伺服电机的水平。

和市场上的大多数其他细分驱动产品相比,步进电机和驱动器的发热量降幅达15-30%。

1.2 产品特点⏹高性能、低价格、超低噪声⏹电机和驱动器发热极低⏹供电电压AC110-250V⏹输出电流峰值可达8.3A(均值5.86A)⏹输入电信号TTL兼容(5V兼容)⏹静止时电流自动减半⏹可驱动三相混合式步进电机⏹高速光耦隔离信号输入,脉冲响应频率最高可达100KHz⏹抗高频干扰能力强⏹输出电流设定方便⏹有过压、欠压、过流、过热、相间短路保护功能1.2 应用领域适合各种大型自动化设备和仪器,例如:雕刻机、打标机、切割机、激光照排、绘图仪、数控机床、拿放装置等。

在用户期望低成本、小噪声、高速度的设备中效果特佳。

二、电气、机械和环境指标2.1 电气指标说明 3MA22100最小值 典型值 最大值 单位 输出电流 3.3(均值2.34)- 10(均值7.11) A 输入电源电压 110 180 250(含纹波)VAC 逻辑输入电流 7 10 16 mA 步进脉冲频率 0 - 40 KHZ 绝缘电阻500MΩ2.2 使用环境及参数冷却方式自然冷却使用环境场合 尽量避免粉尘、油雾及腐蚀性气体环境温度0℃-+50℃ 最高工作温度70℃湿度 40-90% RH9 (不能结露和有水珠)震动 5.9m/S2 Max 保存温度 -20℃-125℃ 重量约1500克2.3 机械安装图 单位:毫米2.4 加强散热方式(1)驱动器的可靠工作温度通常在65℃以内,电机的工作温度在80℃以内;(2)安装驱动器时请采用竖着侧面安装,形成较强的空气对流,必要时机内靠近驱动器出安装风扇,强制散热,保证驱动器在可靠的工作温度范围内工作。

步进电机工作原理及控制电路

步进电机工作原理及控制电路

//按键标志变量
flag1=0;
//步进数标志变量
init();
//液晶初始化子程序
while(1)
{
keyscan();
//键盘扫描子程序
if(flag==1)
{
zz();
//正转子程序
}
else if(flag==3) {
fz(); } writebjs(8,count); } }
//反转子程序
it 动机正转,其励磁顺序如图所示。若励磁信号反向传送,则步进电动机反转。励
磁顺序: A→AB→B→BC→C→CD→D→DA→A
A-B 表4.3 1-2 相励磁法
步进电动机的负载转矩与速度成反比,速度愈快负载转矩愈小,当速度快至 其极限时,步进电动机即不再运转。所以在每走一步后,程序必须延时一段时间。 下面介绍的是国产20BY-0型步进电机,它使用+5V直流电源,步距角为18度。电 机线圈由四相组成,即A、B、C、D四相,驱动方式为二相激磁方式,电机示意图 和各线圈通电顺序如图4.2和表4.1所示:
6
法增大起动电流,以提高步进电机转动力矩,即提高其工作频率。由于步进电机
是感性负载,所以进入绕组的电流脉冲是以指数形式上升,即这时电流脉冲i为:
i = IH (1 − e−1/Tj )
(4.4)
公式
其中:i是电流脉冲瞬时值;
IH 是在开关回路电压为u时的电流稳态值;
Tj 是开关回路的时间常数,Tj = L / ( RL + RC )
θ s = 2Π / Nrk
公式(4.1) 或
θ s = 360o / Nrk
公式(4.2)
其中:k是步进电机工作拍数,Nr是转子的齿数。

步进电机的应用—三相混合式步进电机驱动器使用说明书

步进电机的应用—三相混合式步进电机驱动器使用说明书

三相混合式步进电机驱动器使用说明书1.特点★AC80~220V交流供电,能适应恶劣的电网环境★双极恒相流细分驱动★最大输出驱动电流6A/相(有效值,峰值达8A)★最大30000步/转的十六种细分模式可★过压、过流保护★输入信号光电隔离★可适应共阳、共阴、单/双脉冲多种模式★脱机保持功能★提供节能的自动半电流锁定功能2.性能指标供电电源80V~220VAC,容量0.8KVA输出电流有效值6A/相(峰值可达8A)(输出电流可由面板拨码开关设定)驱动方式恒相流PWM控制励磁方式400步/转,500步/转,600步/转,750步/转,1000步/转1500步/转,2000步/转,2500步/转,3000步/转,3750步/转5000步/转,6000步/转,7500步/转,10000步/转,15000步/转30000步/转绝缘电阻在常温常压下>500MΩ绝缘强度在常温常压下1KV,1分钟3.使用环境及参数冷却方式强制风冷使用环境场合尽量避免粉尘、油雾及腐蚀性气体温度0℃~+50℃湿度<80%RH,无凝露,无结霜震动 5.9m/s2Max保存温度-20℃~+65℃外形尺寸187×116×81mm重量 1.3Kg4.功能及使用★电源电压驱动器内部的开关电源设计保证了其可以适应较宽的电压范围,推荐使用80~220VAC,提高电压对提高电机的高速力矩有效,但是同时会加大运行噪音。

由于电机电磁感应回导致电机外壳生出一定的电荷,为确保使用者安全,请务必使用线径2mm2以上的机壳保护线和驱动器的机壳接地端子与保护大地可靠连接,并采用隔离变压器为驱动器供电★输出电流选择本驱动器采用双极恒流方式,最大输出电流值为6A/相(有效值),通过驱动器侧板第7,8四位开关的不同组合可以方便的选择4种电流值,从2A到6A(详见电流选择表),(注意:这里所说的电流是指驱动器每相输出电流的有效值,使用串电流表的方式不能得到正确的读数。

三相步进电机运行原理

三相步进电机运行原理

三相步进电机运行原理三相步进电机运行原理:一、三相步进电机基本原理三相步进电机是利用电磁场中的自旋力而产生的有功向量运动,它的运行遵循着磁通和旋转角。

其相应地电路如下图所示。

三相交流步进电机同步电路由三相霍尔继电器和三相换相电路组成,它在此基础上驱动三相交流步进电机进行步进旋转。

二、运行原理步进电机运行总是有起步、变速、停止以及恒速4种情况:1、起步:起步时,驱动器给出信号,继电器通断,绕组由A相迅速向B相,B 相再迅速向C相做换相,转子由迅速向半月的起点检测,此时继电器断开,转子开始转动,同步数据也进行相应的更新,在接下来的步长中在此基础上进行调整。

2、变速:当驱动器输出变速指令后,通过继电器改变磁场强度,改变转子的位置,做出相应调整,从而改变转子运动的角速度,最终实现变速的目的。

3、停止:由于转子中的磁力会在极性改变以后化为热能而消失,这些热能会使转子发生微小位移,造成刹车,从而实现停止的目的。

4、恒速:驱动器在维护恒定频率的时候,检测转子的位置,来计算换相的时机,按照此机制,可以获得恒速的运行,也就是说,转子在某一转速频率下,只要不经过变速,就会一直维持在这个速度下。

三、优点:1、定位准确:三相步进电机可以把信号精准定位,并且拥有良好的冲击抗干扰性,可以解决定位精度要求高的问题,大大提高定位的效率。

2、脉冲宽度低:三相步进电机的脉冲宽度和条件脉冲宽度小,相比其他模式的步进电机,可以降低控制器的功耗和发热量,更合适的空间限制,也可以延长脉冲持续时间,从而提高稳定性。

3、扭矩反应灵敏:驱动器通过改变绕组比,来实现扭矩反应灵敏度龙洋,可以自动调整,从而达到驱动效率更高,更稳定的状态。

总结:三相步进电机可以把信号精准定位、脉冲宽度低、扭矩反应灵敏,运行起步、变速、停止以及恒速等操作都十分高效,在很多场合得到广泛应用,受到各方的一致好评。

电机传动实验-PLC步进电动机控制实验

电机传动实验-PLC步进电动机控制实验

PLC步进电动机控制实验一、步进电机与步进电机驱动器的接线图步进电机驱动器与PLC连接,SH-2H042Ma步进电机驱动器的输入信号为CP+、CP-和DIR+、DIR-,其连接方式有三种:①共阳极方式:把CP+和DIR+接在一起作为共阳端OPTO(接外部系统的+5V),脉冲信号接入CP-端,方向信号接入DIR-端;②共阴极方式:把CP-和DIR-接在一起作为共阴端(接外部系统的GND),脉冲信号接入CP+端,方向信号接入DIR+端;③差动方式:直接连接。

二、PLC接线图PLC接线图(带驱动器)PLC 接线图(不带驱动器,输出电源电压应与步进电动机额定电压匹配) SB1为启动按钮,SB2为停止按钮,SB3为加速按钮,SB4为减速按钮。

三、按带驱动器的PLC 接线图的方式编写PLC 程序四、附录:采用西门子S7-300PLC 控制三相步进电机的过程例子电路说明:输出: A 相加电压:Q0.0B 相加电压:Q0.1C 相加电压:Q0.2 启动指示灯:Q0.3三相单三拍运行方式:Q0.4三相双三拍运行方式:Q0.5 三相单六拍运行方式:Q0.6 输出脉冲显示灯: Q0.7三相单三拍运行方式三相双三拍运行方式三相单六拍运行方式编程方法:1.使用定时器指令实现各种时序脉冲的要求:使用定器产生不同工作方式下的工作脉冲,然后按照控制开关状态输出到各相对应的输出点控制步进电机。

M0.0作为总控制状态位,控制脉冲发生指令是否启动。

一旦启动,采用T0、T1、T2以及它们的组合可以得到三相单三拍和三相双三拍的两种工作方式下,各相的脉冲信号。

如T0的状态为三相单三拍工作状态下A相的脉冲。

同理可使用类似程序得到三相单六拍时各相所需的脉冲信号。

2.使用移位指令实现各相所需的脉冲信号。

例如在MW10中进行移位,每次移位的时间为1秒钟。

如图为三相单六拍正向时序流程图,三相单三拍可利用相同的流程图,从M11.1开始移位,每次移两位,而三相双三拍从M11.2开始,每次移两位。

步进电机及其驱动电路

步进电机及其驱动电路

第三节步进电动机及其驱动一、步进电机的特点与种类1.步进电机的特点步进电机又称脉冲电机。

它是将电脉冲信号转换成机械角位移的执行元件。

每当输入一个电脉冲时,转子就转过一个相应的步距角。

转子角位移的大小及转速分别与输入的电脉冲数及频率成正比,并在时间上与输入脉冲同步。

只要控制输入电脉冲的数量、频率以及电机绕组通电相序即可获得所需的转角、转速及转向。

步进电动机具有以下特点:✍工作状态不易受各种干扰因素(如电压波动、电流大小与波形变化、温度等)的影响;✍步进电动机的步距角有误差,转子转过一定步数以后也会出现累积误差,但转子转过一转以后,其累积误差变为“零” ;✍由于可以直接用数字信号控制,与微机接口比较容易;✍控制性能好,在起动、停止、反转时不易“丢步”;✍不需要传感器进行反馈,可以进行开环控制;✍缺点是能量效率较低。

就常用的旋转式步进电动机的转子结构来说,可将其分为以下三种:(1)可变磁阻(VR-Variable Reluctance),也叫反应式步进电动机(2)永磁(PM—Permanent Magnet)型(3)混合(HB—Hybrid)型(1)可变磁阻(VR—Variable Reluctance)结构原理:该类电动机由定子绕组产生的反应电磁力吸引用软磁钢制成的齿形转子作步进驱动,故又称作反应式步进电动机.其结构原理如图3.5定子1上嵌有线圈,转子2朝定子与转子之间磁阻最小方向转动,并由此而得名可变磁阻型。

图3。

6 可变式阻步进电机可变磁阻步进电机的特点:❖反应式电动机的定子与转子均不含永久磁铁,故无励磁时没有保持力;❖需要将气隙作得尽可能小,例如几个微米;❖结构简单,运行频率高,可产生中等转矩,步距角小(0。

09~9°)❖制造材料费用低;❖有些数控机床及工业机器人上使用。

(3)混合(HB—Hybrid)型结构原理这类电机是PM式和VR式的复合形式。

其定子与VR类似,表面制有小齿,转子由永磁铁和铁心构成,同样切有小齿,为了减小步距角可以在结构上增加转子和定子的齿数。

三相步进电机的控制

三相步进电机的控制

三相步进电机的控制三相步进电机的控制要求为:1、能对三相步进电机的转速、启动停止进行控制;2、可实现三相步进电机的正反转控制;3、能对三相步进电机的步数进行控制。

一、系统配置1、FX2N-32MR型PLC一台。

2、110BF003型三相反应式步进电动机一台。

3、根据对三相步进电机控制的要求,I/O配置及其接线图如图1所示。

二、程序设计三相步进电机的转速分慢速、中速和快速三档,分别通过开关S1、S2和S3选择;正反转控制通过开关S4选择;步数控制分单步、10步和100步三档,分别通过按钮SB、S6和S7选择。

图11、转速控制有脉冲发生器产生不同周期T的控制脉冲,通过脉冲控制器的选择,在通过三相六拍环形分配器使三个输出继电器Y0、Y1和Y2按照单双六拍的方式接通,其接通顺序为图2该过程对应于三相步进电机的通电顺序为图32、正反转控制通过正反转驱动环节(调换相序),改变Y0/Y1和Y2接通的顺序,以实现步进电机的正反转控制,即图4图53、步数控制通过脉冲计数器,控制六拍时序脉冲,以实现对步进电机步数的控制,三相步进电机控制的梯形图如图6所示。

三、调试运行程序将图6所示的梯形图换成程序写入plc的RAM,并调试运行程序。

图6 三相步进电机控制的梯形图续图61、转速控制选择慢速挡(接通S1),接通启动开关S0,脉冲控制器产生周期为1s的控制脉冲,使M0~M5的状态向右移位,产生六拍时序脉冲,并通过三相六拍环形分配器使Y0、Y1和Y2按照单双六拍的通电方式接通,步进电机开始慢速步进运行。

2、正反转控制先接通正反转开关S4,在重复上述转速控制操作。

3.步数控制先选择慢速挡(接通S1),在选择10步(接通S6),接通启动开关S0,六拍时序脉冲、三相六拍环形分配器开始工作,计数器开始计数。

当走完预订步数时,计数器动作,其常闭点断开移位驱动电路,六拍时序脉冲、三相六拍环形分配器及正反转驱动环节停止工作,步进电机停转。

三相步进电机驱动电路设计

三相步进电机驱动电路设计

三相步进电机驱动电路设计一、引言步进电机是一种将电脉冲信号转换为机械转动的电动机,具有结构简单、定位精度高、起动停止快的特点,被广泛应用于数控机床、机器人、自动化设备等领域。

本文将介绍三相步进电机驱动电路的设计。

二、驱动原理三相步进电机的驱动原理基于磁场交替作用的原理,通过控制电流的改变,使电机在不同的磁场中转动。

它分为两种驱动方式:全、半步进驱动。

全步进驱动方式中,步进电机每接收一个脉冲信号就转动一个步距,而在半步进驱动方式中,步进电机每接收一个脉冲信号就转动半个步距。

本文以全步进驱动为例进行设计。

三、电路设计1.电源电路:步进电机驱动电路需要一个稳定的直流电源,通常使用电容滤波器和稳压电路来提供稳定的电压输出,保证电机正常工作。

2.脉冲发生及控制电路:脉冲发生电路产生脉冲信号,用于控制步进电机的转动。

常用的发生电路有震荡电路和微处理器控制电路。

本文以震荡电路为例,通过计算电容充放电时间确定震荡频率。

3.驱动电路:驱动电路是步进电机的核心,它将脉冲信号转换为电流控制信号,控制步进电机的转动。

常用的驱动方式有双H桥驱动和高低电平驱动。

本文以双H桥驱动为例进行设计。

4.电流检测和反馈电路:为了控制步进电机的转速和转矩,需要对电机的电流进行检测和反馈。

常用的检测电路有电阻检测和霍尔效应检测。

通过检测电流大小,可以调节驱动电流,以达到控制步进电机的效果。

5.保护电路:为了保护步进电机和驱动电路的安全,需要设计相应的保护电路。

常见的保护电路有过流保护电路、过热保护电路和短路保护电路等。

四、总结本文介绍了三相步进电机驱动电路的设计。

通过合理设计电路,可以实现对步进电机的控制和保护,提高步进电机的运行效果和寿命。

未来,可以进一步研究和改进三相步进电机驱动电路的设计,以满足更高精度、更高速度的步进电机应用需求。

实验一三相异步电动机启停控制实验

实验一三相异步电动机启停控制实验

实验⼀三相异步电动机启停控制实验实验⼀三相异步电动机启停控制实验⼀、实验⽬的:1.进⼀步学习和掌握接触器以及其它控制元器件的结构、⼯作原理和使⽤⽅法;2.通过三相异步电动机的启、停控制电路的实验,进⼀步学习和掌握接触器控制电路的结构、⼯作原理。

⼆、实验内容及步骤:图1-1为三相异步电动机的基本启停电路。

电路的基本⼯作原理是:⾸先合上电源开关QF5 ,再按下“启动”按钮,KM5得电并⾃锁,主触头闭合,电动机得电运⾏。

按下“停⽌”按钮,KM5失电,主触头断开,电动机失电停⽌。

实验步骤:1.按图1-1完成控制电路的接线;2.经⽼师检查认可后才可进⾏下⾯操作!3.合上断路器QF5,观察电动机和接触器的⼯作状态;4.按下操作控制⾯板上“启动”按钮,观察接触器和电动机的⼯作状态;5.按下操作控制⾯板上“停⽌”按钮,观察接触器和电动机的⼯作状态。

6.当未合上断路器QF5时,进⾏4和5步操作,观察结果。

图 1-1 三相异步电动机基本启停控制三.实验说明及注意事项1.本实验中,主电路电压为380VAC,请注意安全。

四.实验⽤仪器⼯具三相异步电动机 1台断路器(QF5) 1个接触器(KM5) 1个按钮 2个实验导线若⼲五.实验前的准备预习实验报告,复习教材的相关章节。

六.实验报告要求1.记录实验中所⽤异步电动机的名牌数据;2.弄清QF5型号和功能;3.⽐较实验结果和电路⼯作原理的⼀致性;4.说明6步的实验结果并分析原因。

七.思考题1.控制回路的控制电压是多少?2.接触器是交流接触器,还是直流接触器?接触器的⼯作电压是多少3.如果将A点的连线改接在B点,电路是否能正常⼯作?为什么?4.控制电路是怎样实现短路保护和过载保护的?5.电动机为什么采⽤直接启动⽅法?实验⼆三相异步电动机正反转控制实验⼀、实验⽬的:1.学习和掌握PLC的实际操作和使⽤⽅法;2.学习和掌握利⽤PLC控制三相异步电动机正反转的⽅法。

⼆、实验内容及步骤:本实验采⽤PLC对三相异步电动机进⾏正反转控制,其主电路和控制电路接线图分别为图2-1和图2-2 。

51单片机实现三相六拍的步进电机控制(正反转、加减速、挡位显示)

51单片机实现三相六拍的步进电机控制(正反转、加减速、挡位显示)

51单片机实现三相六拍的步进电机控制(正反转、加减速、挡位显示)自己写的,不规范还望包含,keil和protues文件单片机源程序如下:1.#include <reg52.h>2.3.#define uchar unsigned char4.#define uint unsigned int5.uint speed = 100; //初始转速6.uint max = 200; //最慢转速7.uint min = 20; //最快转速8.9.sbit swich = P2^0; //总开关10.sbit dir = P2^1; //电机旋转方向11.sbit le1=P2^6;12.sbit le2=P2^7;13.sbit speedadd=P3^2;14.sbit speedsub=P3^3;15.16.unsigned char uca_MotorStep[]={0x01,0x03,0x02,0x06, 0x04,0x0C,0x08,0x09}; //励磁电流数组。

17.18.19.uchar leddata[]={20.21.0x3F, //"0"22.0x06, //"1"23.0x5B, //"2"24.0x4F, //"3"25.0x66, //"4"26.0x6D, //"5"27.0x7D, //"6"28.0x07, //"7"29.0x7F, //"8"30.0x6F, //"9"31.0x40, //"-"32.0x00, //熄灭33.};34.35.36.void delay1ms(void) //误差 0us37.{38.unsigned char a,b,c;39.for(c=1;c>0;c--)40.for(b=142;b>0;b--)41.for(a=2;a>0;a--);42.}43.44.void delay(uint x ) //多功能毫秒延时45.{46.uint i;47.for(i=0;i<x;i++)48.{49.delay1ms();50.}51.}52.53.54.55.void display(void)56.{57.if(swich==1)58.{59.P0= leddata[11];60.delay(1);61.le2=1;62.le1=1;63.delay(1);64.le2=0;65.le1=0;66.67.}68.else69.{70.if(dir==1)71.{72.P0= leddata[11];73.delay(1);74.le2=1;75.delay(1);76.le2=0;77.}78.else79.{80.P0 =leddata[10];81.delay(1);82.le2=1;83.delay(1);84.le2=0;85.}86.87.P0=leddata[9-(speed-20)/20];88.delay(30);89.le1=1;90.delay(5);91.le1=0;92.93.}94.}95.96.97.void Init_INT0()98.{99.EX0=1; //开启外部中断 0100.IT0=1; //设置成低电平触发,1为下降沿触发101.EX1=1; //开启外部中断 1102.IT1=1; //设置成低电平触发,1为下降沿触发103.EA=1; //开启总中断104.}105.106.void Interrupt0_handler() interrupt 0107.{108.EA=0; //首先关闭总中断,以消除按键出现的抖动所产生的干扰109.delay(20); //同样是为了消除抖动而产生新的中断110.if(speed>min)111.{speed=speed-20;} //限制最快转速112.else113.{speed=min;}114.while(speedadd==0);115.EA=1; //恢复中断116.}117.118.119.void Interrupt1_handler() interrupt 2120.{121.EA=0; //首先关闭总中断,以消除按键出现的抖动所产生的干扰122.delay(20); //同样是为了消除抖动而产生新的中断123.if(speed<max)124.{speed=speed+20;}125.else126.{speed=max;} //限制最慢转速127.while(speedsub==0);128.EA=1; //恢复中断130.131.void main()132.{133.int i; //初始化134.dir=1;135.le1=0;136.le2=0;137.138.139.start:140.if(swich==0)141.{Init_INT0();} //总开关开启,初始化中断,开始转动142.else143.{display(); goto start; }144.145.146.if(dir==1)147.seq:148.{149.while(1)150.{151.display();152.for (i=0; i<8; i++)153.{154.P1 = uca_MotorStep[i]; //取数据155.delay(speed); //调节转速156.}157.if(dir==0) //是否换向159.delay(5); // 换向延时160.goto oppo; //换向161.}162.if(swich==1) //总开关运行中关闭163.goto start; //等待开启164.165.}166.167.}168.else169.oppo:。

基于西门子s7-300 plc对三相步进电机的控制

基于西门子s7-300 plc对三相步进电机的控制

应用科技基于西门子s7—300PL C对三相步进电机的控制郭东平(杨凌职业技术学院,陕西杨凌712100)脯要]PL C简单易学,可靠性高。

步进电机是一种常用的机电执行元件,相应的驱动和控制电路对于其整银洼能起着非常重要的作用。

本文采用s7—300PL C实现对步进电机的驱动和控制,结构简单,可靠性高,成本低,实用性强,具有较高的通用性和应用推广价值。

[关镑司]PLC;控制器;步进电机步进电机是一种将电脉冲信号转换成直线位移或角位移的执行元件。

步进电机的输出位移量与输入脉冲个数成正比,其转速与单位时间内输入的脉冲数(即脉冲频率)成正比,其转向与脉冲分配到步进电机的各相绕组的相序有关。

所以只要控制指令脉冲的数量、频率及电机绕组通电的相序,便可控制步进电机的输出位移量、速度和转向。

步进电机具有较好的控制性能,其启动、停车、反转及其它任何运行方式的改变,都在少数脉冲内完成,且可获得较高的控制精度,因而得到了广泛的应用。

1可编程控制器可编程序控制器(Pr ogr am m abl e L o gi c Cont r ol l e r)简称P LC,作为一种工业控制计算机,具有模块化结构、配置灵活、高速的处理速度、精确的数据处理能力、多种控制功能、网络技术和优越的性价比等性能,是目前广泛应用的控制装置之一。

PLC对步进电机也具有良好的控制能力,利用其高速脉冲输出功能或运动控制功能,即可实现对步进电机的控制。

2步进电机控制的基本原理步进电机的基本控制包括转向控制和速度控制。

从结构上看,步进电机分为三相、四相、五相等类型,常用的是三相步进电机。

三相步进电机的工作方式有三相单三拍、三相双三拍和三相六拍3种。

2.1换相顺序的控制通电换相这一过程称为脉;中分配。

例如,三相步进电机在单三拍的工作方式下,其各相通电顺序为A—B—C—吸,通电控制脉冲必须严格按照这--N.序分别控制A、B、C相的通断。

三相双三拍的通电顺序为A B-+B C—C A—A B,三相六拍的通电顺序为A一徂B—+B—+B C—C—CA—峻。

单片机控制步进电机正反转的实际应用程序

单片机控制步进电机正反转的实际应用程序

单片机控制步进电机正反转的实际应用程序/*这是一个控制步进电机正反转的实际应用程序*//*选用的是三相步进电机驱动器,p14口线用做步进电机的脉冲控制*//*p13口线用做步进电机的方向控制。

p15,p16,p17是光耦开关量输入*//*信号端,p20,p21,p22,p23与x25045看门狗存储器相连*//*k7,k8键是设定步进电机转动速度参数的加减键*//*k9是启动运行键,按一下k9,步进电机开始运行,直到p17口线有信号输入才停止*/ /*k10是停止键,任何时候按下k10都将停止步进电机当前的运行*//*k11是步进运行键,按一下,步进电机动一下*//*k12键是反向运行键,按一下,步进电机开始反向运行,知道p15口线有信号才停止*/ /*如果p16口线有信号输入,则只有k12键才起作用,其它键都没反应。

*/START:do;$INCLUDE(REG51.DCL)DECLARE (addrl,n,I,j,ok,ds) byte; /*定义变量*/declare l(5) byte;declare (dat,data) byte at (30h);declare delay word;DECLARE ACO(11) BYTE CONSTANT (05h,9fh,23h,0bh,99h,49h,/*定义LED段码表*/ 41h,1fh,01h,09h,00h);declare si literally 'p21',sck literally 'p20'; /*X25045囗线定义*/declare so literally 'p22',cs literally 'p23';dog:procedure; /* 初始化看门狗x25045 */cs=1;call time(1);cs=0;call time(1);cs=1;end dog;run:procedure; /*步进电机运行脉冲输出程序*/if ok=1 thencall dog;do;p14=0;call time(1);p14=1;call time(1);end;end run;DISPLAY:PROCEDURE(L0,L10); /*显示子程序*/DECLARE (L0,L10) BYTE; /*定义显示二位*/n=L10;n=aco(n); /*十位数BCD码译成段码*/sbuf=n; /*十位数送164显示*/do while ti=0; /*等待发送结束*/call dog; /*看门狗定时器复位*/end;n=L0;n=aco(n);sbuf=n; /*个位数送164显示*/do while ti=0;call dog;end;end display;outbyt: procedure(da); /*向看门狗存储器写入一字节*/ declare (i,da) byte;j=da; /*将要写入的字节赋给临时变量J */do i=0 to 7; /*左移8位,送到口线si */sck=0;j=scl(j,1);si=cy;sck=1; /*每移一位数据,跟一个时钟信号*/end;end outbyt;inbyt: procedure; /* 从看门狗存储器读出一字节*/ declare (i,di) byte;j=0;do i=0 to 7;sck=1;sck=0;cy=so;j=scl(j,1); /*从看门狗存储器读出一字节送入临时变量j*/ end;dat=j;end inbyt;wrenable: procedure; /* 置看门狗写使能*/sck=0;cs=0;; /* write enable command */call outbyt(06h); /* x25045 写使能指令06h */cs=1;sck=0;end wrenable;wrdisable: procedure; /* 置看门狗写禁止*/sck=0;cs=0;; /* write disable command */call outbyt(04h);sck=0;cs=1;end wrdisable;wrregister: procedure; /* 写状态寄存器*/sck=0;cs=0;dat=01h; /* write register command */call outbyt(dat);; /* 00h--1.4S, 20h--200MS, 10h--600MS, 30h--disable Wdog */ call outbyt(00h); /* 设定看门狗定时时间*/;sck=0;cs=1;call time(200); /* wait to complete writting cycle */end wrregister;rdregister:procedure; /* 读看门狗状态寄存器*/sck=0;cs=0;; /* register read command */call outbyt(05h);call inbyt; /* status register read in <DAT> */sck=0;cs=1;end rdregister;wbyte:procedure; /* 看门狗存储器字节写入子程序*/ declare comm byte;sck=0;cs=0;comm=02h; /* 写指令02h */call outbyt(comm);call outbyt(addrl);call outbyt(dat); /* send one byte data to X25043 */cs=1;sck=0;call time(150);end wbyte;rbyte:procedure; /*看门狗存储器字节读出子程序*/declare comm byte;sck=0;cs=0;comm=03h; /* read command */call outbyt(comm);call outbyt(addrl);call inbyt; /* read one byte to <DAT> */sck=0;cs=1;end rbyte;incdata: procedure; /* 参数修改--"加"键处理子程序+ */if p10=0 then /* 如果K7键按下*/do;do while p10=0; /* 等待键松开有效*/call dog; /* 此处必需调用看门狗复位子程序("喂狗"),否则程序将被看门狗复位*/ end;data=data+1; /* 设定值+1 */if data>99 then data=1; /* 规定设定值的上限*/L(1)=data MOD 10; /*将设定值的十位数拆出来送给十位数显示变量L(1) */L(2)=data/10; /*将设定值的个位数拆出来送给个位数显示变量L(2) */call display(L(1),L(2)); /* 将改变后的设定值送164显示出来*/call time(200); /* 延时*/call dog;call time(200);call dog;call wrenable; /* 置存储器写使能*/addrl=00h; /* 置存储器地址*/dat=l(1);call wbyte; /* 将变量L(1)的值写入存储器00h位置*/call wrenable;addrl=01h;dat=l(2);call wbyte; /* 将变量L(2)的值写入存储器01h位置*/end;end incdata;decdata: PROCEDURE; /* 参数修改---"减"键处理子程序- */IF p11=0 THEN /* k8 键处理子程序*/do;do while p11=0;call dog;end;DATA=DATA-1; /* 设定值-1 */if data=0 then data=99;L(1)=data MOD 10;L(2)=data/10;call display(l(1),l(2));call dog;call time(200);call dog;call time(200);call dog;call wrenable;addrl=00h;dat=l(1);call wbyte;call wrenable;addrl=01h;dat=l(2);call wbyte;end;END decdata;starton: PROCEDURE; /* start */declare sd byte;if p12=0 THEN /* K9键处理子程序*/do;do while p12=0;call dog;end;if p17=0 then ok=0; /* 如果p17 口线上有信号输入,则运行标志置0 (停止运行)*/ p13=1; /* 置步进电机正向运转*/call time(200);call dog;do while ok=1; /* 当运行标志为1时,执行速度延时操作*/do sd= 0 to data; /* 根据设定值data的数值延时来确定步进电机运行时的脉冲给定速度*/call dog;end;end;END starton;step: PROCEDURE; /* step */declare sd byte;p13=1; /* 置步进电机正向运转*/call time(200);IF p33=0 THEN /* k11键处理子程序*/do;if p17=0 then ok=0; /* 如果p17上有信号输入,则停止运行*/do while p33=0;do sd= 0 to data; /* 调用延时,调整步进电机的运行速度*/call dog;call time(2);end;call run;call dog;end;end;ok=0;END step;back: PROCEDURE; /* 反向运行处理子程序*/declare sd byte;IF p34=0 THENdo;do while p34=0;call dog;end;if p15=0 then ok=0; /* 反向运行时,如果遇到p15上有信号输入,则停止步进电机运行*/ p13=0; /* 置步进电机反向运行*/call time(200);call dog;do while ok=1;do sd=0 to data; /*根据设定值调节步进电机的运行速度*/call dog;call time(2);end;call run;if (p15=0 or p32=0 ) then ok=0; /* p15 或p32 口线任意一个有信号输入,停止运行*/ end;end;END back;MAIN$PROGRAM: /* 初始化主程序*/ea=0; /* 关中断*/SCON=00h; /*置串口方式0 ,串行数据输出模式*/PCON=00h;tmod=11h;enable; /* 开中断(ea=1) */SCK=0;cs=1; /* 定义存储器口线初始状态*/call wrenable;call wrregister; /* 看门狗存储器初始化*/call wrenable;call dog;p2=0ffh; /* 初始化各个口线的状态*/p1=0ffh;ok=0;p14=1;p32=1;p33=1;p34=1;p13=1;ADDRL=00h; /* 上电复位后从存储器中读出设定的速度值*/CALL rbyte;l(1)=dat;addrl=01h;call rbyte;l(2)=dat;DATA=L(1)+L(2)*10; /*将读出的值合并成十进制,存入变量data中*/ /* 以下是主循环程序*/LOOP:IF p10=0 THEN CALL incdata; /* 检测各个按键是否有按下*/IF p11=0 THEN CALL decdata;if p12=0 thendo;ok=1;call starton;end;if p34=0 thendo;ok=1;call back;end;if p33=0 thendo;ok=1;call step;end;call dog;CALL DISPLAY(L(1),L(2)); /* 将设定值送164显示*/call dog;CALL TIME(100);call dog;GOTO LOOP;END START;。

三相单拍步进电机控制系统程序代码

三相单拍步进电机控制系统程序代码
while(bushu!=0)
{
unchar i.j:
for(i=0:<maichong:i++)
{
delay(10) //延时函数,控制电机速度
}
bushu--:
#define unchar unsigned char
sbit kai_key=P3^1; //开关,作锁功能
sbit zheng_key=P3^2; //正转
sbit fan_key=P3^3; //反转
sbit 18_key P1^0; //18步
}
/**********************************/
/********* 13 电信01 ***********/
/********* 杜强 ************/
/********* 赵金龙 *************/
#include <reg51.h>
for(k=125:k>0:k--):
}
void key()
{
//kaikey=shuo_key:
if(kai_key==0) //这里加关闭和,表示键盘锁打开。如果不闭合,表示上锁电机不转
else if(9_key==0) bushu=9:
else if(6_key==0) bushu=6:
else if(3_key==0) bushu=3:
else bushu=0:
uchar code table[]={0x01.0x02.0x04.0x02.0x01}:
//电机正反转I/O口的高低电平对应表
void delay(uchar i) //延时函数

三相混合式步进电机驱动器的设计原理和控制详解

三相混合式步进电机驱动器的设计原理和控制详解

上海昀研自动化科技有限公司自2004年起致力于三相混合式步进电机及驱动器的开发,42系列低压三相混合式步进电机,57系列低压、高压三相混合式步进电机,86系列低压、高压三相混合式步进电机,110、130系列高压三相混合式步进电机,YK3605MA,TK3411MA,YK3822MA,YKA3722MA等多款产品已成功应用于市场。

上海昀研自动化科技有限公司生产的三相混合式步进电机采用交流伺服原理工作,转子和定子的直径比高达50%,高速时工作扭矩大,低速时运行极其平稳,几乎无共振区。

其配套驱动器YK3822MA具有单相220V/50Hz输入,三相正弦输出,输出电流可设置,具有十细分和半流额定值60%功能;控制方式灵活,有“脉冲+方向控制”,也有“正转脉冲+反转脉冲”控制方式;有过热保护功能,因此使用起来十分的方便。

1.前言步进电机是一种开环伺服运动系统执行元件,以脉冲方式进行控制,输出角位移。

与交流伺服电机及直流伺服电机相比,其突出优点就是价格低廉,并且无积累误差。

但是,步进电机运行存在许多不足之处,如低频振荡、噪声大、分辨率不高等,又严重制约了步进电机的应用范围。

步进电机的运行性能与它的驱动器有密切的联系,可以通过驱动技术的改进来克服步进电机的缺点。

相对于其他的驱动方式,细分驱动方式不仅可以减小步进电机的步距角,提高分辨率,而且可以减少或消除低频振动,使电机运行更加平稳均匀。

总体来说,细分驱动的控制效果最好。

因为常用低端步进电机伺服系统没有编码器反馈,所以随着电机速度的升高其内部控制电流相应减小,从而造成丢步现象。

所以在速度和精度要求不高的领域,其应用非常广泛。

因为三相混合式步进电机比二相步进电机有更好的低速平稳性及输出力矩,所以三相混合式步进电机比二相步进电机有更好应用前景。

传统的三相混合式步进电机控制方法都是以硬件比较器完成,本文主要讲述使用DSP及空间矢量算法SVPWM来实现三相混合式步进电机控制。

三相混合式步进电机驱动器的设计原理和控制详解

三相混合式步进电机驱动器的设计原理和控制详解

三相混合式步进电机驱动器的设计原理和控制详解
设计原理:
三相混合式步进电机驱动器由电源、驱动电路和步进电机组成。

电源提供电流和电压给驱动电路,驱动电路控制步进电机的转动。

当接通电源后,驱动电路会根据输入的控制信号来控制电流的方向和大小,进而驱动步进电机的转动。

控制过程:
1.电源供电:将电源与驱动电路连接,给驱动电路提供电流和电压。

2.信号输入:通过外部控制器输入控制信号,可以使用开关、计算机等设备进行输入。

3.输出控制信号:根据输入的控制信号,驱动电路会根据信号的高低电平来确定电流的方向和大小,控制步进电机的转动。

4.驱动电机转动:驱动电路会控制三相电流进行相序交替流动,通过电流的大小和方向控制步进电机的转动角度。

5.反馈信号检测:在驱动过程中,可以通过传感器等设备采集步进电机的位置信息,反馈给控制器进行闭环控制。

6.控制调节:根据反馈信号对控制信号进行调节,实现更精确的控制和定位。

总结:
三相混合式步进电机驱动器的设计原理和控制过程主要是通过控制电流的方向和大小来驱动步进电机的转动。

整个过程需要电源供电、控制信
号输入、驱动电流输出、反馈信号检测和控制调节等步骤。

这种驱动器具有结构简单、控制精度高等优点,在自动化控制领域有广泛的应用。

步进电机控制原理

步进电机控制原理

直流电机调速
5.6 PWM控制-SCR硬件实现方法
5.6 直流电机控制
*关于频率和占空比的确定,对于 12M晶振,假定PWM输出频率为 1KHZ,这样定时中断次数 * *设定为C=100,即0.01MS中断一次, 则TH0=FF,TL0=F6;由于设定中断时 间为0.01ms,这样可以设定占空比 可从1-100变化。即0.01ms*100=1ms
void timer0(void) interrupt 1 using 2 { static uchar click= 0 ; /*中断次数计数器变量*/ TH0=V_TH0; /*恢复定时器初始值*/ TL0=V_TL0; ++click; if (click>=100) click=“0”; //click控制一个PWM周期的时长 if (click<=ZKB1) /*当小于占空比值时输出低电平,高于时 是高电平,从而实现占空比的调整*/ P1_3=0; else P1_3=1;
}
unsigned char ZKB; //ZKB为占空比调节变量
#void main (void) { init_sys(); ZKB1=40; /*占空比初始值设定*/ while(1) { if (!P1_1) //如果按了+键,增加占空比 { Delay5Ms(); if (!P1_1) { ZKB1++; } } if (!P1_2) //如果按了-键,减少占空比 { Delay5Ms(); if (!P1_2) { ZKB1--; } } /*对占空比值限定范围*/ if (ZKB1>99) ZKB1=1; if (ZKB1<1) ZKB1=99; }
AB 单片 机 DB CB

三相六拍步进电机控制系统设计

三相六拍步进电机控制系统设计

1 引言1.1课程设计任务和要求课程设计任务:设计一个三相步进电机控制系统,设计一个计算机步进电机程序控制系统,可以对步进电机的转速、转向以及位置进行控制。

通过设计,掌握步进电机的工作原理、掌握步进电机控制系统的设计原理、设计步骤,进一步提高综合运用知识的能力。

要求完成的主要任务:(1)设计接口电路和驱动电路,对步进电机进行控制。

(2)选择控制算法,编写控制程序,实现三相步进电机在六拍工作方式下先正转90度,然后再反转60度,要求其速度可调,转向可控。

(3)写出设计说明书。

课程任务要求:(1)查阅资料,确定设计方案(2)选择器件,设计硬件电路,并画出原理图和PCB图(3)画出流程图,编写控制程序(4)撰写课程设计说明书2 步进电机的概述2.1 步进电机的特点1)一般步进电机的精度为步进角的3-5%,且不累积。

2)步进电机外表允许的温度高。

步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。

3)步进电机的力矩会随转速的升高而下降。

当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。

在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。

4)步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。

步进电机有一个技术参数:空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。

在有负载的情况下,启动频率应更低。

如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。

2.2 步进电机的工作原理步进电机是一种用电脉冲进行控制 ,将电脉冲信号转换成相位移的电机,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度 ,脉冲的频率决定了电机运转的速度.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。

三相步进电机控制程序及电路

三相步进电机控制程序及电路

三相步进电机控制程序及电路概述三相步进电机是利用电子技术,通过不断地使电流按照一定规律改变来控制电机转动。

本文将介绍三相步进电机的控制程序,并详细讲解电路原理。

控制程序控制程序采用的是 Arduino 开发板,因为它易于编程和控制。

代码采用 C 语言实现,主要分为两部分:1.步进电机控制程序:该部分主要用于引脚配置和执行步进电机运动;2.事件驱动程序:该部分主要用于监测按键操作,以对步进电机执行不同的运动。

步进电机控制程序代码#define SPEED 50 //步进电机转速#define STEPS 6 //步进电机齿轮数目//定义步进电机引脚int stepPins[] = {8, 9, 10, 11};//定义步进电机步进方式数组(顺序为AB-BC-CD-DA)int stepSequence[][4] = {{HIGH, LOW, LOW, HIGH},{HIGH, HIGH, LOW, LOW},{LOW, HIGH, HIGH, LOW},{LOW, LOW, HIGH, HIGH}};void setup() {//设置步进电机引脚模式为输出for (int i = 0; i < 4; i++) {pinMode(stepPins[i], OUTPUT);}}void loop() {for (int j = 0; j < 2; j++) {//顺时针旋转for (int i = 0; i < STEPS * 4; i++) {int step = i % 4;for (int pin = 0; pin < 4; pin++) {digitalWrite(stepPins[pin], stepSequence[step][pin]);}delay(SPEED);}//逆时针旋转for (int i = STEPS * 4; i > 0; i--) {int step = i % 4;for (int pin = 0; pin < 4; pin++) {digitalWrite(stepPins[pin], stepSequence[step][pin]);}delay(SPEED);}}}事件驱动程序代码``` C #define BUTTON_PIN 2 //按键引脚 #define DEBOUNCE_DELAY 50 //防抖动延时//定义全局变量 bool clockwise = true; unsigned long debounceTimer = 0;void setup() { pinMode(BUTTON_PIN, INPUT); digitalWrite(BUTTON_PIN, HIGH); Serial.begin(9600); }void loop() { if (digitalRead(BUTTON_PIN) == LOW) { if (millis() - debounceTimer > DEBOUNCE_DELAY) { debounceTimer = millis(); clockwise= !clockwise; Serial.println(clockwise ?。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:三相步进电机控制系统的设计课程名称:Proteus学生姓名:刘卫东学生学号:系别:电子工程学院专业:通信工程年级:2012级任课教师:王丽电子工程学院制2015年4月三相步进电机控制系统的设计学生:刘卫东指导教师:王丽电子工程学院通信工程1 系统硬件介绍AT89C51单片机简介AT89C51是一种带4k字节闪烁可编程课擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

主要特性:(1)与MCS-51 兼容(2)4K字节可编程闪烁存储器(3)寿命:1000写/擦循环(4)数据保留时间:10年(5)全静态工作:0Hz-24Hz(6)三级程序存储器锁定(7)128*8位内部RAM(8)32可编程I/O线(9)两个16位定时器/计数器(10)5个中断源(11)可编程串行通道(12)低功耗的闲置和掉电模式(13)片内振荡器和时钟电路ULN2003A芯片介绍经常在以下电路中使用,作为:1、显示驱动2、继电器驱动3、照明灯驱动4、电磁阀驱动5、伺服电机、步进电机驱动等电路中。

基本参数:模块配置:7 NPN电压, Vceo:50V集电极直流电流:500mA直流电流增益hFE:1000工作温度范围:-20°C to +85°C封装类型:PDIP引脚数:16封装类型:DIP晶体管数:7表面安装器件:通孔安装器件标号:2003最大连续电流, Ic:500mA芯片标号:2003输入电压最大:30V输入类型:5V TTL CMOS输出电压最大:50V输出电流最大:0.6A通道数:72硬件电路设计总体的硬件设计(1)用K0-K2做为通电方式选择键,K0为单三拍,K1为双三拍,K2为三相六拍;设计一个单片机三相步进电机控制系统要求系统具有如下功能:(2)K3、K4分别为启动和方向控制;(3)正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮;(4)用4位LED显示工作步数。

根据设计要求用PROTEUS所做的硬件连线图如图1:图1 总体硬件连线三相步进电机控制电路2.2.1启/停控制、正/反转控制、工作模式控制电路分析原理图如图2所示;图2 按键控制图(1)K0-K2为工作模式控制开关,KO接电时,为步进电机单三拍工作模式;K1接电时,为步进电机双三拍工作模式;K2接电时,步进电机工作模式为三相六拍,(2)K3为启动/停止控制开关,控制整个系统的开启和关闭。

(3)K4为正转/反转控制开关,控制步进电机的转向。

(4)K5速度控制(快慢两档)。

2.2.2步进电机驱动电路将80C51的作为步进电机的输出控制口。

电路图如下所示:图3 步进电机的输出控制口LED显示电路2.3.1发光二极管显示电路用3个不同的发光二极管来作为指示灯,将接红灯,接黄灯,接绿灯,正转时红色指示灯亮,反转时黄色指示灯亮,不转时绿色指示灯亮。

图如下:图4 指示灯接线图2.3.2八段数码管显示电路由80C51的P0口取出显示码,从80C51的输出位选码,设计中我们主要用到4位显示步数既可。

原理图如下:图5 显示器接线图3程序设计流程图设计说明:首先复位单片机,然后从P3口读出开关状态,判断是否启动,没启动绿灯亮重新确认启动。

启动后再次读取P3口数据,判断工作方式并将对应的用来存储步进电机工作方式字的数组首地址值给q。

由口的双向开关来控制步进电机的正反转,如果是正转则红灯亮,反转则绿灯亮。

在电机每走一步后,步数记数加1,然后通过LED显示把工作步数显示出来。

再从P3口把状态信息读出来,与之前的P3口的状态信息进行比较。

如果状态信息没有改变,电机继续运行。

如果状态信息改变了,就需要重新返回程序的开端,对电机的运行状态进行判断,让电机重新以新的状态运行。

由此,开关的状态在电机每走一步都会查询一遍,做到实时地反映。

图6 总体流程图4 仿真结果与分析三相步进电机三种工作方式图7为步进电机工作在三相单三拍,此时K0,K3接高电平,K1,K2接低电平启动;图8为步进电机工作在三相双三拍,此时K1,K3接高电平,K0,K2接低电平;图9为步进电机工作在三相六拍,此时K0,K1接低电平,K2,K3接高电平;若K4接高电平则反转,低电平则正转;若K5接高电平速度快,接低电平速度慢。

这三种工作方式工作不同,三相单三拍时,通电顺序为A-B-C-A;三相双三拍时,通电顺序为AB-BC-CA-AB;三相六拍时,通电顺序为A-AB-B-BC-C-CA-A;以上通电方式是三种工作方式正转的情况,若要反转,则通电方式放过来即可。

图7步进电机工作在三相单三拍图8 步进电机工作在三相双三拍图9步进电机工作在三相六拍相步进电机启动和停止图15 为步进电机工作在启动状态,此时步进电机工作在三种方式之一,K3接高电平。

图10步进电机工作在启动状态图11为步进电机工作在停止状态,此时步进电机工作在三种方式之一,K3接低电平。

图11步进电机工作在停止状态三相步进电机正转和反转图12为三相步进电机工作在正转状态,此时K4接低电平。

图12为三相步进电机工作在正转状态图13为三相步进电机工作在反转状态,此时K4接高电平图13为三相步进电机工作在反转状态三相步进电机速度控制图14为三相步进电机处于快速度状态,此时K5接高电平。

图14为三相步进电机处于高速度状态图15为三相步进电机处于慢速度状态,此时K5接低电平图15为三相步进电机处于慢速度状态5总结经过一个星期的努力和付出,完成了本次<<proteus>>课程设计,通过本次课程设计提高了我的设计方案和分析问题的能力,加深了对理论知识的理解,做到了理论知识与实践的联系。

学会了Proteus这个仿真软件的运用,积累进行课程设计的经验。

首先通过本次课程设计,熟练地掌握了三相步进电机控制系统的设计,了解其工作原理,以及电路所用到一些芯片的工作状况,如80C51单片机芯片和ULN2003A驱动芯片以及7SEG-MPX4-CC四位共阴二极管显示器阴,熟悉了它们各自的特点和用途。

通过本次课程设计,对理论知识有了更深入的理解,感受到proteus的魅力。

其次,通过本次课程设计,大大提高了自己的动手能力和设计能力,加深对Proteus 软件功能的理解,学会用这个软件设计三相步进电机控制系统,将理论知识与实践相联系,为以后在学习和工作的发展打下一个良好的基础。

然后,通过该课程设计,初步理解了利用计算机控制技术进行三相步进电机控制系统的设计。

参考文献[1] 于海生编着.计算机控制技术[M].北京:机械工业出版社.2005.[2] 谭浩强编着.C程序设计(第三版)[M].北京:清华大学出版社.2008.[3] 彭虎、周佩琳编着.微机原理与接口技术[M]. 北京:电子工业出版社.2007.[4] 刘教瑜、曾勇编着.单片机原理与应用[M].武汉:武汉理工大学出版社.2008.[5] 顶明亮、唐前辉编着.51单片机应用设计与仿真:基于keil与proteus[M].北京:北京航空航天大学出版社.2009.[6] 徐安编着.微型计算机控制技术[M]. 北京:科学出版社. 2005.[7] 杨立编着.计算机控制与仿真技术[M]. 北京:中国水利水电出版社. 2006.[8] 彭旭昀编着.机电控制系统原理及工程应用[M].北京:机械工业出版社.2006.[9] 杨益强、李长虹编着.控制器件[M].北京:中国水利水电出版社.2005.附录:#include<>#include<>void delay1(void);void delay2(void);void display(int);int bs=0;int cishu;main(){char a,b,c,d,j,*q,done1[8]={0x01,0x02,0x04,0x00,0x01,0x04,0x02,0x00},done2[8]={0x03,0x06,0x05,0x00,0x03,0x05,0x06,0x00}, done3[14]={0x01,0x03,0x02,0x06,0x04,0x05,0x00,0x01,0x05,0x04,0x06,0x02, 0x03,0x00};P3=0x20; //口置1,绿灯亮,不工作delay1();L: a=P3;while(!(a&0x08)) //判断是否启动,若没启动则重新启动{ P3=0x20;a=P3;delay1();}a=P3; //判断工作模式if(a&0x01) //方式1模型q=done1;if(a&0x02) //方式2模型q=done2;if(a&0x04) //方式3模型q=done3;if(a&0x20)cishu=5;else cishu=50;if(a&0x10) //判断电机是否要正转{ P3=0x80; //口为1,电机正转,红灯亮b=0;}else{ P3=0x40; //口为,电机反转,黄灯亮if(a&0x04)b=7;else b=4;}d=b;while(1){ c=*(q+b); //判断电机步数是否走完if(c==0)b=d; //步数走完,电机重新再走else{ P1=c; //从P1输出电机控制信号b++;bs++; //总步数加1display(bs); //显示步数j=a;a=P3;if(a!=j) //判断P3口状态信号是否改变{ if(!(a&0x08))bs=0; //若为停止信号,总步数清零goto L; } //状态信号改变,返回到开始,重新对电机控制 }}}void delay1(){ int i,j;for(i=0;i<200;i++)for(j=0;j<300;j++);}void display(int n){unsigned chartab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};unsigned char i,k,t,num[4];num[0]=n%10; //将总步数的各位分别存在num数组中 num[1]=(n/10)%10;num[2]=(n/100)%10;num[3]=(n/1000)%10;for(t=0;t<cishu;t++) //扫描快慢指定次数次{ k=0x08; //位选码指向最左一位,第四位for(i=0;i<4;i++){ P2=k; //从P2口输入位选码P0=~(tab[num[i]]); //取出显示码,并从P0口输出显示码 k=k>>1; //求下一个位选码delay2();}}}void delay2(){ int i,j;for(i=0;i<10;i++)for(j=0;j<60;j++); }。

相关文档
最新文档