2019-10-10直流电机和步进电机

1.直流电机

1.1、什么是电机

将电能转化为动能的一种机械设备。

1.2、常见电机

(1)交流电机:两相、三相
(2)直流电机:永磁、励磁
(3)步进电机(精度低)、伺服电机(精度高)—— 用于精确控制

1.3、直流电详解

(1)外观
(2)接线(正负极接上即可)和工作原理
(3)直流电机的驱动问题:不能用IO口直接驱动(电流不足)

1.4、直流电机实验

(1)直流电机直接接在开发板的主板的VCC和GND引出接口上看电机是否转动,还可以调换VCC和GND看电机是否反转了。
(2)单片机的IO口是数字口,本身的驱动能力非常小(最多20mA级别),这个驱动能力是带不动电机的。
(3)一般单片机需要使用专门的驱动芯片来驱动电机。驱动芯片的作用就是把单片机的小电流的控制信号转成逻辑上相同的大电流的驱动源。这就是所谓的弱电控制强电。用电机驱动芯片来驱动直流电机,具体电路分析在后面。

#include <reg51.h>


sbit ALine  = P0^0;
sbit BLine  = P0^1;


void main(void)
{
    ALine = 1;
    BLine = 0;

    while (1);

}

2.步进电机理论

2.1、什么是步进电机

(1)外观
(2)功能特点
(3)操作接口(4、5、6线)

2.2、步距角:步长

(1)步进电机有一个固有步距角,这个参数和步进电机本身有关。
(2)步进电机一般情况下只能以固有步距角的整数倍来运动,这一个固有步距角的移动就叫一个节拍。
(3)步进电机还有个可以比固有步距角更小的运动方法,这种方法叫细分,有电机驱动器来支持的。
(4)相数:我们用的是两相电机(4线)。相数越多,控制精度越高。

2.3、极性

(1)单极性
(2)双极性(常用打印机:两相双极性四线式步进电机)

2.4、拍数

(1)单相四拍 A/ B A B/ 正转 B/ A B A/ 反转
正转的时序节拍反过来就是反转
四根线上的电平(轮到输入哪个拍,哪个拍就为1)
A A/ B B/
0 1 0 0 第1拍
0 0 1 0 第2拍
1 0 0 0 第3拍
0 0 0 1 第4拍
4个节拍加起来就是一个完整的周期,按照这个周期给步进电机供电,则步进电机就会转动1个步距角。
(2)双相四拍(动力强耗电量大) A/B AB AB/ A/B/ 正转
A/B AB AB/ A/B/
A A/ B B/
0 1 1 0 第1拍
1 0 1 0 第2拍
1 0 0 1 第3拍
0 1 0 1 第4拍
(3)半步八拍(将上面两种折中各取一个间隔) A/ A/B B AB A AB/ B/ A/B/

2.5、控制器和驱动器

(1)一套步进电机的系统需要三部分:控制器+驱动器+步进电机
控制器:提供控制信号
驱动器:提供驱动电流
步进电机:负责转动
(2)一般情况下:控制器就是单片机,驱动器一般是接在单片机的IO口上面的专用电机驱动芯片(比如TC1508S)
(3)控制器负责产生时序信号,驱动器负责将时序信号转成功率驱动信号给步进电机。

4.开发板原理图分析说明

4.1、原理图分析

(1)原理图中INA、INB、INC、IND将来要接单片机的IO口,单片机是做控制器的,通过单片机的IO口给驱动器芯片输入1或者0的控制信号,控制信号经过TC1117的转换,从OUTA、OUTB、OUTC、OUTD四个引脚输出具有驱动步进电机能力的驱动信号。
(2)接线:比如可以用P0端口的4个引脚(P0.0~P0.3)接INA、INB、INC、IND。
(3)输出端本来符号是OUTA、OUTB、OUTC、OUTD,但是开发板上实际丝印的符号是:A-、A+、B-、B+。所以这里面有个对应关系:OUTA对应A-、OUTB对应A+、OUTC对应B-、OUTD对应B+。
(4)丝印符号改变主要是为了对应步进电机上面的符号,让我们方便接线不会接错。
(5)结合之前讲的步进电机的原理:A-和A+是一个相线线圈的2端,B-和B+是另一个线圈。

4.2、电机驱动芯片数据手册

TC1508S(双通道直流马达驱动器)

5.步进电机编程实践1

5.1、接线

(1)P0端口的P0.0~P0.3接电机驱动芯片TC1508S的4个输入端
(2)TC1508S的4个输出端接步进电机(按照丝印符号相对应即可)
(3)根据上面的接线,实际得到的接线逻辑是:P0.0和P0.1对应一组线圈,而P0.2和P0.3对应另一组线圈。

5.2、单相四拍方式驱动

(1)时序编程 A/ B A B/

#include <reg51.h>

#define TIME  30                // 延时时间

sbit APositive  = P0^0;
sbit ANegative  = P0^1;
sbit BPositive  = P0^2;
sbit BNegative  = P0^3;

void delay(unsigned char i)
{
    unsigned char a, b;

    for (a=i; a>0; a--)
        for (b=240; b>0; b--);
}


void main(void)
{
    while (1)
    {
        // 循环内实现1个周期
        // 一个周期其实就是各个节拍依次排列构成的,注意节拍之间要延时

        // 单相4拍         A/ B A B/
        APositive = 0;
        ANegative = 1;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);

        APositive = 0;
        ANegative = 0;
        BPositive = 1;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);

        APositive = 1;
        ANegative = 0;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);

        APositive = 0;
        ANegative = 0;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 1;    // 两个0效果是一样的
        delay(TIME);

    }
}

(2)转速控制
转速是由脉冲信号的频率控制的,其实就是delay的时间。
(3)正转和反转

#include <reg51.h>


#define TIME  30                // 延时时间


sbit APositive  = P0^0;
sbit ANegative  = P0^1;
sbit BPositive  = P0^2;
sbit BNegative  = P0^3;


void delay(unsigned char i)
{
    unsigned char a, b;

    for (a=i; a>0; a--)
        for (b=240; b>0; b--);
}


void main(void)
{
    while (1)
    {
        // 循环内实现1个周期
        // 一个周期其实就是各个节拍依次排列构成的,注意节拍之间要延时

        // 反转   A/ B A B/
        APositive = 0;
        ANegative = 0;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 1;    // 两个0效果是一样的
        delay(TIME);

        APositive = 1;
        ANegative = 0;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);

        APositive = 0;
        ANegative = 0;
        BPositive = 1;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);

        APositive = 0;
        ANegative = 1;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);
    }
}

6.步进电机编程实践2

6.1、双相四拍方式驱动

#include <reg51.h>


#define TIME  30                // 延时时间


sbit APositive  = P1^0;
sbit ANegative  = P1^1;
sbit BPositive  = P1^2;
sbit BNegative  = P1^3;


void delay(unsigned char i)
{
    unsigned char a, b;

    for (a=i; a>0; a--)
        for (b=240; b>0; b--);
}


void main(void)
{
    while (1)
    {
        // 循环内实现1个周期
        // 一个周期其实就是各个节拍依次排列构成的,注意节拍之间要延时


        // 双相4拍     A/B  AB  AB/ A/B/
        APositive = 0;
        ANegative = 1;
        BPositive = 1;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);

        APositive = 1;
        ANegative = 0;
        BPositive = 1;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 0;    // 两个0效果是一样的
        delay(TIME);

        APositive = 1;
        ANegative = 0;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 1;    // 两个0效果是一样的
        delay(TIME);

        APositive = 0;
        ANegative = 1;
        BPositive = 0;    // B负和B正这两根线电平只要一样即可,两个1和 
        BNegative = 1;    // 两个0效果是一样的
        delay(TIME);
    
    }
}

6.2、半步八拍方式驱动

#include <reg51.h>


#define TIME  30                // 延时时间


sbit APositive  = P1^0;
sbit ANegative  = P1^1;
sbit BPositive  = P1^2;
sbit BNegative  = P1^3;


void delay(unsigned char i)
{
    unsigned char a, b;

    for (a=i; a>0; a--)
        for (b=240; b>0; b--);
}


void main(void)
{
    while (1)
    {
        // 循环内实现1个周期
        // 一个周期其实就是各个节拍依次排列构成的,注意节拍之间要延时

        // 半步8拍 A/  A/B  B  AB  A  AB/  B/  A/B/
        APositive = 0;
        ANegative = 1;
        BPositive = 0;    
        BNegative = 0;  
        delay(TIME);

        APositive = 0;
        ANegative = 1;
        BPositive = 1;    
        BNegative = 0;  
        delay(TIME);

        APositive = 0;
        ANegative = 0;
        BPositive = 1;    
        BNegative = 0;  
        delay(TIME);

        APositive = 1;
        ANegative = 0;
        BPositive = 1;    
        BNegative = 0;  
        delay(TIME);

            APositive = 1;
        ANegative = 0;
        BPositive = 0;    
        BNegative = 0;  
        delay(TIME);

        APositive = 1;
        ANegative = 0;
        BPositive = 0;    
        BNegative = 1;  
        delay(TIME);

        APositive = 0;
        ANegative = 0;
        BPositive = 0;    
        BNegative = 1;  
        delay(TIME);

        APositive = 0;
        ANegative = 1;
        BPositive = 0;    
        BNegative = 1;  
        delay(TIME);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容