学习历程--普中51单片机A2--直流电机实验

今天学习了普中的直流电机实验部分,将自己的一些学习内容记录一下。

直流电机的官方定义:直流电机(direct current machine)是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。

看起来十分拗口,实际上直流电机就是把直流的电能与机械能互换的一种机器。直流电能转换为机械能的时候是直流电动机,相反,将机械能转换为直流电能就是直流发电机。

这个是直流电机的图片

学习历程--普中51单片机A2--直流电机实验_第1张图片

直流电机的内部构造我也不清楚,学习机械的同学可能会比较清楚把,我没有太深入去了解电机,我就浅浅的了解了一下电机的工作原理,然后学习了一下怎么写程序。

51单片机的硬件连接

学习历程--普中51单片机A2--直流电机实验_第2张图片

直流电机和蜂鸣器一样,使用的时候都需要接一个ULN2003芯片,以获得更大的电流。要是不使用这个芯片的话,单片机要么管脚的电流不够,不能让直流电机动起来,要么就会将单片机芯片烧坏(我认为可能是因为电流过小,导致短路才烧坏的)。

查看芯片的参考手册,发现ULN2003芯片的耐力值还是十分强大的

学习历程--普中51单片机A2--直流电机实验_第3张图片

硬件连接看完之后,进行软件编程!

实现的功能是直流电机旋转5秒后停止

先来看看代码

#include "reg52.h"

typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;


sbit DC_Motor=P1^0;  //定义直流电机控制管脚

#define DC_MOTOR_RUN_TIME	5000	//定义直流电机运行时间为5000ms


void delay_ms(u16 ms)  //延时函数
{
	u16 i,j;
	for(i=ms;i>0;i--)
		for(j=110;j>0;j--);
}


void main()
{	
	
	while(1)
	{			
		DC_Motor=1;//开启电机
	    delay_ms(DC_MOTOR_RUN_TIME);
	    DC_Motor=0;//关闭电机	
        delay_ms(DC_MOTOR_RUN_TIME);		
	}		
}

 程序真的很像led的闪烁实验,对比一下led闪烁实验的代码

#include "reg52.h"
 
typedef unsigned int u16;	
typedef unsigned char u8;
 
sbit LED1=P2^0;	//将P2.0管脚定义为LED1
 
void delay_10us(u16 ten_us)
{
	while(ten_us--);	
}
 
 
void main()
{	
	while(1)
	{
		LED1=0;	
		delay_10us(50000); 
		LED1=1;	
		delay_10us(50000); 	
	}		
}

 对比之后可以看的出来直流电机就只用控制高低电平,就能控制旋转了,由于普中的单片机没有功率驱动能力,所以不需要考虑转速的问题。

需要注意的是,直流电机一插上,电机就会像旋转,普中是这样解释的,由于P1.0-P1.7都接了上拉电阻,所以初始状态的时候就是高电平

学习历程--普中51单片机A2--直流电机实验_第4张图片

而 ULN2003芯片里面有非门,就导致了电机正好有电流通过,所以就先下载好程序,再上直流 电机吧。

学习历程--普中51单片机A2--直流电机实验_第5张图片 

 自己学的比较生疏,而且容易浮在表面上,最近的目标就是希望开学之前能够弄懂51单片机的基本知识,有问题欢迎大家指出,小白一个,内容可能有许多错误,谢谢大家。

 

 

你可能感兴趣的:(51单片机,51单片机,嵌入式硬件,单片机)