51单片机的步进电机控制,正转反转等

发布者:静心悠然最新更新时间:2017-07-09 来源: 21ic关键字:51单片机  步进电机控制  正转反转 手机看文章 扫描二维码
随时随地手机看文章

步进电机应用广泛,

例如打印机、磁盘驱动器、玩具、汽车雨刷、手机震动、机械夹具、刻录机等各种机械控制场合

一些概念:

拍数N

定子控制绕组每改变一次通电方式,即为一拍

一个磁场通电周期是 A-B-C-D-A

完成一个磁场周期性变化所需脉冲数,

也指电机转过一个齿距角所需脉冲数,用N表示

拍数又等于相数的1倍或2倍,

以四相电机为例,

有4相4拍, A-B-C-D-A...

4相8拍, A-AB-B-BC-C-CD-D-DA-A...

齿距角θz

一个通电循环周期(比如4拍)转子转过一个齿距角

齿距角又等于360除以转子齿数Z, θz=360/Z

步距角θs

步距角,即在没有减速齿轮的情况下,对于一个脉冲信号,转子所转过的机械角度.

也就是说,每一拍转子转过的角度称之为步距角,通常用θs表示

θs=齿距角/拍数

θs=360/(N*Z)

步距角的误差不会长期积累,只与输入脉冲信号数相对应,

可以组成结构较为简单而又具有一定精度的开环控制系统,

也可以在要求更高精度时组成闭环系统。

转速X

每分钟电机转了多少转?设脉冲频率f

一个脉冲,转子转过角度为1/(ZN),

X=60*f/(ZN) 拍数与齿数表示法

=(f*θs)/6 步距角表示法

20170219114617305.png

20170219114616825.png

24BYJ48-5v 减速永磁步进电机

功能特点:

采用ULN2003驱动,使用方便,带齿轮减速,噪音低,运转平稳,5V即可驱动,

器件参数:

1.额定电压:5-10V DC

2.直流电阻:60Ω±7%(25℃).

3.减速比:1/64

4.步距角:5.625°*(1/64), 含减速比

5.驱动方式:4相8拍

6.牵入转距:≥350gf.cm(工作频率:100PPS)

7.打滑扭力:800~1300gf.cm

8.温升:≤55K(5VDC 工作频率:100PPS)

9.噪音:≤35dB(空载,100PPS,水平距马达10cm)

10.绝缘耐压:600V AC/1秒

11.引线拉力强度:1Kgf/条

12.接线方式:5线4相

1.VCC 红色

2.A 橙色

3.B 黄色

4.C 粉色

5.D 蓝色

============================================================

C代码

#include "my51.h"

//4相8拍

u8 code tableCCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆时针旋转相序表

u8 code tableCW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //顺时针旋转相序表

sbit S3=P3^5; //反转 按键

sbit S4=P3^6; //正转 按键

sbit S5=P3^4; //停止 按键

void motorTurn_ccw() //转1圈,逆时针

{

u8 i,j;

for(j=0;j<8;j++) //电机内部的转子旋转一周

{

if(S5==0) //按键没处理抖动

{

break; //如果停止键按下,退出此循环

}

for(i=0;i<8;i++) //旋转45度, 8*5.625°=45°

{

P1=tableCCW[i];

delayms(2); //调节转速

}

}

}

void motorTurn_cw() //转1圈 ,顺时针

{

u8 i,j;

for(j=0;j<8;j++) //8*45°=360°

{

if(S5==0)

{

break; //如果停止键按下,退出此循环

}

for(i=0;i<8;i++) //旋转45度,8*5.625°=45°

{

P1=tableCW[i];

delayms(2); //调节转速

}

}

}

void main()

{

u8 r;

u8 N=64; //减速步进电机,减速比1/64,所以N=64时,步进电机外主轴转一圈

P1=0xff; _nop_();

ledLock= LOCK; //我们的P1口接有8个led灯,先锁定,不要让它们亮 ,节能环保

while(1)

{

if(S3==0) //按键了

{

for(r=0;r

{

motorTurn_ccw(); //电机逆时针转

if(S5==0)

{

break; //俺S5键立马停止

}

}

}

else if(S4==0)

{

for(r=0;r

{

motorTurn_cw(); //电机顺时针转

if(S5==0)

{

break;

}

}

}

else

{

P1=0xf0; //平时也是停止的

}

}

}


关键字:51单片机  步进电机控制  正转反转 引用地址:51单片机的步进电机控制,正转反转等

上一篇:利用51单片机使用DS1302芯片制作电子钟
下一篇:浅谈单片机中C语言与汇编语言的转换

推荐阅读最新更新时间:2024-03-16 15:35

利用51单片机做一个简易时钟
利用独立键盘,数码管完成一个简易的时钟,按键一可以修改时间,按键二可以设置闹钟,按键三进行加一操作,按键四进行减一操作。 主函数: void main() { bsp_init(); while(1) { TimeTim(); //正常时间在走 bsp_KeyScan(); //键盘扫描看哪个功能键被按下 bsp_KeyProc(keyvalue); //根据键值进行相应的功能处理 SetValueShow(); //数码管上显示的值 ShowSegCC(); //显示在数码管上 bsp_CheckAlarm(); /
[单片机]
51单片机一氧化碳CO浓度报警器设计
基于51单片机的CO浓度报警器设计,实际测试成功。MQ系列气体传感器通用! 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 制作出来的实物图如下: 一氧化碳CO报警器元件清单 1) 9*15万用板 2) STC89C51单片机 3) ADC0809 4) 28脚IC座 5) 40脚IC座 6) 1602液晶 7) 16p母座 8) 16p排针 9) 3p排针 10) 7*7风扇 11) MQ-7烟雾传感器 12) 5v继电器(黄/蓝) 13) 2.2k电阻*3 14) 1.5k电阻 15) 1k电阻*2 16) 5.1Ω电阻 17) 导线、焊锡 17) 220Ω电阻 18)
[单片机]
<font color='red'>51单片机</font>一氧化碳CO浓度报警器设计
51单片机的直接寻址与间接寻址
指令中直接给出操作数地址(dir)的寻址方式称为直接寻址。寻址对象为:1 内部数据存储器,在指令中以直接地址表示;2特殊功能寄存器SFR,在指令中用寄存器名称表示。 以寄存器中的内容为地址,该地址的内容为操作数的寻址方式称为寄存器间接寻址。能够进行寄存器间接寻址的寄存器有:R0、R1、DPTR,用前面加@表示,如@R0、@R1、@DPTR。寄存器间接寻址的存储空间包括内部数据存储器和外部数据存储器。由于内部数据存储器共有128字节,因此用一字节的R0和R1可间接寻址整个空间。而外部数据存储器最大可达64K,仅R0或R1无法寻址整个空间,为此需要由P2端口提供外部RAM高8位地址,由R0或R1提供低8位地址,由此共同寻址64K字
[单片机]
51单片机超声波测距学习板的基本原理
  1.功能      超声波测距学习板可应用于汽车倒车、建筑施工工地以及一些工业现场的位置监控,也可用于如液位、井深、管道长度的测量等场合。要求测量范围在0-27~4.00m,测量精度1cm,测量时与被测物体无直接接触。能够清晰稳定地显示测量结果。   2.基本原理      超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波本时,将压迫压电晶片作振动,将机械能转换为电信号,就成为超声波接收器。在超声探测电路中,发射端得到输出脉冲为一系列方波,其宽度为发射超声的时间间隔,
[单片机]
Printf在51单片机的使用方法
实验名称:串口通信之单片机和PC计算梯形面积 MCU型号:STC12C5A60S2(12T模式) 晶振 :11.0592MHZ 实验内容:利用单片机和PC机串口通信的工作方式1(波特率可变),(已经晶振为11.0592MHZ)设置波特率为9600B/S,结合定时器1的工作方式2(TH1=0xfd,TL1=0xfd),输入梯形的上底、下底、高,输出梯形面积 效果图: 参考程序: /* 文件名:串口通信值单片机和PC机计算梯形面积.c 创建人:杨瑞 创建时间:2013年2月20日 开发环境:HOT51增强型单片机开发板 程序功用:利用单片机与PC机的串口通信,计算梯形面积 附:利用单片机和PC机的串口通信的工作方式1(波特率可变)
[单片机]
Printf在<font color='red'>51单片机</font>的使用方法
51单片机矩阵键盘的编程
C51单片机上的外设键盘键是使用的矩阵方式扩展的,但是硬件仿真时必须把蜂民器的开关打开触使行扫描的74HC53的E端接地为输出型,否则测死了也没反应,我还以为是我的程序有问题呢,后来才找到的。 其原理 74HC138译码器在输出端Y1与WR(P3^6)都处于低电平通过或非门,转化成行扫描的74HC53的片选端打开写入数据,在输出端的高4位通过移位方式输出到外设键盘中。然后给WR一个高电平来给74HC53一个低电平使得输入无效进行锁存操作。然后通过RD(P3^7)与Y2共同输出低电平通过或非门加上个非门把低电平送到列扫描的74HC53的片选端E上,在读取数据前必须先将要获取的高4位进行置1,然后读取高4位数据,通过RD送出高电平进行
[单片机]
两种方法教你如何有效地利用51单片机产生PWM波
89C51芯片没有自带PWM发生器,如果要用51来产生PWM波就必须要用软件编程的方法来模拟。方法大概可以分为软件延时和定时器产生两种方法。下面将逐一介绍。 1 软件延时法 利用软件延时函数,控制电平持续的时间,达到模拟pwm的效果。 程序如下: #include sbit pwm=P1^0; main() { while(1) { pwm=1; delayus(60);//置高电平后延时60us,占空比60% pwm=0; delayus(40); } } void delayus(uint x) { while(x--); } proteus软件仿真结果如下: 可见,用这种延时函数的方法就能简单地模拟出pwm输出。
[单片机]
两种方法教你如何有效地利用<font color='red'>51单片机</font>产生PWM波
C51单片机浮点数运算
第一,不知道你zhi的a和b是什么类型dao的,如果是定义成浮点型,那么,可以这样写: float f_Div = a/b; 如果两个有一个是整形的,那么,把整型强制转换成浮点型: float f_Div = (float)a/(float)b; 注意,那个f_Div变量必须是float型,才能有小数产生 第二,你要进行显示,肯定要把各个位都取出来,这里面肯定有一个取模运算,就是 % , 对于浮点型,不运行取模运算的,所以,你必须把浮点型转换成整型,但是,不能强制转换, 比如: unsigned int I_Div = (unsigned int)f_Div;这是不可以的,你的小数部分就没有了. 所以,你必须要放大一定的倍数,根据
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved