导航:首页 > 操作系统 > 基于51单片机的步进电机控制

基于51单片机的步进电机控制

发布时间:2023-11-20 17:36:32

㈠ 51单片机,步进电机怎么实现循环正反转

以下程序是我在实验中自己编写的,几乎全部都有详细注释,相信学过单片机的同学完全可以轻易读懂。
读者可进行一些修改,比如我使用的都是跳转指令,在进入加减速循环中读者完全可以改成调用指令。电机速度也可修改为无上下限。
并且判断按键过程也可有自己的方法,我的判断按下松开可能会比较麻烦。
数表中我设置的是每个脉冲转过9°,大家也可按照实际需要修改自己的数表。
这个程序我是参考了《单片机实用系统设计与仿真经典实例》(主编:周景润 刘晓霞)的P25,读者有兴趣可以去图书馆借阅此书。

ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV 30H,#05H ;加减速速度控制,控制延时循环次数(初值)
MOV DPTR,#TAB1 ;查表法对P2赋值
MOV R0,#03H ;P2初值
MOV R4,#00H ;查表指针值
MOV P2,R0 ;赋值
WAIT: MOV P0,#0FFH ;P0需先输出一个1才可输入
JNB P0.0,SONG3 ;检测按键是否按下,SONG的意思是按键是否松开,否则程序会混乱
JNB P0.1,SONG4 ;程序中SONG均是上述意思
SJMP WAIT ;如果不按键就不启动
SONG3: JB P0.0,ZHENG ;进入正转
SJMP SONG3 ;
SONG4: JB P0.1,FAN ;进入反转
SJMP SONG4 ;
ZHENG: MOV R4,#01H ;开始查表
LOOP1: JB P0.1,YUNXING1 ;检测是否要反转,如果未按反转键就正常运行
SONG1: JNB P0.1,FAN ;按下反转松开后进入反转
SJMP SONG1 ;
YUNXING1:MOV A,R4 ;查表
MOVC A,@A+DPTR ;
MOV P2,A ;
ACALL DELAY ;进入延时程序控制电机速度
JB P0.3,COOL1 ;检测是否按下减速按键,如果未按下再检测是否按下加速按键
SONG5: JNB P0.3,DOWN1 ;按下后进入延时程序中修改循环次数
SJMP SONG5 ;
COOL1: JB P0.2,NOMAL1 ;检测是否按下加速按键,未按下就正常运行
SONG6: JNB P0.2,UP1 ;按下加速键进入延时程序中修改循环次数
SJMP SONG6 ;
NOMAL1: INC R4 ;查下一个数据
CJNE R4,#09H ,LOOP1;表中数据查完一遍后将R4值复位,如未查完就不复位R4
SJMP ZHENG ;使正转循环
FAN: MOV R4,#07H ;反转R4初值
LOOP2: JB P0.0,YUNXING2 ;检测是否按下正转按键,如未按下正常运行反转程序
SONG2: JNB P0.0,ZHENG ;按下正转后松开按键进入正转程序
SJMP SONG2 ;
YUNXING2:MOV A,R4 ;开始查表
MOVC A,@A+DPTR ;
MOV P2,A ;
ACALL DELAY ;进入延时程序控制电机速度
JB P0.3,COOL2 ;检测是否按下减速按键如未按下就检测是否按下加速按键
SONG7: JNB P0.3,DOWN2 ;按下后进入延时程序中修改循环次数
SJMP SONG7 ;
COOL2: JB P0.2,NOMAL2 ;检测是否按下加速按键,未按下就正常运行
SONG8: JNB P0.2,UP2 ;按下后进入延时程序中修改循环次数
SJMP SONG8 ;
NOMAL2: DEC R4 ;循环查表
CJNE R4,#00H,LOOP2 ;数据查完一遍后复位重新查
SJMP FAN ;反转循环
DELAY: MOV R6,#05H ;
DD1: MOV R5,#080H ;
DD2: MOV R7,#05H ;
DD3: DJNZ R7,DD3 ;
DJNZ R5,DD2 ;
DJNZ R6,DD1 ;固定延时
DJNZ R1,DELAY ;通过改变延时程序的循环次数来控制电机速度
SPEED: MOV R1,30H ;每次循环都将速度值放在R1中
SJMP BACK ;
DOWN1: INC 30H ;速度减,因为循环次数+1
CJNE R1,#10H,NOMAL1;速度下限10,如果不到10可继续减速
MOV 30H,#10H ;如果达到下限,无法减速,始终是10
SJMP NOMAL1 ;返回正转循环中
UP1: DEC 30H ;速度加,因为循环次数-1
CJNE R1,#01H,NOMAL1;速度上限1,如果不到1可继续加速
MOV 30H,#01H ;如果速度到达上限,不可再加速,始终是1
SJMP NOMAL1 ;返回正转循环
DOWN2: INC 30H ;速度减,因为循环次数+1
CJNE R1,#10H,NOMAL2;速度下限10,如果不到10可继续减速
MOV 30H,#10H ;如果达到下限,无法减速,始终是10
SJMP NOMAL2 ;返回反转循环中
UP2: DEC 30H ;速度加,因为循环次数-1
CJNE R1,#01H,NOMAL2;速度上限1,如果不到1可继续加速
MOV 30H,#01H ;如果速度到达上限,不可再加速,始终是1
SJMP NOMAL2 ;返回反转循环中
BACK: RET ;延时子程序返回
TAB1: DB 00H,02H,06H,04H
DB 0CH,08H,09H,01H,03H ;控制各项通电顺序的数值表
END ;结束

㈡ 51单片机控制电机转速

前天帮别人做了一个,还可以显示当前速度,和设置的速度, 4X4键盘(16个按键),设置速度可直接输入,有正转,反转,启动,停止,和加速,减速功能



㈢ 如何实现51单片机控制四个步进电机工作

最好是使用单片机+专用运动控制芯片来做,毕竟单片机程序是按顺序的,很难各自独立,带上专用芯片就不一样了,可以独立控制,互不干扰,比如hmc8043,用起来很方便

㈣ 如何用51单片机控制4个步进电机同时工作

可以使用51单片机加一片专用运动控制芯片,比如hmc8045,51单片机发送四路同步控制的指令给专用芯片,由专用芯片控制电机同步,单片机只要等运动到位以后再发下一个指令就可以了

㈤ 51单片机步进电机正反转程序

单片机控制步进电机,我想你说的是两相步进电机,一般是控制其相序分配的顺逆从而控制正反转,一般而言,步进电机相序分配你可以做成一个数组比如step[]={0x03,0x06,0x0c,0x09},这样来说可以假设P0口是步进电机控制口,那么可以按如下方式来控制: while(1) { for(i=0;i<4;i++) { if(fx==1)P0=step[i]; //正向 else P0=step[3-i]; //反向 delay(x); //x大小决定电机速度。
根据电机相数买个驱动器。然后用单片机产生脉冲来控制电机的转动以及正反转。单片机产生脉冲的方法和单片机控制流水灯是一样的。ULN2003D 是驱动步进电机的驱动芯片,主要是匹配电机所需的电流。 由于是四相电机,步进电机之所以可以转动就需要给相绕组提供连续的脉冲,所以需要4个端口来控制四相绕组的工作状态(P15应该是不需要的),具体的编码要看电机的拍数; 一旦明白这些,你就可以很容易编写代码来控制电机的转动了,还有在脉冲间你可以设置不同的延时时间来调节电机的转速。

㈥ 单片机控制步进电动机的运动的原理及单片机程序

51单片步进电机控制原理与控制设计程序
51单片步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。步进电机可分为反应式步进电机(简称vr)、永磁式步进电机(简称pm)和混合式步进电机(简称hb)。
51单片步进电机区别于其他控制电机的最大特点是,它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
51单片步进电机的驱动电路根据控制信号工作,控制信号由单片机产生。其基本原理作用如下:
(1)控制换相顺序
通电换相这一过程称为脉冲分配。例如:三相步进电机的三拍工作方式,其各相通电顺序为a-b-c-d,通电控制脉冲必须严格按照这一顺序分别控制a,b,c,d相的通断。
(2)控制步51单片进电机的转向
如果给定工作方式正序换相通电,步进电机正转,如果按反序通电换相,则电机就反转。
(3)控制51单片步进电机的速度
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整单片机发出的脉冲频率,就可以对步进电机进行调速。步进电机是机电控制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

㈦ 51单片机可以直接驱动步进电机么

51单片机不能直接驱动步进电机,因为单片机的输出的是数字信号,不是驱动电流,所以需要外加驱动,舵机是可以通过单片机直接控制的PWM控制。
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中

阅读全文

与基于51单片机的步进电机控制相关的资料

热点内容
python查找相似图片的代码 浏览:331
赵丽pdf 浏览:656
如何苹果手机app不要自动更新 浏览:977
pythonflask路线教程 浏览:256
程序员职业有哪些好处 浏览:711
大都会软件app如何扫码 浏览:436
单片机0x38 浏览:756
程序员浪漫工作 浏览:329
php几分钟前 浏览:308
项目编译及运行 浏览:894
程序员的基本功 浏览:522
遗传算法排班 浏览:289
如何加密金融安全网 浏览:30
家里的wifi太卡了怎么样自己加密 浏览:233
华为链路聚合命令 浏览:426
apache自动运行php 浏览:519
485和单片机 浏览:975
xp修复系统命令 浏览:520
微你app怎么加好友 浏览:796
程序员转正 浏览:211