智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 6400|回复: 21
打印 上一主题 下一主题

[硬件类] 298 电机驱动 程序

  [复制链接]

5

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
375
威望
230
贡献
89
兑换币
58
注册时间
2012-8-19
在线时间
28 小时
跳转到指定楼层
1#
发表于 2012-8-31 16:39:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
下面是298电机驱动程序 不知道为什么 电机就是转不了!  那位 大侠 看看是不是程序的问题?


#include<reg52.h>
#define  uchar unsigned char
#define uint unsigned int
void delay_ms(uint x)
{
uchar i,j;
for(i=0;i<x;i++)
  for(j=0;j<110;j++);
}
void main()
{
  while(1)
  
  {P1=0x88;
   delay_ms(1);
   P1=0x44;
   delay_ms(1);
  P1=0x22;
delay_ms(1)
   P1=0x11;
  delay_ms(1)

  }
}

3

主题

696

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5361

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

威望
3197
贡献
966
兑换币
631
注册时间
2012-8-11
在线时间
599 小时
2#
发表于 2012-9-1 19:05:50 | 只看该作者
连线没问题么?为什么用总线赋值啊?用P1^0控制就行啦。。。用PWM波测试。。。
回复

使用道具 举报

5

主题

26

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
375
威望
230
贡献
89
兑换币
58
注册时间
2012-8-19
在线时间
28 小时
3#
 楼主| 发表于 2012-9-2 09:26:42 | 只看该作者
位和总线有什么区别吗?怎么用PWM波测试?
回复

使用道具 举报

8

主题

39

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1700
威望
912
贡献
408
兑换币
130
注册时间
2011-12-23
在线时间
190 小时
4#
发表于 2012-9-2 18:27:17 | 只看该作者
答:解决办法一:把L298N的使能端直接接5V,看电机是否正常,如果正常是程序问题,不正常,LED98N接线错误。
      解决办法二:用示波器接单片机的IO口,看下控制LED98N的使能端输出波形是否正常,高电平占空比低是带不动电机的。
      解决办法三:控制L298N的使能端使用位控制,程序改为P1.0之类的位去控制电机使能端。

    最后希望能帮助你解决问题,祝你有美好的一天。
回复

使用道具 举报

0

主题

1

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
252
威望
160
贡献
70
兑换币
4
注册时间
2012-3-26
在线时间
11 小时
毕业学校
枣庄学院
5#
发表于 2012-9-6 09:10:31 | 只看该作者
你先检测驱动是否正常工作,看一下是低电平为有效信号还是高电平,自己是一下,然后用pwm模块输出pwm波形,若没有,测用定时器自己做pwm,然后再进行控制
回复

使用道具 举报

0

主题

1

帖子

0

精华

注册会员

Rank: 2

积分
146
威望
112
贡献
34
兑换币
0
注册时间
2012-8-30
在线时间
3 小时
毕业学校
河海大学
6#
发表于 2012-9-16 10:46:39 | 只看该作者
不要对P1总线赋值(感觉你不太懂电机控制原理啊),控制电机只需要2个IO口输出信号就可以了,你可以选P0^1 P0^2两个口来给电机输出信号,电机信号就是PWM波,说白了PWM就是有时是高电压 有时是低电压,来告诉电机什么时候转什么时候不转,反映在直观上就是转速的快慢,这样就可以控制了。给你个例程。
#include<reg52.h>
#define  uchar unsigned char
#define  uing unsigned int
sbit moto1=P0^0; //+
sbit moto2=P2^1; //-
unsigned char count,count2;
void main()
{
EA=1;
moto1=1;
moto2=0;
TMOD=0X11;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
TR0=1;
ET0=1;
while(1)
{}
}
void t1()interrupt 1
{
   count2++;
   if(count2==60)
   {
    moto1=0;
   }
   if(count2==100)
   {
    moto1=1;
count2=0;
   }
   TH0=(65536-100)/256;
   TL0=(65536-100)%256;
}
这是51利用软件给的一个简单的pwm波周期10ms占空比60%.

回复

使用道具 举报

68

主题

1086

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4578

活跃会员奖章优秀会员奖章论坛元老奖章论坛骨干奖章在线王奖章

QQ
威望
2515
贡献
1213
兑换币
1382
注册时间
2012-9-19
在线时间
425 小时
7#
发表于 2012-9-26 22:59:17 | 只看该作者
谢谢,上面的哥们
回复

使用道具 举报

53

主题

2469

帖子

0

精华

跨届大侠

狙击手

Rank: 10Rank: 10Rank: 10

积分
11290

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章论坛骨干奖章资源大师奖章

威望
4701
贡献
3671
兑换币
2368
注册时间
2012-3-12
在线时间
1459 小时
8#
发表于 2012-10-30 14:56:51 | 只看该作者
这~~~~~~~~~~~~~~~~~
回复

使用道具 举报

0

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
28
贡献
14
兑换币
10
注册时间
2012-10-17
在线时间
1 小时
9#
发表于 2012-11-2 23:08:54 | 只看该作者
杜岳丰 发表于 2012-9-16 10:46
不要对P1总线赋值(感觉你不太懂电机控制原理啊),控制电机只需要2个IO口输出信号就可以了,你可以选P0^1  ...

高手啊!
回复

使用道具 举报

0

主题

6

帖子

0

精华

注册会员

Rank: 2

积分
44
威望
28
贡献
14
兑换币
10
注册时间
2012-10-17
在线时间
1 小时
10#
发表于 2012-11-2 23:09:50 | 只看该作者
我不懂电机驱动……
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-17 21:47 , Processed in 0.049578 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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