找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5237|回复: 3
打印 上一主题 下一主题
收起左侧

单片机L298N驱动模块控制电机的问题,发出嗡嗡的响声

[复制链接]
跳转到指定楼层
楼主
ID:340666 发表于 2019-5-20 22:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在做循迹避障小车,有两个电机通过L298N驱动模块带动,电源为7.4V锂电池,单片机上连了三个红外线传感器和一个超声波传感器。
当我只用循迹的程序时,小车可以正常循迹
但加上超声波模块后,并编了程序,但小车不能转动,并且L298N驱动模块会发出嗡嗡的响声,这是为什么?我程序错了吗

单片机源程序如下:
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char        
#define uint  unsigned int
sbit IN1=P0^0;
sbit IN2=P0^1;
sbit IN3=P0^2;
sbit IN4=P0^3;
sbit hong1=P2^0;
sbit hong2=P2^1;
sbit hong3=P2^2;
sbit Trig=P2^3;
sbit Echo=P2^4;
void delay_ms(uint z)         //延时函数
{
        uchar x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void zhixing()
{
IN1=1;
IN2=0;
IN3=1;
IN4=0;
}
void zuozhuan()
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
void youzhuan()
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
void tingzhi()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
}
void xunji()
{
uchar flag;           //定义一个标志位,用于状态判断
        if(hong1==0 & hong2==0 & hong3==0)         //未检测到黑线
        {flag=0;}
         else if(hong1==0 & hong2==1 & hong3==0)        //中间检测到黑线
        {flag=1;}
         else if(hong1==1 & hong2==0 & hong3==0)        //左边检测到黑线
        {flag=2;}
         else if(hong1==1 & hong2==1 & hong3==0)        //左边和中间检测到黑线
        {flag=3;}
         else if(hong1==0 & hong2==0 & hong3==1)        //右边检测到黑线
        {flag=4;}
         else if(hong1==0 & hong2==1 & hong3==1)        //右边和中间检测到黑线
        {flag=5;}
         else if(hong1==1 & hong2==1 & hong3==1)        //全部检测到黑线
        {flag=6;}
        else flag=7;   //其他情况标志位置7
        switch (flag)
        {
                case 0: zhixing(); break;        //情况0,前进
                case 1: zhixing(); break;        //情况1,前进
                case 2: zuozhuan(); break;        //情况2,左转
                case 3: zuozhuan(); break;        //情况3,左转
                case 4: youzhuan(); break;        //情况4,右转
                case 5: youzhuan();break;        //情况5,右转
                case 6: tingzhi(); break;        //情况6,停止
                case 7: tingzhi(); break;        //
                default:tingzhi(); break;        //
        }
}

void kaishi()
{
Trig=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();//10us
Trig=0;
}
void bizhang()
{
while(!Echo)
   xunji();
while(Echo)
   tingzhi();
}

void main()
{
  while(1)
  {
    kaishi();
        bizhang();
  }
}

求助,蟹蟹蟹蟹..
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:330198 发表于 2019-5-21 09:21 | 只看该作者
你超声波就判断一个Echo引脚吗?建议看一下模块手册
回复

使用道具 举报

板凳
ID:268318 发表于 2019-5-21 10:41 | 只看该作者
PWM频率的问题
回复

使用道具 举报

地板
ID:989850 发表于 2021-12-15 13:15 来自手机 | 只看该作者
回忆浅离 发表于 2019-5-21 10:41
PWM频率的问题

我也出现这个问题了,车停住L298N会响,走动过程中不会,也是pwm出问题了吗,怎么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表