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%,测试成功。

发布了31 篇原创文章 · 获赞 28 · 访问量 9511

猜你喜欢

转载自blog.csdn.net/visual_eagle/article/details/102826631