传感器系列之3.2直流电机

3.2 直流电机实验

###一、实验目的
  1. 掌握LPC2378芯片的编程方法
  2. 了解直流电机的工作原理
  3. 掌握直流电机的使用过程
###二、实验材料
  1. 具有串口通讯的电脑一台
  2. ADS1.2开发环境
  3. J-Link-ARM仿真器一个
  4. NXP LPC2378实验节点板1个
  5. 直流电机模块一个
  6. LCD显示实验板1个
###三、实验原理

  直流电机实验环境由PC机(安装有Windows XP操作系统、ADS1.2集成开发环境和J-Link-ARM-V410i仿真器)、J-Link-ARM仿真器、NXP LPC2378实验节点板、直流电机实验模块和LCD显示实验模块组成,如图3.2.1所示。

这里写图片描述
图3.2.1 传感器实验环境

1.直流电机的结构和工作原理

  如图3.2.2所示,直流电动机是将电能转变成机械能的旋转机械。直流电机里边固定有环状永磁体,电流通过转子上的线圈产生洛伦兹力,当转子上的线圈与磁场平行时,再继续转受到的磁场方向将改变,因此此时转子末端的电刷跟转换片交替接触,从而线圈上的电流方向也改变,产生的洛伦兹力方向不变,所以电机能保持一个方向转动。

这里写图片描述
图3.2.2 直流电机结构

  如图3.2.3(a),把电刷A、B接到直流电源上,电刷A接正极,电刷B接负极。此时电枢线圈中将电流流过。在磁场作用下,N极性下导体ab受力方向从右向左,S 极下导体cd受力方向从左向右。该电磁力形成逆时针方向的电磁转矩。当电磁转矩大于阻转矩时,电机转子逆时针方向旋转。
这里写图片描述
(a)


这里写图片描述
(b)

  当电枢旋转到图3.2.3(b)所示位置时,原N极性下导体ab转到S极下,受力方向从左向右,原S 极下导体cd转到N极下,受力方向从右向左。该电磁力形成逆时针方向的电磁转矩。线圈在该电磁力形成的电磁转矩作用下继续逆时针方向旋转。直流电动机的电枢并非单一线圈,磁极也并非一对。
因此,电枢一经转动,由于换向器配合电刷对电流的换向作用,直流电流交替地由导体 ab和cd 流入,使线圈边只要处于N 极下,其中通过电流的方向总是由电刷A 流入的方向,而在S 极下时,总是从电刷 B流出的方向。这就保证了每个极下线圈边中的电流始终是一个方向,从而形成一种方向不变的转矩,使电动机能连续地旋转。这就是直流电动机的工作原理。

2.直流电机转速控制

  直流电机的控制方式为:脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲, 用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一 定的规则对各脉冲的宽度进行调制,即可改变逆变电路输出电压的大小,也可改变输出频率。
  例如,把正弦半波波形分成N等份,就可把 正弦半波看成由N个彼此相连的脉冲所组成的波形。这些脉冲宽度相等,都等于 ∏/n ,但幅值不等,且脉冲顶部不是水平直线,而是曲线,各脉冲的幅值按正弦规律变化。如果把上述脉冲序列用同样数量的等幅而不等宽的矩形脉冲序列代替,使矩形 脉冲的中点和相应正弦等分的中点重合,且使矩形脉冲和相应正弦部分面积(即冲量)相等,就得到一组脉冲序列,这就是PWM波形。可以看出,各脉冲宽度是按正弦规律变化的。根据冲量相等效果相同的原理,PWM波形和正弦半波是等效的。对于正弦的负半周,也可以用同样的方法得到PWM波形。
在PWM波形中,各脉冲的幅值是相等的,要改变等效输出正弦波的幅值时,只要按同一比例系数改变各脉冲的宽度即可,因此在交-直-交变频器中,整流电路采用不可控的二极管电路即可,PWM逆变电路输出的脉冲电压就是直流侧电压的幅值。
根据上述原理,在给出了正弦波频率,幅值和半个周期内的脉冲数后,PWM波形各脉冲的宽度和间隔就可以准确计算出来。按照计算结果控制电路中各开关器件的通断,就可以得到所需要的PWM波形。本次实验是用软件方式模拟简单PWM,频率不变,脉冲宽度可以调节,实际是调节作用时间,从而达到调节电压、电流或者功率等参数。

这里写图片描述
图3.2.4 PWM

  如图3.2.2 有图所示,直流电机有一根红线和一根蓝线,一根用来产生磁场,一根用来配合红线产生回路。通过对直流电机模块的J3进行调整可以控制直流电机的转动方向;通过延时来调节来控制PVM的波形,从而改变直流电机的转速。直流电动机在起动时需在施加电枢电源之前,先接上额定励磁电压(至少是同时),以保证起动过程中产生足够大的反电动势.迅速减少起动电流和保证足够大的起动转矩,加速起动过程。
3.直流电机实验模块设计
  在设计本模块的时候,首先要选择高耐压大电流复合晶体管IC1-ULN2003, 它是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动直流电机等负载。输入5VTTL电平,输出可达500mA/50V。ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。该电路的特点如下: ULN2003的每一对达林顿都串联一个2.7K的基极电阻,在5V的工作电压下它能与TTL和CMOS电路 直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。ULN2003 是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽、带负载能力强等特点,适应于各类要求高速大功率驱动的系统。
这里写图片描述
图3.2.5 直流电机模块电路原理图 (a)

这里写图片描述
图3.2.5 直流电机模块电路原理图 (b)

这里写图片描述
图3.2.5 直流电机模块电路原理图 (c)

这里写图片描述
图3.2.5 直流电机模块电路原理图 (d)

四、实验内容

1.实验器材接线
  本实验所使用的直流电机模块实物图如图3.2.6所示。

这里写图片描述
图3.2.6 直流电机模块

  将直流电机模块安装到开发板上(断电安装),然后用AK100或者JLINK仿真器的一端用USB接口与电脑相连,一端的20Pin的JTAG引脚与NXP LPC2378节点板的J2相连,并给NXP LPC2378节点板上电,如图3.2.7所示。

这里写图片描述
图3.2.7 直流电机接口电路

2.直流电机运行测试
(1) 打开工程DCMotor.mcp,编辑主程序文件Main.c。

//Main.c
/*********************头文件及定义*************************/
#include "LPC23xx.h"
#include "Lcd.h"
#include "config.h"
void  delay(uint32  dly)
{  
    uint32  i;
    for(; dly>0; dly--)
        for(i=0; i<1000; i++);          // 约为100us
}
void ClearRect(int index)
{
    switch(index)
    {
    case 1:
        drawrect(0,12,128,16,0x2345);
        break;
    case 2:
        drawrect(0,40,128,48,0x2345);
        break;
    case 3:
        drawrect(0,100,128,48,0x2345);
        break;
    default:
        break;
    }
}
void LCD_Frame()
{
    //屏幕初始显示
    drawrect(0,0,128,12,0x0000);
    drawrect(0,12,128,16,0x2345);
    drawrect(0,28,128,12,0x0000);
    drawrect(0,40,128,48,0x2345);
    drawrect(0,88,128,12,0x0000);
    drawrect(0,100,128,48,0x2345);
    drawrect(0,148,128,12,0x0000);
}
unsigned char lv;
unsigned char lv2;
int main()
{
    char *p;
    int idx;
    int xpos,ypos;
    long count;

//传感板IO控制引脚设置
    FIO3DIR =0;//初始设置引脚为输入
    if((IO1PIN&(1<<16))==(1<<16))
    {
     FIO3DIR |=1<<4;        //直流电机,IO5引脚作为输出 
     FIO3DIR |=1<<5;        //直流电机,IO6引脚作为输入   
    } 

    //传感板类型识别CODE0~CODE3,作为输入端
    FIO2DIR &=~(1<<5);
    FIO2DIR &=~(1<<6);
    FIO2DIR &=~(1<<7);
    FIO2DIR &=~(1<<8);
//设置LCD屏幕引脚   
    PINSEL3=PINSEL3 & 0x00000000;
    IO1DIR=IO1DIR|0x05700000;
//屏幕初始化    
    RESET0;     //复位                           
    delay(50);
    RESET1;                     
    delay(100); 
    lcd_init();
    delay(20);
    LCD_Frame();
    DispAscStr(0,12,"DC Motor",8,&xpos,&ypos);
    DispChnStr(xpos,ypos,"模块测试",4,&xpos,&ypos);
    //控制直流电机转动,根据FIO3PIN3脚,切换方向
    count=(FIO3PIN&(1<<2))>>2;
    while(1)
    {
        if((FIO3PIN&(1<<2))>>2 )
        {
            if(count==1)
            {
                FIO3CLR |=3<<4;
                delay(10000);
                FIO3CLR |=1<<4;
                FIO3SET |=1<<5;
                count=0;
                DispAscStr(0,100,"     ClockWise",14,&xpos,&ypos);
            }
        }
        else
        {
            if(count==0)
            {
                FIO3CLR |=3<<4;
                delay(10000);
                FIO3CLR |=1<<5;
                FIO3SET |=1<<4;
                count=1;
                DispAscStr(0,100,"Anti-ClockWise",14,&xpos,&ypos);
            }

        }
    }
   return 0;
}

(2) 编译、连接并下载编程后运行,观察显示结果。
3.直流电机控制
(1) 启停控制

FIO3CLR |=3<<4;//启动
FIO3CLR ^=3<<4;//停止

(2) 转向控制
拨动转向控制开关J3,观察直流电机转向和LCD显示结果,对照主程序,查看转向控制部分代码。

FIO3CLR |=3<<4;//启动
delay(10000);
FIO3CLR |=1<<4;//顺时针                
FIO3SET |=1<<5;

FIO3CLR |=3<<4;//启动
delay(10000);
FIO3CLR |=1<<5;//逆时针                
FIO3SET |=1<<4;

(3) 转速控制
通过软件延时的方法,改变PWM的波形,从而使直流电机工作在不同的转速下。
//通过软件延时的方式,控制PWM的波形,控制频率

if(pwmout==0)
        {
            FIO3CLR |=3<<4;
        }
        else if(pwmout==1)
        {
            //FIO3CLR |=1<<4;
            FIO3SET |=1<<5;
            pwmcount++;
            delay(10);控制PWM的波形,控制频率
            if(pwmcount>5)
            {
                if(FIO3PIN & 1<<5)
                {
                    FIO3CLR |= 1<<5;
                }
                else
                {
                    FIO3SET |= 1<<5;
                }
                pwmcount=0;
            }
        }
        else if(pwmout==2)
        {
            //FIO3CLR |=1<<5;
            FIO3SET |=1<<4;
            pwmcount++;
            delay(10);控制PWM的波形,控制频率
            if(pwmcount>5)
            {
                if(FIO3PIN & 1<<4)
                {
                    FIO3CLR |= 1<<4;
                }
                else
                {
                    FIO3SET |= 1<<4;
                }
                pwmcount=0;
            }
        }
##五、实验思考

1.怎样才能改变PWM波,以便可以控制直流电机的转动速度?
2.直流电机有什么应用?

posted @ 2016-05-28 19:46  shugen  阅读(440)  评论(0编辑  收藏  举报