pic单片机控制直流电机.docx

上传人:b****4 文档编号:5239346 上传时间:2022-12-14 格式:DOCX 页数:14 大小:1.39MB
下载 相关 举报
pic单片机控制直流电机.docx_第1页
第1页 / 共14页
pic单片机控制直流电机.docx_第2页
第2页 / 共14页
pic单片机控制直流电机.docx_第3页
第3页 / 共14页
pic单片机控制直流电机.docx_第4页
第4页 / 共14页
pic单片机控制直流电机.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

pic单片机控制直流电机.docx

《pic单片机控制直流电机.docx》由会员分享,可在线阅读,更多相关《pic单片机控制直流电机.docx(14页珍藏版)》请在冰豆网上搜索。

pic单片机控制直流电机.docx

pic单片机控制直流电机

直流电机驱动

Abstract摘要:

本文主要内容是利用PIC18F452单片机来控制直流电机,通过L293NE来驱动电机,通过按键来使其正转,反转。

Keywords关键词:

直流电机,PWM,L293NE

1

总体设计框架

硬件电路利用驱动芯片L293D来驱动直流电机,按键则是单独引出。

如图1所示。

软件则是C语言编程。

图1硬件设计框

2硬件电路设计

2.1芯片介绍

首先,总体说明硬件电路设计,如图2原理图,图3PCB图以及图4板子的图所示。

三个输入信号,如图分别为RD4,RD5,RD6连上光耦的2脚,然后通过光耦的4脚引入L293D的使能引脚(12EN)以及输入引脚(1A,2A),然后L293D的输出引脚(1Y,2Y)通过H-桥型控制电路与直流电机连接。

图2直流电机控制部分原理图

 

图3直流电机控制部分PCB图

图4成品板

其中红线圈表示直流电机控制部分。

下面详细介绍各个芯片。

1、PIC18F452

PIC18F452与PIC18F4580外部端口以及内部存储器是相同的。

上图的U2。

2、光耦P521

光耦主要的作用是保护单片机。

光耦的结构如图5所示。

 

图5光耦P521结构

在PCB中(如图6所示),即U7,U9,U10三个光耦,左下方方形孔为1引脚,按逆时针方向,依次为2,3,4引脚。

光耦的1脚通过电阻与电源连接,2脚为输入引脚,3脚与地相连,4脚为输出引脚。

经试验测得,则当1脚输入高电平时,4脚也输出高电平。

则当1脚输入低电平时,4脚输出低电平。

图6光耦外形图

3、电阻

一共用到7个大小为470Ω的电阻(分别为R16,R17,R18,R19,R20,R21,R22)和3个大小为1kΩ(分别为R23,R24,R25)。

4、按键

按键电路也就是步进电机驱动实验的电路。

在此,再介绍一次。

所用按键为标准B3F—1000系列,结构图如图7所示。

PCB板上SW1,SW2,SW3,SW4,SW5为按键,其中SW1为复位开关,其他的为控制作用的按键。

按键的机理以SW5为例阐述,其他类同。

按键的3引脚一是直接分别与RA1,RA2,RA3,RA4相连二是通过四个470Ω的电阻与电源相连。

按键1引脚分别与地相连。

当不按按键的时候,RA4通过R19电阻与+5V电源相连,即此时RA4的输入为高电平,即1。

当按键SW5按下时,RA4通过按键的连接与地相连,此时RA4的输入为低电平,即0。

通过SW5按键控制RA4的高低电平。

程序可监控RA4的状态,来控制电机。

发现RA4高电平则正转,发现RA4低电平则反转。

图7按键图

如PCB板所示,按键右下方方形孔为1引脚,左上方为3引脚。

此按键只用到1与3引脚。

5、IN4007

整流二极管(如图8所示),通常它包含一个PN结,有阳极和阴极两端。

P区的载流子是空穴,N区的载流子是电子。

外加使P区相对N区为正的电压时,能通过大电流,具有低的电压降(典型值0.7V),称为正向导通状态。

若加相反的电压,则反向电流很小(反向漏电流),称为反向阻断状态。

整流二极管具有明显的单向导电性。

有白色线圈的为负极。

四个IN4007二极管,组成桥式电路。

如图9所示。

图8IN4007

图9桥式电路

经测定,IN4007在正向导通时,其电压为0.59V,反向截止时无电压。

这里的整流二极管主要起保护的作用。

当有个过冲信号,如电压过高,此时D2打开,避免高电压冲击直流电机,将其损坏,信号流向电源,而不是电机。

若是电压过低,D4打开,避免低电压冲击直流电机。

信号此时流向了地。

 

6.L293D

L293D采用16引脚DIP封装(如图10所示),其内部集成了双极型H-桥电路。

这种双极型脉冲调宽方式具有很多优点,如电流连续;电机可四角限运行;电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:

低速平稳性好等。

L293D通过内部逻辑生成使能信号。

H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。

电机需要3个控制信号12EN、1A、2A,其中12EN是使能信号,1A、2A为电机转动方向控制信号,1A、2A分别为1,0时,电机正转,反之,电机反转。

选用一路PWM连接12EN引脚,通过调整PWM的占空比可以调整电机的转速。

图10L293D引脚图

12EN高电平有效,HEATSINKANDGROUND接地,VCC1与VCC2接电源。

1A输入高电平则1Y输出高电平。

1A输入低电平则1Y输出低电平。

2A2Y,3A3Y,4A4Y关系类同。

2.2驱动电路

光耦1脚通过四个470Ω的电阻分别与电源连接。

三个光耦的2脚(DC1,DC2,DC3)分别于RD4,RD5,RD6连接。

光耦的4脚与电源连接。

光耦的3脚分别通过三个1KΩ与驱动芯片L293NE连接。

然后驱动芯片L293NE的两个输出引脚引出通过桥式整流电路连上直流电机。

如图11所示。

图11驱动电路

2.3按键控制电路

按键的3引脚一是直接分别与RA1,RA2,RA3,RA4相连二是通过四个470Ω的电阻与电源相连。

按键1引脚分别与地相连。

正常状态下,为正转,通过按键SW4来使电机反转。

3程序编写

3.1工作原理

本次实验主要利用L293NE来驱动直流电机。

RA0,RA1,RA2,RA3四个输入信号,通过高低电平控制RD0,RD1,RD2来使直流电机转动。

工程文件请参考“DC_MOTOR”文件夹。

与原厂电路板的连接:

+5V电源由原厂电路板+5V供电。

如图12所示。

自制板J6(左下方)的+5V,GND分别与原厂电路板+5V,GND(右下方)连接。

两个电路板的RD4,RD5,RD6分别相连(使能与两个输入信号接入自制板中),同时,RA4也连起来(按键信号接入自制板中)。

如图13所示。

自制板J2(右上方)的RD4,RD5,RD6分别与原厂电路板的RDPORT(中间靠右一些)的4,5,6连接。

自制板J5的RA4(右下方)与原厂电路板的RAPORT4(中间靠右一些)连接。

直流电机的两个引脚与J7即DCMOTOR连接。

如图14所示。

电机的L,R引脚分别与J7的左(即1),右(即2)引脚相连。

图12输入输出口的连接

图13电源的连接

图14电机的连接

 

3.2程序书写过程

程序如下:

#include

voiddelay(unsignedintx);

voidmain()

{

TRISD=0;//定义D端口为输出口

TRISA=0Xff;//定义A端口为输出入口

PORTDbits.RD4=0;//使能位初始化为0

PORTDbits.RD5=0;//电机的左引脚控制信号初始化为0

PORTDbits.RD6=0;//电机的右引脚控制信号初始化为0

while

(1)

{

PORTDbits.RD4=1;//使能位设置为1,使能电机,使其工作

if(PORTAbits.RA4==0)

{

delay(10);

if(PORTAbits.RA4==0)

{

PORTDbits.RD5=1;

PORTDbits.RD6=0;

}

}

else

{

PORTDbits.RD5=0;

PORTDbits.RD6=1;

}

}

}

voiddelay(unsignedintx)

{

unsignedinta,b;

for(a=x;a>0;a--)

for(b=54;b>0;b--);

}

该程序主要包括初始化模块,控制模块,以及延时模块。

1、初始化模块

主要是端口初始化。

输入端RA的所有端口设置为高电平即1,为输入状态。

RD的所有端口设为低电平即0,为输出状态。

RD4,RD5,RD6初始化为0,清空状态,以便后面的赋值。

程序如下所示:

TRISD=0;//定义D端口为输出口

TRISA=0Xff;//定义AD端口为输出入口

PORTDbits.RD4=0;//使能位初始化为0

PORTDbits.RD5=0;//电机的左引脚控制信号初始化为0

PORTDbits.RD6=0;//电机的右引脚控制信号初始化为0

2、控制模块

控制模块主要是扫描键盘的变化,根据相应键盘的变化,来使直流电机转动。

如果SW5没有按下,正转。

如果SW5按下,则反转。

while

(1)表示一直循环下去。

程序如下所示:

while

(1)

{

PORTDbits.RD4=1;//使能位设置为1,使能电机,使其工作

if(PORTAbits.RA4==0)若SW5按键按下则反转

{

delay(10);

if(PORTAbits.RA4==0)

{

PORTDbits.RD5=1;

PORTDbits.RD6=0;

}

}

elseSW5按键没有按下则正转

{

PORTDbits.RD5=0;

PORTDbits.RD6=1;

}

}

其中,两个if语句判断SW5是否有按键按下,有防抖动的作用。

如果确实PORTAbits.RA4==0,则SW5也就被按下,则PORTDbits.RD5=1;PORTDbits.RD6=0;则电机左引脚高电平,右引脚低电平,反转。

反之,即没有按键按下,则电机左引脚低电平,右引脚高电平,正转。

3、延时模块

标准的延时程序,通过循环语句来延时。

此程序对应4M晶振时,unsignedintx中输入的数字,即为延时的毫秒数。

voiddelay(unsignedintx)

{

unsignedinta,b;

for(a=x;a>0;a--)

for(b=54;b>0;b--);

}

参考资料

以下是本文中的主要参考资料清单:

[1]MuhammadAliMazidi,RolinD.McKinlay,DannyCausey.李中华,张雨浓,陈卓怡等译.PIC技术宝典[M].北京人民邮电出版社,2008.

[2]MykePredko著.胡光华译.PIC微控制器基础与实践[M].北京:

科学出版社,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1