关于直流电机调速的一些疑惑。
正在做智能小车,遇到电机调速这个模块,不懂具体程序实施方法,我知道是用PWM来调制,我搞不懂的是这个PWM信号到底是接控制电机的两个输出接口 out1 out2然后给改变他们的占空比,还是接l298n的使能端ENa 来控制的?我看到网上的一些调速程序着实看不懂。郁闷,大神能不能说一下具体实现方法,然后写一段简短的程序让我参考一下。。在这里麻烦大神了。 out1,out2,ENa中的其中一个都可以,最好是out1或out2,例如out1,ENa设为高电平,则out2就为PWM控制 这个是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;
} 李鸿鸿 发表于 2013-6-19 22:03 static/image/common/back.gif
这个是STC12C5A60S2单片机控制PWM的,虽然把PWM改为定时器,但定时器可以输出PWM
#include"pwm.h"
#include ...
嗯,我试了,在ena端口也能调速。。不过我还在使用STC89c52.这芯片,过段时间也该换块芯片玩玩了。。
页:
[1]