直流电机驱动(马达)



一、介绍直流电机

介绍

在这里插入图片描述

电机驱动电路

点击的负载较大,直接接在单片机I/O口上无法驱动,所以需要驱动电路

大功率器件直接驱动

在这里插入图片描述
续流二极管的作用

由于电机是感应器件,是电感,在线路断开时会是电压缓慢降下,而此时没有电流,电感就会感应出高电压来产生电流,这样就可能会导致电路损坏。而这个二极管的作用就是在电路断开时,与电机形成回路,延续电流使电机电压缓慢降低。

H桥驱动

IN1与IN4、IN2与IN3形成通路来达到改变方向的效果,不过这种结构无法添加续流二极管,对硬件的耐电性要求较高

在这里插入图片描述

集成电路线路图

51单片机采用的是大功率器件直接驱动
IN控制开关
在这里插入图片描述

PWM介绍

用于控制电机的速度,通过改变供电、断电,利用电感特性来控制速度。
注意: 不能使用滑动变阻器来实现,长时间的高电流会导致电位器烧毁,使用小电阻也会因为高电流发热烧毁。

在这里插入图片描述

产生PWM的方法

使用定时器每隔一段时间中断一次 ,周期间的间隔时间,时间需要短一点
在中断函数中设定循环(即供电与不供电占比),也就是设置的周期值,然后自己设置比较值

模型结构
在这里插入图片描述
与波形对比图
在这里插入图片描述

二、实例

1.呼吸灯案例

通过改变供电占比实现,设定一个固定周期,通过改变在这个周期里的供电占比即可实现。不过使用延时函数比较占用CPU

#include <REGX52.H>

sbit LED = P2^0;
// 快速延时函数
void Delay(t){
	while(t--);
}

void main(){
	unsigned char Time,i;
	while(1){
		// 增大低电平周期占比,增加亮度
		for(Time = 0;Time < 100;Time++){
			// 延缓变化速度
			for(i = 0;i < 20;i++){
				LED = 0;
				Delay(Time);
				LED = 1;
				Delay(100-Time);		// 一次周期定位为100
			}
		}
		// 降低低电平周期占比,降低亮度
		for(Time = 100;Time > 0;Time--){
			// 延缓变化速度
			for(i = 0;i < 20;i++){
				LED = 0;
				Delay(Time);
				LED = 1;
				Delay(100-Time);		// 一次周期定位为100
			}
		}
	}
}

2.直流电机调速

注意:由于单片机默认高电平,所以打开开关的一瞬间电机是通电状态,会转一会

#include <REGX52.H>
#include "Delay.h"
#include "Key.h"
#include "Time0Init.h"
#include "Nixie.h"

sbit Motor = P1^0;	// 开关引脚

unsigned char Counter,Compare;	// 周期、比较值
unsigned char KeyNum,Speed;
void main(){
	Time0_Init();
	while(1){
		KeyNum = Key();
		// 以Speed控制挡位,按键1控制Speed
		if(KeyNum == 1){
			Speed++;
			Speed %= 4;		// 大于等于4变为0
			// 改变挡位(比较值)
			if(Speed == 0){
				Compare = 0;
			}
			if(Speed == 1){
				Compare = 40;		//  太小会导致电压太小不足以驱动电机
			}
			if(Speed == 2){
				Compare = 60;
			}
			if(Speed == 3){
				Compare = 100;
			}
		}
		Nixie_show(1,Speed);
	}
}

// 中断函数
void Timer0_Routine() interrupt 1
{	
	TL0 = 0xA4;				//设置定时初始值
	TH0 = 0xFF;				//设置定时初始值
	Counter++;
	// 设置周期
	if(Counter>=100){
	  Counter = 0;
	}	
	//	与比较值进行比较
	if(Counter<Compare){
		Motor = 1;			// 给电
	}else{
		Motor = 0;			// 不给电
	}
}

补充:本案例使用的按键、数码管都不是采用定时器扫描,数码管只需要静态显示不用消影操作

### 关于直流电机驱动芯片的详细介绍 #### 常见的直流电机驱动芯片及其功能 直流电机驱动芯片主要用于控制直流电机的启动、停止和转向。这些芯片通过提供必要的电流方向切换能力来实现对电机的操作,从而简化了控制系统的设计并提高了可靠性。 常见的直流电机驱动芯片包括但不限于: - **L298N**:这是一款双极型H桥驱动器集成电路,能够支持两相步进电机或两个独立的直流电机操作。它具有高电压范围以及较大的持续电流输出特性,适用于多种应用场合[^1]。 - **L293D**:该器件同样是一个四通道半H桥驱动IC,可以用来驱动单向负载或者作为全H桥的一部分用于双向控制。其特点是内置保护机制,如过热自动关闭等功能,确保安全可靠的工作状态。 - **TB6612FNG**:这是东芝公司生产的高效能PWM马达控制器,专为小型机器人和其他便携式设备设计。具备低功耗待机模式和支持高达1.2A连续工作的特点,在节能方面表现出色。 #### 工作原理概述 当涉及到具体如何利用上述提到的各种型号来进行实际开发时,则需考虑几个重要因素——比如供电需求、接口方式等。通常情况下,开发者会依据项目特定的要求选择最合适的解决方案。例如,对于需要较大功率的应用场景来说,可能会优先选用像L298N这样的高性能产品;而对于注重能耗表现的小型装置而言,TB6612FNG可能是更好的选项。 此外值得注意的是,尽管这里列举了一些典型的代表作品,市场上还存在许多其他类型的专用集成组件可供挑选,每种都有各自的优势所在。因此建议在正式采购前仔细评估目标产品的规格参数,并参考官方文档获取更详尽的技术细节。 ```python # Python伪代码展示如何初始化一个简单的L298N驱动模块 import RPi.GPIO as GPIO def setup_l298n(in1, in2, ena): """设置L298N引脚""" # 设置GPIO模式 GPIO.setmode(GPIO.BCM) # 定义输入引脚 GPIO.setup([in1, in2], GPIO.OUT) # PWM使能端配置 pwm = GPIO.PWM(ena, 100) # 创建频率为100Hz的PWM实例 return (pwm,) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值