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桥驱动电路,也可以使用专用的驱动电路芯片
来源:老马识途单片机 https://www.toutiao.com/a6855862800426729987/