关于直流电机调速的一些疑惑。

2020-01-27 11:51发布

正在做智能小车,遇到电机调速这个模块,不懂具体程序实施方法,我知道是用PWM来调制,我搞不懂的是这个PWM信号到底是接控制电机的两个输出接口 out1 out2然后给改变他们的占空比,还是接l298n的使能端ENa 来控制的?我看到网上的一些调速程序着实看不懂。郁闷,大神能不能说一下具体实现方法,然后写一段简短的程序让我参考一下。。在这里麻烦大神了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
李鸿鸿
1楼-- · 2020-01-27 14:23
out1,out2,ENa中的其中一个都可以,最好是out1或out2,例如out1,ENa设为高电平,则out2就为PWM控制
李鸿鸿
2楼-- · 2020-01-27 15:30
这个是STC12C5A60S2单片机控制PWM的,虽然把PWM改为定时器,但定时器可以输出PWM
#include"pwm.h"
#include<reg52.h>
#include"Dingyi.h"

uint value1,value2;  
uchar cnt1,cnt2,k1,k2;              //控制电机变量

void pwm_chushihua()
{
   cnt1=0;
   cnt2=0;

   EN_A=1;
   m1=0;
   m2=0;
   EN_B=1;
   m3=0;
   m4=0;

   value1=THz;
   CCAP0L=value1;
   CCAP0H=value1>>8;
   value1+=THz;
   CCAPM0=0x49;

   value2=THz;
   CCAP1L=value2;
   CCAP1H=value2>>8;
   value2+=THz;
   CCAPM1=0x49;
         
         CCON=0;

   CL=0;
   CH=0;
   CMOD=0x00;
}

void PCA_int0() interrupt 7 using 1        //PCA中断
{
   if(CCF0==1)
   {
     CCF0=0;
     CCAP0L=value1;
     CCAP0H=value1>>8;
     value1+=THz;
     if(cnt1++<=k1)
     {
               m2=1;
     }
     else
     {
               m2=0;
     }
     if(cnt1>100)
        cnt1=0;                       
   }

   if(CCF1==1)
   {
     CCF1=0;
     CCAP1L=value2;
     CCAP1H=value2>>8;
     value2+=THz;
     if(cnt2++<=k2)
     {
               m3=1;
     }
     else
     {
               m3=0;
     }
     if(cnt2>100)
        cnt2=0;
   }
}

void Output1(uchar x)      //PWM1输出控制左边电机
{
   k1=x;
}

void Output2(uchar x)      //PWM1输出控制左边电机
{
   k2=x;
}
大哈欠E
3楼-- · 2020-01-27 19:47
李鸿鸿 发表于 2013-6-19 22:03
这个是STC12C5A60S2单片机控制PWM的,虽然把PWM改为定时器,但定时器可以输出PWM
#include"pwm.h"
#include ...

嗯,我试了,在ena端口也能调速。。不过我还在使用STC89c52.这芯片,过段时间也该换块芯片玩玩了。。

一周热门 更多>