找回密码
 立即注册

QQ登录

只需一步,快速开始

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

stc89c52rc单片机+L298n驱动JGB37-520减速电机为什么电机没反应?该怎么改程序

[复制链接]
跳转到指定楼层
楼主
100黑币
单片机源程序如下:谢谢大家
#include <reg52.h>

sbit IN1   = P1^7;
sbit IN2   = P1^6;
sbit IN3   = P1^5;
sbit IN4   = P1^4;
sbit ENA   = P2^1;
sbit ENB   = P2^0;
sbit hdz1=P1^0;     //灰度
sbit hdy1=P1^2;
unsigned char zkb1 = 0;    //占空比左
unsigned char zkb2 = 0;    //占空比右
int t = 0;

void PIT_Init()
{
   EA    = 1;
    TMOD |= 0x01;
    TH0   = (65536 - 200) / 256;
    TL0   = (65536 - 200) % 256;
    ET0   = 1;
    TR0   = 1;
}

void timer()interrupt 1
{
  TH0 = (65536-200)/256;
    TL0 = (65536-200)%256;
   
  if(t<zkb1)
    {
       ENA = 1;
    }
  else
    {
      ENA = 0;
    }
   
    if(t<zkb2)
    {
       ENB = 1;
    }
  else
        
    {
      ENB = 0;
    }
   
    t = (t + 1) %50;
}

void run()
{  zkb1  =  20;
    zkb2  =  20 ;
    IN1   = 1;
    IN2   = 0;
    IN3   = 1;
    IN4   = 0;
}

void stop(void)
{   zkb1 = 0;
    zkb2 = 0;
    IN1  = 0;
    IN2  = 0;
    IN3  = 0;
    IN4  = 0;
}

void rightrun(void)
{
    zkb1 = 45;
    zkb2 = 45;
    IN1  = 1;
    IN2  = 0;
    IN3  = 0;
    IN4  = 1;
}

void leftrun(void)
{
    zkb1 = 45;
    zkb2 = 45;
    IN1  = 0;
    IN2  = 1;
    IN3  = 1;
    IN4  = 0;
}


void main()
{
   
    PIT_Init();
    while(1)
    {
    if(hdy1==1)
    {
      rightrun();
    }
    else if(hdz1==1)
    {
        leftrun();
    }
    else
    {
    run();
    }
  
}

}

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

使用道具 举报

沙发
ID:554500 发表于 2022-5-16 23:05 | 只看该作者
个人思路:
ENA和ENB是门控位,一般直接高电平.两个输入脚,一个接地,另外一个做PWM调速.这样只能是单向调速.
双向调速参考下图:<可下载仿真试试>


L298N驱动直流电机.zip

20.66 KB, 下载次数: 6

回复

使用道具 举报

板凳
ID:1026496 发表于 2022-5-16 23:23 | 只看该作者
单片机和减速电机没有共地?
回复

使用道具 举报

地板
ID:844772 发表于 2022-5-17 08:43 | 只看该作者
1、你的程序跟图不一样啊,程序是从ENA/ENB注入pwm,图上直接把这俩拉高了。2、你pwm使用的中断写法有点问题,最好用自动重装模式,频率也没必要那么高。3、直行时占比调的太低,电机pwm调节不是线性,低于50%扭矩会下降很快,你用万用表先测一下。总之,主要是电路问题,最好能上个实物图或你实际用的电路图。
回复

使用道具 举报

5#
ID:94031 发表于 2022-5-17 10:05 | 只看该作者
增加脉宽调制导通时间,现在驱动力不够。
回复

使用道具 举报

6#
ID:999667 发表于 2022-5-17 12:01 | 只看该作者
18701931930 发表于 2022-5-16 23:05
个人思路:
ENA和ENB是门控位,一般直接高电平.两个输入脚,一个接地,另外一个做PWM调速.这样只能是单向调速. ...

好的,谢谢大佬
回复

使用道具 举报

7#
ID:999667 发表于 2022-5-17 12:02 | 只看该作者
glinfei 发表于 2022-5-17 08:43
1、你的程序跟图不一样啊,程序是从ENA/ENB注入pwm,图上直接把这俩拉高了。2、你pwm使用的中断写法有点问 ...

知道了,谢谢大佬
回复

使用道具 举报

8#
ID:999667 发表于 2022-5-17 12:03 | 只看该作者
glinfei 发表于 2022-5-17 08:43
1、你的程序跟图不一样啊,程序是从ENA/ENB注入pwm,图上直接把这俩拉高了。2、你pwm使用的中断写法有点问 ...

大佬,这图不是我的
回复

使用道具 举报

9#
ID:999667 发表于 2022-5-17 12:05 | 只看该作者
yaoyao2022 发表于 2022-5-16 23:23
单片机和减速电机没有共地?

共了,我好像找到问题了,别的接线问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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