智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6719|回复: 18
打印 上一主题 下一主题

[光电] 真的是菜菜鸟,使用STC12C5A60S2做简单寻迹车的PWM问题

  [复制链接]

1

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
23
贡献
11
兑换币
11
注册时间
2014-7-23
在线时间
5 小时
毕业学校
北京理工大学珠海学院
跳转到指定楼层
#
发表于 2014-7-23 18:47:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
1贡献
这个暑假想学做一下智能循迹小车,现在遇到一个车速无法控制的问题,卡了好多天了都解决不了问题,求各位大大帮助

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

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

#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);
}
}

附件: 您需要 登录 才可以下载或查看,没有帐号?注册
回复

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
54
威望
38
贡献
10
兑换币
9
注册时间
2015-3-13
在线时间
3 小时
毕业学校
金陵科技学院
18#
发表于 2015-4-10 15:56:31 | 只看该作者
我照着你的程序写进去 ,电机也不动啊,就P1^3,P1^4两个端口灯亮着。。
回复

使用道具 举报

0

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
810
威望
426
贡献
272
兑换币
285
注册时间
2013-10-8
在线时间
56 小时
17#
发表于 2014-7-29 16:52:08 | 只看该作者
哦哦,和我用的驱动不一样告诉错了,我以为都一样呢,不好意啊
回复

使用道具 举报

1

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
23
贡献
11
兑换币
11
注册时间
2014-7-23
在线时间
5 小时
毕业学校
北京理工大学珠海学院
16#
 楼主| 发表于 2014-7-29 10:55:21 | 只看该作者
魔亦有道 发表于 2014-7-26 09:44
我还是没有看明白你的P0口是干嘛的,如果是用pwm的话是不能用普通的输入in的,有专用的pwm脚在驱动上边, ...

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

使用道具 举报

1

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
23
贡献
11
兑换币
11
注册时间
2014-7-23
在线时间
5 小时
毕业学校
北京理工大学珠海学院
15#
 楼主| 发表于 2014-7-29 10:52:05 | 只看该作者
wajuka 发表于 2014-7-24 13:14
那是怎么回事呢

好几天没上论坛,是这样的,我驱动上接INA-IND的是P0^1-P0^4,可是程序上写的是P0^0-P0^3.调整过来马上好了。
回复

使用道具 举报

0

主题

16

帖子

0

精华

高级会员

Rank: 4

积分
810
威望
426
贡献
272
兑换币
285
注册时间
2013-10-8
在线时间
56 小时
14#
发表于 2014-7-26 09:44:43 | 只看该作者
向阳的++ 发表于 2014-7-24 10:47
P1^3和P1^4没有声明,直接接跳线到ENA和ENB,我是这样接的....

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

使用道具 举报

6

主题

257

帖子

0

精华

高级会员

Rank: 4

积分
743
威望
353
贡献
234
兑换币
241
注册时间
2013-10-12
在线时间
78 小时
13#
发表于 2014-7-24 13:14:37 | 只看该作者
向阳的++ 发表于 2014-7-24 12:56
谢谢啦,,确实没接错,现在问题解决了,好开心

那是怎么回事呢
回复

使用道具 举报

1

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
23
贡献
11
兑换币
11
注册时间
2014-7-23
在线时间
5 小时
毕业学校
北京理工大学珠海学院
12#
 楼主| 发表于 2014-7-24 12:56:51 | 只看该作者
wajuka 发表于 2014-7-24 12:48
没用过这个模块 看你上面标的 应该没错

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

使用道具 举报

6

主题

257

帖子

0

精华

高级会员

Rank: 4

积分
743
威望
353
贡献
234
兑换币
241
注册时间
2013-10-12
在线时间
78 小时
11#
发表于 2014-7-24 12:48:41 | 只看该作者
向阳的++ 发表于 2014-7-23 21:57
可以帮我看下接线有没有问题吗?

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

使用道具 举报

1

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
23
贡献
11
兑换币
11
注册时间
2014-7-23
在线时间
5 小时
毕业学校
北京理工大学珠海学院
10#
 楼主| 发表于 2014-7-24 12:19:40 | 只看该作者
谢谢各位大大,问题解决了,原来我特么有一条跳线接错了,程序写的是P00-P03,我接的是P01-P04
回复

使用道具 举报

1

主题

9

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
23
贡献
11
兑换币
11
注册时间
2014-7-23
在线时间
5 小时
毕业学校
北京理工大学珠海学院
9#
 楼主| 发表于 2014-7-24 10:47:15 | 只看该作者
魔亦有道 发表于 2014-7-23 22:47
P1^3,P1^4,你没有用,别的地方没有看出来错误,你先改改看看

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

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-30 15:05 , Processed in 0.302727 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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