51单片机控制4线步进电机的电路图:基于proteus的51单片机开发实例21-H桥驱动直流电机
51单片机控制4线步进电机的电路图:基于proteus的51单片机开发实例21-H桥驱动直流电机其工作原理是:4个开关管S1~S4都工作在斩波状态。S1和S2为一组,S3和S4为一组,两组状态互补,一组导通则另一组必须关断。当S1和S2导通时,S3和S4关断,电动机两端加正向电压,电机正转,反之,当S3和S4导通时,S1和S2关断,电动机两端加反向电压,电机反转。图2 H桥基本原理直流电机的驱动直流电机的驱动非常简单:只需在直流电机的两个控制端加上合适的电压,直流电机就能转动起来。改变电压的方向就能轻松改变直流电机的转动方向。直流电机驱动电路中使用最广泛的是“H”型全桥驱动电路。这种驱动电路的驱动原理如下图所示。
1. 基于proteus的51单片机开发实例21-H桥驱动直流电机1.1. 实验目的图1 H桥驱动直流电机电路
在前面学习发光二极管和数码管显示的实例中,我们曾经提到,单片机的驱动能力是有限的,一般单片机的I/O端口的输出电流只有10mA左右,整个单片机全部的I/O口的驱动能力一般在200mA。所以如果单片机的外设中如果需要大电流驱动的话,需要设计专门的驱动电路。本例中我们就采用单片机控制大功率的器件-直流电机。
电机是电子电路中经常碰到的一种器件,而直流电机是控制方法最简单的一种电机,本例中我们就来学习如何用51单片机控制直流电机的正转、反转和停转。
1.2. 设计思路本实例使用三个按钮控制直流电机的正转、反转和停转。直流电机的驱动电路使用H桥电路来实现。
1.3. 基础知识直流电机的驱动
直流电机的驱动非常简单:只需在直流电机的两个控制端加上合适的电压,直流电机就能转动起来。改变电压的方向就能轻松改变直流电机的转动方向。
直流电机驱动电路中使用最广泛的是“H”型全桥驱动电路。这种驱动电路的驱动原理如下图所示。
图2 H桥基本原理
其工作原理是:4个开关管S1~S4都工作在斩波状态。S1和S2为一组,S3和S4为一组,两组状态互补,一组导通则另一组必须关断。当S1和S2导通时,S3和S4关断,电动机两端加正向电压,电机正转,反之,当S3和S4导通时,S1和S2关断,电动机两端加反向电压,电机反转。
下图是H桥的典型驱动电路。
图3 H桥典型电路
Q1、Q4、Q7、Q8采用功率MOS管。Q7和Q1组成H桥的一个桥臂,Q8和Q4组成H桥的另一个桥臂。每个MOS管旁边都接有一个续流二极管。Q7和Q4导通时,Q1和Q8截止,电机正转,Q1和Q8导通时,Q4和Q7截止,电机反转。
1.4. 电路设计本实例的电路图如图1所示。单片机的P2.0和P2.1接直流电机的两个控制端。P3.5,P3.6,P3.7分别接三个开关,作为电机正转、反转、停止的控制端。
1.5. 程序设计本实例的程序代码如下。
#include <AT89x52.h>
sbit MotoA = P2^1; // 直流电机控制引脚
sbit MotoB = P2^0;
sbit key_Left = P3^7;//正转、反转、停转开关引脚定义
sbit key_Right = P3^6;//正转、反转、停转开关引脚定义
sbit key_stop = P3^5;//正转、反转、停转开关引脚定义
int main(void)
{
MotoA = 0;
MotoB = 0;
while(1)
{
if(key_Left==0)
{
MotoA = 1;
MotoB = 0;
while((key_Left==0)&&(key_stop!=0));
}
if(key_Right==0) //
{
MotoA = 0;
MotoB = 1;
while((key_Right==0)&&(key_stop!=0));
}
if(key_stop==0)
{
MotoA = 0;
MotoB = 0;
while((key_Left!=0)&&(key_Right!=0));
}
}
}
程序代码很简单,程序中检测三个开关的状态,然后根据开关状态控制电机的两个引脚的电平状态,从而实现电机的转动控制。
1.6. 实例仿真编写程序代码,编译生成HEX文件,将HEX文件装载到proteus电路的单片机中,开始仿真,通过控制三个开关的状态观察电机的运行状态。需要注意的是,当停转开关按下后,电机不会立即停止转动,而是转速慢慢下降,直至停转。
1.7. 总结
直流电机的控制方法和驱动电路很多,可以使用分立器件搭建驱动电路,就像本实例中的H桥驱动电路,也可以使用专用的驱动电路芯片,下一个实例我们学习使用专用电机驱动芯片L298来驱动直流电机。