51单片机学习笔记:步进电机控制,正转反转等

发布者:Xingfu6666最新更新时间:2017-02-19 来源: eefocus关键字: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  步距角表示法

以上都是网上搜到的,整理了下,有不对的敬请指出,谢谢.

---------------------------------------------------------

 




 

我手上用到的步进电机

 

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代码  收藏代码

  1. #include "my51.h"  

  2.   

  3. //4相8拍  

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

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

  6.   

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

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

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

  10.   

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

  12. {     

  13.     u8 i,j;  

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

  15.     {  

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

  17.         {  

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

  19.         }  

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

  21.         {  

  22.             P1=tableCCW[i];  

  23.             delayms(2);      //调节转速  

  24.         }  

  25.     }  

  26. }  

  27.   

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

  29. {  

  30.     u8 i,j;  

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

  32.     {  

  33.         if(S5==0)  

  34.         {  

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

  36.         }  

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

  38.         {  

  39.             P1=tableCW[i];  

  40.             delayms(2);     //调节转速  

  41.         }  

  42.     }  

  43. }  

  44.   

  45.   

  46. void main()  

  47. {  

  48.     u8 r;  

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

  50.     P1=0xff; _nop_();     

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

  52.     while(1)  

  53.     {  

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

  55.         {  

  56.             for(r=0;r

  57.             {  

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

  59.                 if(S5==0)  

  60.                 {  

  61.                    break;         //俺S5键立马停止  

  62.                 }  

  63.             }  

  64.         }  

  65.         else if(S4==0)  

  66.         {  

  67.             for(r=0;r

  68.             {  

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

  70.                 if(S5==0)  

  71.                 {  

  72.                     break;  

  73.                 }  

  74.             }  

  75.         }  

  76.         else  

  77.         {  

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

  79.         }  

  80.     }  

  81. }  

 

 


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

上一篇:51单片机学习笔记:写了个led宏,并尝试控制led灯的亮度
下一篇:51单片机学习笔记:连续读写STC89C52RC内部EEPROM存储器

推荐阅读最新更新时间: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)
[单片机]
<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