基于stm32与l298n的直流电机pwm调速(二)

在上一博文中说了直流电机驱动板的电路原理,现在具体说一下直流电机的调速原理以及代码实现,亲测调速有效。

首先说一下接线,l298n可以控制两路直流电机,在这里仅测试一路,看一下l298n的控制逻辑以及芯片引脚。
芯片引脚

所用到的就是IN1-4,两个使能ENA和ENB,然后OUT1-4。看一下其控制逻辑

控制逻辑

使能信号ENA高电平有效,然后逻辑信号IN1和IN2一起控制正反转和刹车。利用stm32进行控制并实现调速,只需要输出两个逻辑信号和一个pwm信号即可。这里采用其通用定时器3的通道2输出pwm,在开发板上对应引脚为pa7,逻辑信号利用pa4和pa5输出。那么,具体接线就简单了,接线图如下:
接线图
在这里插入图片描述

具体接线描述:L298N的out1和out2接电机的正负极,IN1和IN2分别对应开发板的PA4和PA5,12V电源接入L298N的12V供电和GND,然后将开发板的gnd和l298n的gnd连接(一定要共地)接线完工

  • 103
    点赞
  • 734
    收藏
    觉得还不错? 一键收藏
  • 78
    评论
L298N是一款双H桥驱动芯片,适用于驱动直流电、步进电等。它可以通过PWM信号来实现电调速。下面是基于51单片的L298N调速程序: 首先,需要定义一些引脚和变量: ```c #include <reg52.h> #define uint unsigned int #define uchar unsigned char sbit en=P2^0; //L298N使能端口 sbit in1=P2^1; //L298N IN1端口 sbit in2=P2^2; //L298N IN2端口 sbit in3=P2^3; //L298N IN3端口 sbit in4=P2^4; //L298N IN4端口 uchar speed=50; //调速变量,范围为0~100 ``` 然后,需要编写PWM输出函数: ```c void pwm_output(uint pwm_value) { uint i; for(i=0;i<200;i++) //200个时间单位为1ms { if(i<pwm_value) en=1; //PWM高电平时间 else en=0; //PWM低电平时间 } } ``` 最后,编写主函数,实现PWM调速: ```c void main() { while(1) { if(speed==0) //停止 { in1=0; in2=0; in3=0; in4=0; } else if(speed>0 && speed<=25) //正转慢速 { in1=1; in2=0; in3=1; in4=0; pwm_output(speed*8); //8为比例系数,调节PWM占空比 } else if(speed>25 && speed<=50) //正转中速 { in1=1; in2=0; in3=1; in4=0; pwm_output(speed*8); } else if(speed>50 && speed<=75) //正转快速 { in1=1; in2=0; in3=1; in4=0; pwm_output(speed*8); } else if(speed>75 && speed<=100) //正转最快 { in1=1; in2=0; in3=1; in4=0; pwm_output(speed*8); } } } ``` 这样,就可以实现基于51单片的L298N调速了。需要注意的是,PWM占空比的范围为0~100,但是L298N芯片的使能端口需要接到一个PWM信号,因此需要进行比例调节。上面代码中的比例系数为8,可以根据实际情况进行调节。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值