找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2258|回复: 5
打印 上一主题 下一主题
收起左侧

求大神指点步进电机控制

[复制链接]
跳转到指定楼层
楼主
要求两个步进电机同时运行,启停,可正反转,可加减速。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:111634 发表于 2017-9-18 19:32 | 只看该作者
本帖最后由 zl2168 于 2017-9-18 19:42 编辑

实例98  驱动四相步进电机
Proteus仿真一下,确认有效
实例98 四相步进电机.rar (35.83 KB, 下载次数: 7)

。以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
回复

使用道具 举报

板凳
ID:215629 发表于 2017-9-18 20:30 | 只看该作者
把两个电机写到同一个函数比如
回复

使用道具 举报

地板
ID:215629 发表于 2017-9-18 20:33 | 只看该作者
把两个电机写到同一个函数里
比如
void dianji ()
{
moto1=1
moto2=1
moto1=0
moto2=0
....
}
把脉冲写进去
回复

使用道具 举报

5#
ID:60379 发表于 2017-9-18 21:06 | 只看该作者
以下内容来源于《51单片机轻松入门 基于STC15W4K系列》,只要把这章内容搞懂后想怎么控制就怎么控制。
第15章  步进 电 机 测 试
15.1 步进电机特点
步进电机也称为步进马达,相比其它电机有以下特点:
① 步进电机旋转角度和输入脉冲成正比,通常市面所售步进电机说明书会说明其步进角(也就是一个脉冲所产生的旋转角度),比如常见的小体积永磁式电机的步进角是7.5°,则送给它48个脉冲使步进电机正好转动一圈。
② 步进电机误差很小,没有累积误差,因此控制步进电机正反转还是会回到原来的位置,不会因为误差累积而使初始位置越来越远。
③ 具有自保持特性,任何一相线圈加上电源后,电机本身具有自保持力矩,不送脉冲情况下会停止在一定位置,不会改变。
④ 步进电机空载最高启动频率一般能达到450Hz,使用频率不能超过允许最高频率,否则电机只能振动,无法运转。
⑤ 常见步进电机供电电压是5V、12V、24V,供电电压允许误差±10%,电机外壳上一般都会对供电电压规格作相应标识。
常见步进电机外形与内部电路如图15-1所示。




15.4 步进电机驱动实例
例15.1  步进电机正反转测试,使用图15-7或图15-8的电路,采用1-2相励磁,要求上电后顺转200步,然后反转200步,如此循环,完整实验代码如下。
// 使用P20、P21、P22、P23口驱动电机
#include "STC15W4K.H "
unsigned char codeBiaoGe[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09};
                    //表格,换算成二进制 1000,1100,0100,0110 ,0010,0011, 0001 1001
                    //P2口输出低4位驱动电机   A  B /A  /B     
                    //1——2相励磁,发8次脉冲(顺序输出上面表格)转动4步
void PROT_Init(void)
{   
    P2M1 =0x80;     // 1000 0000   P2.0、P2.1、P2.2、P2.3、接驱动功率管,推挽输出
    P2M0 = 0x0f;     // 0000 1111   P2.7 接接霍尔传感器信号输入,高阻输入
}
void shun200()                 // 顺转200步
{
    unsigned int i;
    unsigned charn;
    n=0;
    for(i=0;i<400;i++)         // 200步,i/2为实际步数
    {   
        P2=BiaoGe[n]|0xf0;     // 不影响P2口高4位     
        delay3ms();
        n=n+1;  
        if (n>7)
        {              
            n=0;
        }           
    }
    P2&=0xf0;                    // 保证电机绕组断电
}
void fan200()                    // 反转200步
{
    unsigned int i;
    unsigned charn;
    n=8;            
    for(i=0;i<400;i++)            // 200步,i/2为实际步数
    {   
        n=n-1;      
        P2=BiaoGe[n]|0xF0;        //不影响P2口高4位         
        delay3ms();
        if (n==0)
        {               
            n=8;
        }           
    }
    P2&=0xf0;                     // 保证电机绕组断电   
}
void main(void)                    
{           
    PROT_Init();                 // 初始化端口
    while(1)
    {
        shun200();
        delay1s();
        fan200();
        delay1s();
    }   
}



回复

使用道具 举报

6#
ID:231508 发表于 2017-9-19 10:50 | 只看该作者
电路相同,时序相同。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表