直流电机实验

         使用 GPIO 控制电机的旋转和停止,ULN2003 驱动芯片驱动电机,实现直流电机工作约 5S 后停止。

直流电机简介

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

         直流电机的结构由定子和转子两大部分组成。运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、 换向极、 端盖、 轴承和电刷装置等组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器和风扇等组成。

         直流电机没有正负之分,在两端加上直流电就能工作。 在交换接线后,可以形成正反转。

         使用5V 直流电机,主要参数如下:

  1. 轴长:8mm
  2. 轴径:2mm
  3. 电压:1-6V
  4. 参考电流:0.35-0.4A 3V
  5. 转速:17000-18000 转每分钟

         实物图如下:

         内部结构: 

 ULN2003 芯片简介

          单片机GPIO 管脚驱动能力有限,主要用来控制而非驱动,所以须搭建驱动电路。此处使用的驱动芯片是 ULN2003, 该芯片是一个单片高电压、高电流的达林顿晶体管阵列集成电路,不仅可以用来驱动直流电机,还可以驱动五线四相步进电机,比如 28BYJ-48 步进电机。

          ULN2003 由 7 对 NPN 达林顿管组成的,它的高电压输出特性和阴极箝位二极管可以转换感应负载。单个达林顿对的集电极电流是 500mA。达林顿管并联可以承受更大的电流。ULN2003 的每一对达林顿都串联一个 2.7K 的基极电阻,在 5V 的工作电压下它能与 TTL 和 CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。

          主要特点:

  1. 500mA 额定集电极电流(单个输出)
  2. 高电压输出:50V
  3. 输入和各种逻辑类型兼容
  4. 继电器驱动器

          逻辑框图:

            达林顿管:

            从上图可以很容易理解该芯片的使用方法,其内部相当于非门电路,即,输入高输出为低,输入为低输出是高,这里要注意:因为 ULN2003 的输出是集电极开路,ULN2003 要输出高电平,必须在输出口外接上拉电阻。所以连接直流电机时不能直接将 ULN2003 的 2 个输出口接电机线,而必须一 根线接电源,另一个才接 ULN2003 输出口。

             若使用该芯片驱动直流电机,只可实现单方向控制,电机一端接电源正极, 另一端接芯片的输出口。芯片的详细介绍可参考ULN2003 中文手册.pdf。

             链接: https://pan.baidu.com/s/1ddIKsNeabOwNVOBABOrcqg?pwd=6x3w 提取码: 6x3w

硬件部分

        使用到硬件资源如下:

  1. 步进电机驱动模块
  2. 直流电机

        步进电机驱动模块电路如下图所示:

        该模块独立,芯片的输入通过 J46 端子传入,输出由 J47 端子引出,输入对应输出。 J47 是连接电机的接口,可以支持直流电机、五线四相步进电机 28BYJ-48 连接。 这里使用 P1.0 管脚来控制 ULN2003 输出,即将 P1.0 管脚连接到 J46 的 IN1,直流电机的两根线接 J47 端子的 1、2 脚即 5V 和 OUT1。通过单片机 P1.0 口输出高电平来控制电机旋转,输出低电平控制电机停止。

        注意:单片机 P1.0 输出低电平时,ULN2003 的 OUT1 并不会输出高电平导致停止,而是因为集电极开路,导致电机无电流流入致使停止。

软件部分

        源代码:

#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_1ms(u16 ms)
{
	u16 i,j;
	for(i=ms;i>0;i--)
		for(j=110;j>0;j--);
}

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

现象:

        电机运转一段时间之后会停止,按下单片机复位键即可再次运转。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
stm32f407是一款32位的高性能微控制器,通过它可以实现直流电机控制的实验。 在开始实验之前,我们首先需要准备好一台stm32f407开发板、一台直流电机、一块电源以及一些连接线。首先,将直流电机的正负电源线分别连接到电源的正负极,这样可以为电机提供供电。接下来,将电机的正负电源线分别连接到stm32f407开发板上的输出口,这样可以将电机与开发板进行连接。 然后,我们需要编写控制程序来实现对直流电机的控制。可以使用C语言编程来实现控制程序。首先,需要包含一些必要的库文件,并进行一些初始化操作,如设置时钟频率等。接下来,可以使用PWM输出来控制电机的速度,通过改变PWM占空比的大小,可以改变电机的转速。 在程序中,可以设置电机正转和反转的条件,以及电机的停止条件。使用循环结构,可以实现电机的持续转动或者停止。可以通过按下开发板上的按键来控制电机的启动和停止。 在实验中,还可以添加一些传感器,例如光电传感器或者温度传感器,可以实现电机自动控制的功能。利用传感器获取到的数据,可以对电机的旋转方向和速度进行自动控制。 总而言之,通过使用stm32f407开发板实现直流电机控制的实验,我们可以实现对电机的启动、停止、正转和反转等功能。此外,我们还可以添加传感器实现电机的自动控制。这个实验可以帮助我们了解stm32f407的功能以及其在嵌入式系统中的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值