搁浅的风度 发表于 2014-9-8 20:09:28

为什么这样调速调不了

/********************
* 文件名:L298N.c
* ******************/
#include <stc12C5A60S2.H>
#include "LN298.h"

sbit OUTA_1 = P2^0;   //控制左轮
sbit OUTA_2 = P2^1;
sbit OUTB_1 = P2^2;   //控制右轮
sbit OUTB_2 = P2^7;
/**********PWM控制速度*********/
void PWM_INIT(void)
{
        CCON = 0;
        CMOD = 0x02;
        CL = 0x00;
        CH = 0x00;
CCAPM0 = 0x42;
CCAPM1 = 0x42;       
}
/*
* 函数名:STOP_CAR
* 描述:小车停止
* 输入:无
* 输出:无       
*/
void CAR_STOP(void)
{   
    OUTA_1 = 0;
          OUTA_2 = 0;
          OUTB_1 = 0;
          OUTB_2 = 0;
}

/*
* 函数名:CAR_Go_Forward
* 描述:小车前进
* 输入:无
* 输出:无       
*/
void CAR_Go_Forward(void)
{
   
    OUTA_1 = 1;
          OUTA_2 = 0;
          OUTB_1 = 0;
          OUTB_2 = 1;
       
}

/*
* 函数名:CAR_Left
* 描述:小车向左走
* 输入:无
* 输出:无       
*/
void CAR_Left(void)
{
    OUTA_1 = 0;
          OUTA_2 = 0;
          OUTB_1 = 0;
          OUTB_2 = 1;
}

/*
* 函数名:CAR_Right
* 描述:小车向右走
* 输入:无
* 输出:无       
*/
void CAR_Right(void)
{
    OUTA_1 = 0;
          OUTA_2 = 1;
          OUTB_1 = 0;
          OUTB_2 = 0;
}

/*******右轮后退*********/
void Right_back(void)
{
                OUTA_1 = 0;
          OUTA_2 = 0;
          OUTB_1 = 1;
          OUTB_2 = 0;
}
void Left_back(void)
{
    OUTA_1 = 1;
          OUTA_2 = 0;
          OUTB_1 = 0;
          OUTB_2 = 0;
}
void main()
{
while(1)
{
PWM_INIT();
CCAP1L=0xC0;
CCAP1H=0xC0;//pwm1,P1.4
        CCAP0L=0x40;//pwm0,p1.3
CCAP0H=0x40;//越大低电平时间越久
CR = 1;
CAR_Go_Forward();
}
}
这是我用来测试调速的,为什么调不了速度呢?
四轮驱动,但是左边的两个电机是并联的,右边的两个电机也是并联的,用的是一个L298N驱动模块,求问为什么调速调不了,

shishine 发表于 2014-9-8 20:16:14

总感觉少了些什么。

foxcase 发表于 2014-9-8 20:17:43

你的波形在哪里产生

搁浅的风度 发表于 2014-9-8 20:26:55

foxcase 发表于 2014-9-8 20:17
你的波形在哪里产生

stc12c5a60s2有两路的pwm输出,设置占空比就可以了

搁浅的风度 发表于 2014-9-8 20:27:41

shishine 发表于 2014-9-8 20:16
总感觉少了些什么。

少了啥?调了好久了没调出来

oner 发表于 2014-9-8 20:32:18

本帖最后由 oner 于 2014-9-8 20:33 编辑

“这是我用来测试调速的,为什么调不了速度呢? ”
粗略一看你的程序,好像你是固定占空比了吧。既然固定了占空比,速度就固定了啊。

搁浅的风度 发表于 2014-9-8 20:37:05

oner 发表于 2014-9-8 20:32
“这是我用来测试调速的,为什么调不了速度呢? ”
粗略一看你的程序,好像你是固定占空比了吧。既然固定了 ...

是固定了,但是两路的pwm的占空比是不同的,所以应该是左右两路的速度应该是不一样的

搁浅的风度 发表于 2014-9-8 20:37:42

oner 发表于 2014-9-8 20:32
“这是我用来测试调速的,为什么调不了速度呢? ”
粗略一看你的程序,好像你是固定占空比了吧。既然固定了 ...

可是现在虽然占空比不一样,但是左右的速度还是一样的

tabing 发表于 2014-9-8 20:38:53

CCAP0H=0x40;//越大低电平时间越久???
这个是调占空比的吗?后面一直都没用上

oner 发表于 2014-9-8 20:44:03

搁浅的风度 发表于 2014-9-8 20:37
是固定了,但是两路的pwm的占空比是不同的,所以应该是左右两路的速度应该是不一样的 ...

当然,你说的没错。
但是看你的代码
void main()
{
while(1)
{
PWM_INIT();
CCAP1L=0xC0;
CCAP1H=0xC0;//pwm1,P1.4
      CCAP0L=0x40;//pwm0,p1.3
CCAP0H=0x40;//越大低电平时间越久
CR = 1;
CAR_Go_Forward();
}
}
根本就是一样的占空比~

搁浅的风度 发表于 2014-9-8 20:59:38

tabing 发表于 2014-9-8 20:38
CCAP0H=0x40;//越大低电平时间越久???
这个是调占空比的吗?后面一直都没用上 ...

占空比不是设定了就可以么?后面还要怎么用?

搁浅的风度 发表于 2014-9-8 21:00:17

oner 发表于 2014-9-8 20:44
当然,你说的没错。
但是看你的代码
void main()


那要怎么调整?

tabing 发表于 2014-9-8 21:02:59

搁浅的风度 发表于 2014-9-8 20:59
占空比不是设定了就可以么?后面还要怎么用?

看你前面说的是通过占空比来调速的,现在你占空比固定了怎么调速?

tabing 发表于 2014-9-8 21:07:18

      CCAP0L=0x40;//pwm0,p1.3
CCAP0H=0x40;//越大低电平时间越久
lz复制粘贴了?
还是前面的网友提示得对

oner 发表于 2014-9-8 21:08:05

搁浅的风度 发表于 2014-9-8 21:00
那要怎么调整?

其实你思路还是清晰的。你说过改变占空比来调速。正确。那就改变占空比就达到目的了。
举个简单“栗子”,逐步减小占空比,速度原来越慢:
for(i=0;i<255;i++)
{
        CCAP0H = i ;
}
其他的自己发挥去吧

bccuje_love 发表于 2014-9-8 21:11:53

占空比固定了,当然调不了

搁浅的风度 发表于 2014-9-8 21:21:44

bccuje_love 发表于 2014-9-8 21:11
占空比固定了,当然调不了

好吧,难道我用词不准确?我说的调速是调左右的速度不一样,把左右的占空比设置不一样不就是左右的速度不一样么,你们说的调速是通过按键来调么?

nade 发表于 2014-9-8 21:22:25

明显代码问题

搁浅的风度 发表于 2014-9-8 21:32:30

nade 发表于 2014-9-8 21:22
明显代码问题

哪里的问题?

lxa0 发表于 2014-9-8 22:08:17

调速时pwm应该是变化的呀

搁浅的风度 发表于 2014-9-9 07:42:35

lxa0 发表于 2014-9-8 22:08
调速时pwm应该是变化的呀

我只是在转弯的时候调速,调左右的速度不一样,使得小车转弯,

define_avr 发表于 2014-9-9 08:24:04

会不会电机并联的线焊错了?

lxa0 发表于 2014-9-9 13:58:37

搁浅的风度 发表于 2014-9-9 07:42
我只是在转弯的时候调速,调左右的速度不一样,使得小车转弯,

我说的就是在转弯的时候pwm要变化
比如向左转的话
左边的轮子速度要慢甚至要倒转
右边的轮子速度要快
这样才能向左传

而走直线的时候两边的轮子速度要一样

tabing 发表于 2014-9-9 14:25:34

你还是上示波器看一下出来的波形吧

tabing 发表于 2014-9-9 14:27:17

lxa0 发表于 2014-9-9 13:58
我说的就是在转弯的时候pwm要变化
比如向左转的话
左边的轮子速度要慢甚至要倒转


看你的代码,转弯的时候没有调pwn
只是在init里面设置了一下

lxa0 发表于 2014-9-9 23:43:06

tabing 发表于 2014-9-9 14:27
看你的代码,转弯的时候没有调pwn
只是在init里面设置了一下

我的代码是以呼吸灯形式做的试验呀
你要用的话得做改动
不可直接用

搁浅的风度 发表于 2014-9-10 10:58:28

oner 发表于 2014-9-8 21:08
其实你思路还是清晰的。你说过改变占空比来调速。正确。那就改变占空比就达到目的了。
举个简单“栗子” ...

好吧,我明白了,谢谢!

搁浅的风度 发表于 2014-9-10 10:58:55

lxa0 发表于 2014-9-9 23:43
我的代码是以呼吸灯形式做的试验呀
你要用的话得做改动
不可直接用

嗯,好的,谢谢

搁浅的风度 发表于 2014-9-10 10:59:27

tabing 发表于 2014-9-9 14:27
看你的代码,转弯的时候没有调pwn
只是在init里面设置了一下

哦,好吧,我明白了,受益匪浅!

搁浅的风度 发表于 2014-9-10 10:59:53

lxa0 发表于 2014-9-9 13:58
我说的就是在转弯的时候pwm要变化
比如向左转的话
左边的轮子速度要慢甚至要倒转


         嗯,我知道怎么用了,谢谢

青龙 发表于 2014-9-10 11:11:34

嘿嘿,顶一下顶一下

wanderhope 发表于 2014-9-10 11:33:09

难道不应该先用示波器看PWM波形?

foxcase 发表于 2014-9-10 16:13:46

没有改变占空比 哪有波形呢

wshg 发表于 2014-9-12 22:37:24

差速转向

dsp56789 发表于 2014-9-13 07:33:08

应该通过占空比来调速的,占空比固定了速度如何调
页: [1]
查看完整版本: 为什么这样调速调不了