找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4459|回复: 14
打印 上一主题 下一主题
收起左侧

请问c51小车怎样通过延时函数控制直流电机转弯90度,或者不用延时,应怎样实现?

  [复制链接]
跳转到指定楼层
楼主
ID:366033 发表于 2018-8-23 13:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不要求精度高,只想知道具体的思路,谢谢各位大佬了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:388013 发表于 2018-8-23 15:15 | 只看该作者
这个受外界干扰比较大如果有固定的九十度轨迹可以用外设来控制,比如黑线循迹使用红外线传感器控制

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:317046 发表于 2018-8-23 16:04 | 只看该作者
可以先让一边电机停止同时另一边转动,这样就可以实现转弯,但是转过多少度跟延时时间有关,所以需要自己测试调节

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

地板
ID:381818 发表于 2018-8-24 09:41 | 只看该作者
慢慢调延时咯,也用不了多久的,我是输出60%占空比的PWM,一个轮子向前转,一个轮子向后转,这样快多了,差不多90°就可以了
回复

使用道具 举报

5#
ID:382067 发表于 2018-8-24 10:08 来自手机 | 只看该作者
首先转弯可以通过一个电机停止,另一个电机转动。90度呢最好加外设,黑线固定路迹,红外感应,控制电机转动停止
回复

使用道具 举报

6#
ID:389552 发表于 2018-8-24 10:18 | 只看该作者
可以考虑使用陀螺仪。陀螺仪输出的是角速度,把角速度积分(加起来)就能得到角度。这样程序就能知道小车转了多少度了。
回复

使用道具 举报

7#
ID:366033 发表于 2018-8-25 09:05 | 只看该作者
本帖最后由 wqqdwdd 于 2018-8-25 10:10 编辑
达达达 发表于 2018-8-24 09:41
慢慢调延时咯,也用不了多久的,我是输出60%占空比的PWM,一个轮子向前转,一个轮子向后转,这样快多了,差 ...

while(1)
{
        run();
        delay();
        turnleft();
        delay();
}这个有什么问题吗?
回复

使用道具 举报

8#
ID:366033 发表于 2018-8-25 09:06 | 只看该作者
达达达 发表于 2018-8-24 09:41
慢慢调延时咯,也用不了多久的,我是输出60%占空比的PWM,一个轮子向前转,一个轮子向后转,这样快多了,差 ...

你好 我可以加你QQ吗?
回复

使用道具 举报

9#
ID:389034 发表于 2018-8-25 12:13 | 只看该作者
可以先让一边电机正转同时另一边反转,这样就可以实现转弯,但是转过多少度跟延时时间以及电机的转速有关,所以需要自己测试调节延时时间和电机的转速这两个参数
回复

使用道具 举报

10#
ID:389034 发表于 2018-8-25 12:16 | 只看该作者
首先看你要转90度的弯度是多少,一边轮子正转一边轮子反转是原地转弯,我们平常大多数用到这种转弯方式,其他情况你可以自己测试,对于原地旋转这种情况你可以先让一边电机正转,同时另一边反转,这样就可以实现转弯,但是转过多少度跟延时时间以及电机的转速有关,所以需要自己测试调节延时时间和电机的转速这两个参数
回复

使用道具 举报

11#
ID:389913 发表于 2018-8-25 13:29 | 只看该作者
配置pwm好一些,延时函数不够用
回复

使用道具 举报

12#
ID:366033 发表于 2018-8-25 14:13 | 只看该作者
hi-Slowly 发表于 2018-8-25 12:16
首先看你要转90度的弯度是多少,一边轮子正转一边轮子反转是原地转弯,我们平常大多数用到这种转弯方式,其 ...

while(1)
{
    run();
    delay();
    turnleft();
    delay();
}
回复

使用道具 举报

13#
ID:316895 发表于 2018-8-25 14:46 来自手机 | 只看该作者
大概90度的话,通过两个电机的差速就可以做到,当然要控制电机的延时。
回复

使用道具 举报

14#
ID:366033 发表于 2018-8-25 22:04 | 只看该作者
代瑞 发表于 2018-8-25 14:46
大概90度的话,通过两个电机的差速就可以做到,当然要控制电机的延时。

while(1)
{
      run();
      delay();
      turnleft();
      delay();
}
这个代码有什么问题?
回复

使用道具 举报

15#
ID:342294 发表于 2018-8-28 11:36 | 只看该作者
第一  弄明白  你的90°是原地打转90°还是差速90°  或者是带有半径的90°   
第二  你不同的方式  速度肯定不一样  延时多长时间才能达到90°完全取决与你的车速
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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