L298N模块驱动电机(实现pwm调速)

在这里插入图片描述
1.占空比是高电平所占周期时间与整个周期时间的比值。
2.脉宽调制(PWM)基本原理:
控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。

PWM就是脉冲宽度调制,也就是占空比可变的脉冲波形。

主芯片L298N(双H桥电机驱动芯片,可以驱动两个直流电机或一个步进电机)

功率驱动电源输入12V(最高50V,最低7V)

5v供电需短接板载5v使能(当左边供电超过12v时,应该去除板载5v使能的短接,左边单独5v供电)

六个排针:逻辑输入,最左和最右边是使能端口(相当于开关),高电平有效。

逻辑区表(短接使能)

IN1 IN2 直流电机状态

0 1 正转

1 0 反转

使能端口调节电机转速(用按键都可以通断实现调速)

一定周期内,控制给高电平的时间来实现调速

时钟周期就是时钟振荡周期=1/12M=0.083us

机器周期=12*时钟周期=12/12M=1us

#include<reg52.h> 
#define unit16 unsigned int
int x;
sbit pwm=P1^0;
//right
sbit IN1=P2^0;
sbit IN2=P2^1;
sbit IN3=P2^2;
sbit IN4=P2^3;
//left
sbit IN5=P2^4;
sbit IN6=P2^5;
sbit IN7=P2^6;
sbit IN8=P2^7;
//void delay_s(unsigned int n)    //s
//{  
//    unsigned int i=0,j=0;  
//    for(i=0;i<n;i++)  
//        for(j=0;j<54053;j++);   
//} 
//void delay_ms(unsigned int n)   //ms
//{
//    unsigned int i=0,j=0;
//    for(i=0;i<n;i++)
//        for(j=0;j<123;j++);
//} 
void delay_10um(unsigned int n)     //(10*n)us
{
    while(n--);
} 
void main() 
{ 
 while(1) 
 { 
  IN1=1;
  IN2=0;
  IN3=1;
  IN4=0;
  pwm=1; 
  delay_10um(60);  //占空比为60% 
  pwm=0; 
  delay_10um(40); 
 } 
} 

由于没有示波器,对占空比的验证我用电压值来测试占空比是否为60%(程序占空比为60%)
先测量电池盒外部供电的大小,测量结果如图所示 :
在这里插入图片描述
测量5v供电口,测量结果如图所示:
在这里插入图片描述
我的程序中pwm波输出引脚为P1^ 0,测量P1^0引脚的电压值,测量结果如图所示:
在这里插入图片描述
P1^0引脚的电压为3.07v;

由占空比定义可知5v*60%==3v,

故占空比为60%,测试成功。

  • 82
    点赞
  • 585
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
### 回答1: L298N 模块是一种常用的驱动直流电机的电路模块,它可以帮助电机控制电路实现方向和速度的控制。在使用 L298N 模块控制电机时,可以使用 PWM 调节电机的转速,下面是使用 L298N 模块驱动电机实现 PWM 调速的基本步骤: 1. 将 L298N 模块与 Arduino 或其他单片机连接,确保连接正确,参考模块和单片机的引脚说明书。 2. 连接电机,将电机的正极和负极分别连接到模块的 OUT1 和 OUT2 引脚,或 OUT3 和 OUT4 引脚上。 3. 在代码中初始化 L298N 模块,设置引脚模式和初始电平状态。 4. 使用 PWM 函数控制电机的转速,可以根据需要调整 PWM 占空比来控制电机的速度。 5. 控制电机的方向,通过改变模块的使能引脚(ENA 和 ENB)的电平状态,实现正转和反转。 以下是一个简单的示例代码,使用 L298N 模块控制电机的转速和方向,实现 PWM 调速: ``` // 定义引脚 int enA = 10; int in1 = 9; int in2 = 8; void setup() { // 设置引脚模式 pinMode(enA, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); } void loop() { // 设置 PWM 占空比,控制电机速度 analogWrite(enA, 200); // 控制电机方向,实现正转 digitalWrite(in1, HIGH); digitalWrite(in2, LOW); delay(5000); // 延迟 5 秒 // 控制电机方向,实现反转 digitalWrite(in1, LOW); digitalWrite(in2, HIGH); delay(5000); // 延迟 5 秒 } ``` 在上述代码中,我们使用了 Arduino 的 `analogWrite()` 函数来设置 PWM 占空比,控制电机的转速。使用 `digitalWrite()` 函数控制模块的使能引脚和电机的方向。在 `loop()` 循环中,我们控制电机先正转 5 秒,再反转 5 秒,实现电机的周期性运动。 ### 回答2: L298N模块是一个常用的直流电机驱动模块。它能够驱动两个直流电机,最大输出电流可以达到2A,支持PWM调速。 使用L298N模块驱动电机,需要先将直流电源连接到模块的电源接口上。接着,将电机连接到模块的输出端口和控制信号端口上。 L298N模块的控制信号来自于单片机或其他控制器。需要提前设定好电机速度、方向等参数。控制信号通过L298N模块的控制接口发送给模块模块根据这些信号控制电机转动。其中,PWM调速是通过控制信号的脉宽来实现的。 为了实现PWM调速,需要将控制信号接到模块的使能端口上。根据控制信号的高低电平,模块会给电机发送不同的电流,从而实现不同的转速。在实际应用中,可以通过改变脉宽来调节电机的转速。 总之,L298N模块是一种非常实用的电机驱动器,可以轻松驱动直流电机,并提供PWM调速的功能,是众多电子制作和机器人控制项目的不可或缺的组成部分。 ### 回答3: l298n模块驱动电机是一种常用的电机驱动模块,可以用来驱动直流电机和步进电机。其使用场景非常广泛,常见于机器人、小车、航模等各种电子设备中。 l298n模块的主要功能是将微控制器输出的PWM信号经过驱动电路放大后,通过电机输出来实现电机调速。使用l298n模块可以实现电机的正转、反转和调速功能,可以满足各种应用场景的需求。 l298n模块的接线非常简单,只需要将模块的VCC、GND、IN1、IN2、EN1和EN2引脚依次连接到微控制器的正负电源、PWM信号输出、以及电机的正负极。在编写代码时,可以利用PWM信号调节EN1和EN2引脚输出的占空比,从而控制电机的转速。 在使用l298n模块驱动电机时,需要注意一些问题。首先,需要根据实际需要选择合适的电机,同时保证电机的电压和电流范围在l298n模块的支持范围之内。其次,需要根据实际情况调整PWM信号的占空比,以达到理想的电机转速。最后,还需要注意模块的供电和散热问题,以保证模块的正常工作和使用寿命。 总的来说,l298n模块驱动电机是一种非常实用的电机驱动模块,可以帮助开发者快速搭建各种电子设备。在使用过程中,需要注意一些问题,但只要注意到这些问题,就可以用它来实现各种电机调速的要求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

visual_eagle

欢迎交流学习

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值