4178|10

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

L298N控制直流电机 [复制链接]

  1. #include <reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit ENA=P1^2;
  5. sbit IN1=P1^3;
  6. sbit IN2=P1^4;
  7. sbit ENB=P1^5;
  8. sbit IN3=P1^6;
  9. sbit IN4=P1^7;

  10. uint MA=0;  
  11. uint speedA=50;
  12. int flag=0;

  13. void timeinit()
  14. {
  15.         TMOD=0x01;
  16.         TH0=(65536-10000)/256;
  17.         TL0=(65536-10000)%256;
  18.         EA=1;
  19.         ET0=1;
  20.         TR0=1;
  21. }

  22. void Ques1()
  23. {
  24.         switch(flag/10)
  25.         {
  26.                 case 0:        TR0=0;
  27.                                                 if(MA<speedA)
  28.                                                 {
  29.                                                                 ENA=1;ENB=1;
  30.                                                                 IN1=1;IN2=0;
  31.                                                                 IN3=0;IN4=1;
  32.                                                 }
  33.                                                 else
  34.                                                 {
  35.                                                         if(speedA<=MA<100)
  36.                                                         {
  37.                                                                         ENA=0;
  38.                                                                         ENB=0;
  39.                                                         }
  40.                                                         else       
  41.                                                         {
  42.                                                                         MA=0;       
  43.                                                                         flag++;                                                                                                                                               
  44.                                                         }                                                       
  45.                                                 }
  46.                                                 TR0=1;
  47.                                                 break;
  48.                 case 1: TR0=0;
  49.                                                 if(MA<speedA)
  50.                                                 {
  51.                                                                 ENA=1;ENB=1;
  52.                                                                 IN1=0;IN2=1;
  53.                                                                 IN3=1;IN4=0;
  54.                                                 }
  55.                                                 else
  56.                                                 {
  57.                                                         if(speedA<=MA<100)
  58.                                                         {
  59.                                                                         ENA=0;
  60.                                                                         ENB=0;       
  61.                                                         }
  62.                                                         else
  63.                                                         {
  64.                                                                         MA=0;       
  65.                                                                         flag++;                                                               
  66.                                                         }       
  67.                                                 }
  68.                                           TR0=1;
  69.                                                 break;
  70.                 default : flag=0;
  71.                                                         break;
  72.         }
  73. }

  74. void time0() interrupt 1
  75. {
  76.         TH0=(65536-10000)/256;
  77.         TL0=(65536-10000)%256;
  78.         MA++;       
  79. }

  80. void main()
  81. {       
  82.         timeinit();
  83.         while(1)
  84.         {
  85.                 Ques1();
  86.         }
  87. }
复制代码


我想问下,为什么这个程序无法同时控制电机正反转,现在问题是单片机按着复位键,IN1和IN2控制的电机才会启动,不按复位键不启动,IN3和IN4控制的电机在5s后也会停止转动,这是为什么?我的目的是IN1和IN2控制的电机1正转,同时IN3和IN4控制的电机2反转,过1s之后电机1正转电机2反转。
此帖出自电源技术论坛

最新回复

很好   详情 回复 发表于 2020-4-24 21:55
点赞 关注
 
 

回复
举报

3471

帖子

11

TA的资源

五彩晶圆(高级)

推荐
 
用示波器或逻辑分析仪测量IN1等四个点的波形。要是没有工具,就把电机去掉,换成几百欧的电阻。把定时器中断频率降低,使万用表可以大概测出IN1等四个点电平变化。分析时序是否正常。
此帖出自电源技术论坛
 
 
 

回复

1658

帖子

1

TA的资源

纯净的硅(高级)

推荐
 
好好看看语法规则,不确定的话可以多加几个括号

if(speedA<=MA<100)
等价于
if((0 or 1) <100)
其中 speedA<=MA ? 1: 0

试试
if(speedA<=MA && MA <100)
也就是 if( (speedA<=MA)  && (MA <100)  )
此帖出自电源技术论坛
 
 
 

回复

1万

帖子

142

TA的资源

版主

沙发
 
根据硬件工作原理自己写程序,IO状态用万用表测。
此帖出自电源技术论坛
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
chunyang 发表于 2017-5-6 16:52
根据硬件工作原理自己写程序,IO状态用万用表测。

这个程序就是自己写的,目前不知道哪里出问题
此帖出自电源技术论坛

点评

控制电机启停、转向就是IO状态而已,用万用表检查IO状态,但先确认MCU正常工作、程序编译及烧录正确。  详情 回复 发表于 2017-5-7 00:01
 
 
 

回复

128

帖子

1

TA的资源

一粒金砂(中级)

4
 
定时器没设置好,参看网上教程,祝好~
此帖出自电源技术论坛
 
 
 

回复

4005

帖子

0

TA的资源

版主

5
 
你测一下l298四个输入信号的电压。
此帖出自电源技术论坛
 
 
 

回复

1万

帖子

142

TA的资源

版主

6
 
xiaocaiji 发表于 2017-5-6 16:55
这个程序就是自己写的,目前不知道哪里出问题

控制电机启停、转向就是IO状态而已,用万用表检查IO状态,但先确认MCU正常工作、程序编译及烧录正确。
此帖出自电源技术论坛
个人签名上传了一些书籍资料,也许有你想要的:https://download.eeworld.com.cn/user/chunyang
 
 
 

回复

1658

帖子

1

TA的资源

纯净的硅(高级)

7
 
“speedA<=MA<100” 这条语句写的有问题
此帖出自电源技术论坛
 
 
 

回复

2

帖子

1

TA的资源

一粒金砂(初级)

10
 
还需要调试
此帖出自电源技术论坛
 
 
 

回复

2

帖子

1

TA的资源

一粒金砂(初级)

11
 

很好

此帖出自电源技术论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表