步进电机应用广泛,
例如打印机、磁盘驱动器、玩具、汽车雨刷、手机震动、机械夹具、刻录机等各种机械控制场合
一些概念:
拍数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 步距角表示法
以上都是网上搜到的,整理了下,有不对的敬请指出,谢谢.
---------------------------------------------------------
我手上用到的步进电机
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单片机学习笔记:步进电机控制,正转反转等
推荐阅读最新更新时间:2024-03-16 15:33
利用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)
[单片机]
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(波特率可变)
[单片机]
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输出。
[单片机]
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;这是不可以的,你的小数部分就没有了. 所以,你必须要放大一定的倍数,根据
[单片机]