智能车制作

标题: 真的是菜菜鸟,使用STC12C5A60S2做简单寻迹车的PWM问题 [打印本页]

作者: 向阳的++    时间: 2014-7-23 18:47
标题: 真的是菜菜鸟,使用STC12C5A60S2做简单寻迹车的PWM问题
这个暑假想学做一下智能循迹小车,现在遇到一个车速无法控制的问题,卡了好多天了都解决不了问题,求各位大大帮助

单片机型号:STC12C5A60S2
驱动模块:L298N驱动模块
电源:18650电池两节

现在附上程序和驱动模块接线示意图:(程序现在不考虑循迹的情况,这款单片机PWM输出口是P13和P14,接到使能端ENA和ENB之后,电机不转。要是ENA和ENB接高电平小车可以全速转,单片机最小系统没有接复位电路)
[attach]65705[/attach]
#include<12C5A60S2.h>
#include<intrins.h>
#include<math.h>

#define uint unsigned int
#define uchar unsigned char


sbit L1=P0^0;
sbit L2=P0^1;
sbit R1=P0^2;
sbit R2=P0^3;

/*PWM初始化函数*/
void PWM_init(void)                               
{
        CMOD=0x02;
        CCAPM0=0x42;                        
        CCAPM1=0x42;                       
        CCAP1L=0x00;                       
        CCAP1H=0x00;                                                
        CCAP0L=0x00;               
        CCAP0H=0x00;               
        L1=0;
        L2=0;
        R1=0;
        R2=0;
        CR=1;                     
}


/***************************************************************************
函数名称:行走函数
函数功能:驱动电机
函数备注:x为左边电机的速度,y为右边电机的速度
                  -255<x<255,-255<y<255
                  0~255向前,-255~-1向后,绝对值越大,速度越大
***************************************************************************/
void RUN(int x,int y)                          
{
        if(y>0)
        {
                CCAP0L=y;                       
                CCAP0H=y;       
                R1=0;
                R2=1;
        }
        else
        {
                CCAP0L=-y;                       
                CCAP0H=-y;                       
                R1=1;
                R2=0;
        }
        if(x>0)
        {
                CCAP1L=x;                       
                CCAP1H=x;                               
                L1=0;
                L2=1;
        }
        else
        {
                CCAP1L=-x;                       
                CCAP1H=-x;                       
                L1=1;
                L2=0;
        }
}

void delay2s(void)   //误差 -0.000000000111us
{
    unsigned char a,b,c,n;
    for(c=142;c>0;c--)
        for(b=168;b>0;b--)
            for(a=250;a>0;a--);
    for(n=2;n>0;n--);
    _nop_();  //if Keil,require use intrins.h
}



void main()
{
   delay2s();
   PWM_init();
while(1)
{
  RUN(-100,100);
}
}


作者: 筑梦9103    时间: 2014-7-23 18:55
PWM控制啊
作者: 向阳的++    时间: 2014-7-23 19:10
筑梦9103 发表于 2014-7-23 18:55
PWM控制啊

我也是想用单片机自身的PWM控制,但是不知道为什么就是实现不了,就想请你们看看我的接线或者程序有没有什么问题

作者: wajuka    时间: 2014-7-23 21:43
买的模块应该没有问题 多看下还不是程序的问题
作者: 向阳的++    时间: 2014-7-23 21:57
wajuka 发表于 2014-7-23 21:43
买的模块应该没有问题 多看下还不是程序的问题

可以帮我看下接线有没有问题吗?

作者: 筑梦9103    时间: 2014-7-23 22:19
I/O接到示波器上看一下不久明了了。
接线有没问题,信号发生器是干嘛的啊
作者: 魔亦有道    时间: 2014-7-23 22:47
P1^3,P1^4,你没有用,别的地方没有看出来错误,你先改改看看

作者: wmslecz    时间: 2014-7-24 00:59
玩玩没想到...
作者: 向阳的++    时间: 2014-7-24 10:45
筑梦9103 发表于 2014-7-23 22:19
I/O接到示波器上看一下不久明了了。
接线有没问题,信号发生器是干嘛的啊

现在在家里,不在学校的实验室,没设备啊

作者: 向阳的++    时间: 2014-7-24 10:47
魔亦有道 发表于 2014-7-23 22:47
P1^3,P1^4,你没有用,别的地方没有看出来错误,你先改改看看

P1^3和P1^4没有声明,直接接跳线到ENA和ENB,我是这样接的....

作者: 向阳的++    时间: 2014-7-24 12:19
谢谢各位大大,问题解决了,原来我特么有一条跳线接错了,程序写的是P00-P03,我接的是P01-P04
作者: wajuka    时间: 2014-7-24 12:48
向阳的++ 发表于 2014-7-23 21:57
可以帮我看下接线有没有问题吗?

没用过这个模块 看你上面标的 应该没错

作者: 向阳的++    时间: 2014-7-24 12:56
wajuka 发表于 2014-7-24 12:48
没用过这个模块 看你上面标的 应该没错

谢谢啦,,确实没接错,现在问题解决了,好开心

作者: wajuka    时间: 2014-7-24 13:14
向阳的++ 发表于 2014-7-24 12:56
谢谢啦,,确实没接错,现在问题解决了,好开心

那是怎么回事呢

作者: 魔亦有道    时间: 2014-7-26 09:44
向阳的++ 发表于 2014-7-24 10:47
P1^3和P1^4没有声明,直接接跳线到ENA和ENB,我是这样接的....

我还是没有看明白你的P0口是干嘛的,如果是用pwm的话是不能用普通的输入in的,有专用的pwm脚在驱动上边,你看看是不这里不对啊

作者: 向阳的++    时间: 2014-7-29 10:52
wajuka 发表于 2014-7-24 13:14
那是怎么回事呢

好几天没上论坛,是这样的,我驱动上接INA-IND的是P0^1-P0^4,可是程序上写的是P0^0-P0^3.调整过来马上好了。
作者: 向阳的++    时间: 2014-7-29 10:55
魔亦有道 发表于 2014-7-26 09:44
我还是没有看明白你的P0口是干嘛的,如果是用pwm的话是不能用普通的输入in的,有专用的pwm脚在驱动上边, ...

那个P0口是接在INA-IND上的,用来控制电机转向,就是输出01-10-11-10这四种状态,然后PWM输出口再另外接在ENA和ENB..

作者: 魔亦有道    时间: 2014-7-29 16:52
哦哦,和我用的驱动不一样告诉错了,我以为都一样呢,不好意啊
作者: 我累了(橙羊    时间: 2015-4-10 15:56
我照着你的程序写进去 ,电机也不动啊,就P1^3,P1^4两个端口灯亮着。。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2