用户
搜索
  • TA的每日心情

    2017-12-28 15:34
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看

    版主

    Rank: 7Rank: 7Rank: 7

    70

    主题

    250

    帖子

    1539

    魔法币
    收听
    0
    粉丝
    60
    注册时间
    2016-6-21

    i春秋认证春秋巡逻i春秋签约作者春秋游侠春秋文阁

    发表于 2018-1-31 11:57:19 86417
    代发,作者:gggvggsd

    1、电机驱动模块
    想让轮子转动,就需要足够的电流去驱动他,但是树莓派是没有那么大的电流的,这时候就需要用一个东西去放大电流
    这个驱动模块就是一个h桥电路

    大家可以看一下这篇文章
    这篇文章介绍了三极管,只有理解了三极管才能看懂h
    这里很清晰的介绍了h桥的原理
    平时我们用的都是l298n来驱动轮子但是这东西比较大,感觉不是很方便,我选择了tb6612fng电机驱动模块
    image001.jpg
    由于我已经做好了,也拿不下来就只能这样将就拍一下了
    这个就这么小一点,再来看看l298n
    image003.png
    相比起来就会大很多,而且他的接口很难插
    每个驱动器可以控制2个轮子
    现在来看看相应的引脚
    image005.jpg
    左边是输入信号,右边是输出给轮子电流,这个驱动器控制左侧的2个轮子
    现在来介绍一下
    1pwma,这个连接树莓派的gpio引脚,这个引脚要开启pwm,方波频率越高,轮子转的越快,相当于三极管的基极
    2、那个vm就是用来被供电的,接上12v-7v的电源,相当于三极管的集电极
    3、左边的ao1,ao2等就是发射极
    4vcc是用来给ic供电的
    5、右侧中间那个stby相当于驱动器的开关,连接树莓派引脚,只有为高电平的时候,才可以使用驱动器
    6、那个ain1ain2就是用来控制右侧的ao1ao2
    ain1ain2同时为0的时候,ao1ao2也就没有输出,当ain1输出1ain2输出0,那么ao1就输出电流,ao2就不输出电流,这样轮子就会往前面转(或向后,看你怎么接线),反过来同样的道理,bin同理

    2、转弯
    我这里并不是用舵机进行转弯,而是用差速转向来进行转弯
    比如你左边轮子不动,右边轮子向前转动,就可以向左边转弯了
    当你左边轮子向后转,右边轮子向前转动,就可以原地向左边转弯了

    3、需要的材料
    树莓派扩展版
    这样子就不需要多出6个引脚来控制2个轮子了,3个就行了
    需要2个驱动器,来控制2侧轮子
    如果你会焊接,可以选择电机不焊线,我选择的是亚克力板,铝合金的话有条件可以选择
    我还多买了一个板子,用来放电池,给vm供电的电池
    电池买锂电池,23.7v的,或者更多也行,看有没有空间放得下,就行了,我就不放链接了记得买电池盒,带接线端子,还有锂电池充电器
    如果有些东西需要固定,可以买热熔枪来固定
    当然买了上面那些材料你也只能做一个遥控车,如果要智能的还需要声波传感器,用来测量距离,来壁障

    4、声波传感器
    QQ截图20180131115631.png

    Vcc是供电的
    Trig是用来发送声波的
    当接受到声波,echo就会输出高电平,输出的时间为发送声波到接收声波的时间
    Gnd就是接地
    所以代码思路是
    连接trig的引脚输出高电平,输出时间设置短一点,0.000几秒就行了
    然后判断echo是否为低电平,当不是低电平的时候开始计时,当echo又回到低电平的时候停止计时
    340m/s为常温常压下的音速,340*时间/2就是路程了,因为有一个来回所以要除以2
    代码
    [Python] 纯文本查看 复制代码
    import RPi.GPIO as GPIO
    import time
    import random
    
    trig=20
    echo=26
    
    def setup():
        GPIO.setmode(GPIO.BCM)                       GPIO.setup(echo,GPIO.IN)
        GPIO.setup(trig,GPIO.OUT)                  setup()
    def loop():
        GPIO.output(trig,1)
        time.sleep(0.000015)
        GPIO.output(trig,0)
    
        while GPIO.input(echo)==0:
            pass
        t1 = time.time()
        while GPIO.input(echo)==1:
            pass
        t2 = time.time()
    
        t = t2-t1
        dis = (t*340)/2
    
    print dis
    while True:
        try:
            loop()
        except:
            GPIO.cleanup()
    
     
    
     
    具体怎么做就要看自己了,毕竟这是极客,怎么做车我教不了,方法告诉你们了,怎么diy就看自己了,如果有不懂的可以问我

    Debug The World
    发表于 2018-1-31 13:54:24
    沙发
    使用道具 举报 回复
    发表于 2018-1-31 17:15:18
    感谢大佬分享
    使用道具 举报 回复
    66666666666666666666666666666666666
    使用道具 举报 回复
    发表于 2018-2-1 09:46:53
    学习学习学习6666666666
    使用道具 举报 回复
    发表于 2018-2-1 10:15:59
    现在都开始转研究物联网安全了。各种干扰信号,各种拿着设备上路控制红绿灯,玩的6啊
    使用道具 举报 回复
    口怕……要不是老夫幼儿园毕业了,老夫差点就让吓到了
    使用道具 举报 回复
    66ss666666ssss66666666666sss666666
    使用道具 举报 回复
    看门狗2?
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册