自主导航机器人系列

直击痛点:现阶段的主要目的是先让它动起来,前一篇文章已经讲过,小机器人的底盘、手臂、头部分别由电机驱动,而要让电机按照我们的指令执行动作,那就得用软件来控制,而软件与电机间的桥梁就是——电机驱动板!电机驱动板是个很神奇的东西,它有两种接口:供电接口和控制接口。

供电接口很好理解,就是直接与电源连接、为电机提供动力的接口;

控制接口,也不难理解?——还好还好啦,顾名思义,就是用来接收控制信号,通过控制信号决定如何给电机供电,让电机执行正转、反转、转动速度等动作的接口。

控制接口直接与raspberry pi的GPIO接口相连,这样,我们只要在raspberry pi上运行我们的控制程序,通过控制GPIO各个针脚的电位高低,形成控制信号,传递给电机驱动板,就可以控制电机的动作了。

下面这个怪怪的东西就是电机驱动板:

可以看到,这是个能同时驱动两路电机的驱动板,考虑到每个部分如果细讲就是长文一篇,感兴趣的机友可以多查查资料,如有疑问——也别来问我。玩笑玩笑,如果时间充裕,我还是会尽力解答。

软件部分,由于我们选择的是raspberry pi,你就当它是个运行Linux操作系统的小型PC了,而且提供了40个GPIO接口,我们就可以通过编写程序来控制这些GPIO的电位,从而控制电机。

至于编程语言,你可以用C/C++,也可以用Python,其他的没尝试过,总之把自己的专长利用起来,事半功倍。

关于速度的问题,GPIO是只能输出0和1的电位信号的,之前提到过,我用的电源是个12伏22000毫安时的大电池,直接驱动电机,机器人要疯——动力太强劲,所以我们要控制速度。这里控制速度不是靠电压高低来控制,而是通过空占比来控制,俗称PWM,比如通断频率是100Hz,则每个本来该给1的周期里,分出一部分来给0,这样,在这一个周期里调整给0的占比,就控制了电机的速度。

占空比定义为脉冲序列信号在一个周期内,正半周持续时间与周期的比值

PWM信号是可以通过硬件来实现的,但是我还是用了软件来实现,目前系统负载不成问题。如果机器人空间足够大,用硬件产生PWM信号,节约CPU资源是个不错的选择。

总结:

一句话:raspberry pi上运行控制软件,控制软件通过GPIO的高低电位控制驱动板上的电源通断,从而控制电机的启停。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180112G05HEC00?refer=cp_1026

相关快讯

扫码关注云+社区