"); //-->
智能机器人在当今社会的应用越来越广泛。从普通的玩具机器人到工业控制机器人,从能够炒菜的机器人到可以进行太空探测的机器人,可以预见今后智能机器人的应用将更加广泛。普通的无线遥控车大家都很熟悉,任天堂的电玩wii大家也都觉得很神奇。熟悉的不好玩,神奇的又玩不起,可能是很多人遇到的共同问题。本设计从全新的思维角度出发,制作一个日常生活可以玩的智能小车,以飨有共同爱好的读者。
系统总体设计
智能小车系统原理是,将三维坐标传感器安装在小车上,小车即具有智能感知功能,就会随着目标物的前后左右移动而跟着移动。系统主要有3个组件:一为三维坐标光感传感器(etoms-et21x111),用于采集目标物的移动坐标,该传感器使用非常简单;二为mcu(emc-em78p156),读取传感器数据控制马达转动,em78p156是市面上常见的mcu,使用简单,价格便宜;三是马达,马达选用普通直流马达即可,采用pwm控制。系统整体框架如图1所示。
图1 系统整体框架
该设计的整体功能简单概括起来就是:让小车能够跟着人(或是目标物)走。分开来讲需要实现以下3个小功能:传感器能够正确读取x、y、z的坐标值,这是首要条件。mcu能够正确判断x、z坐标值的大小变化,这是关键。可能有人会有疑问,为什么不判断y坐标变化呢?那是因为小车不能上下跳跃(上下方为y轴)。mcu根据坐标值的大小变化控制马达转向及马达pwm的时间,这是结果。
硬件系统设计
1 传感器周边电路设计
etoms-et21x111是一款高性能具有x、y、z坐标资料输出功能的光感传感器。具有如下特点:高速资料输出,每秒钟输出坐标资料高达75frame;低电压工作,电压范围2.7~3.5v;采用标准rs232串行资料输出格式输出坐标值;使用外部晶振,范围0.5~12mhz,通常采用3.58mhz;具有可控制曝光接口eo4~eo7。
eo4~eo7这四个接口是用于曝光控制的,既可以用软件进行控制,也可以用硬件的方式进行控制。根据自己的需要选择合适的即可。本设计采用硬件的方式将这四个接口全部置为高电平。
传感器周边详细的接口电路如图2所示,从图2中可知eo4~eo7为高,这是曝光设置为硬件拉高,也可以在软件中设置。ic正常工作时,坐标数据由rs232端口输出。注意图2中的4个led为红外led。ic工作电压是3.3v,系统采用5v供电。ic采用3.58mhz外接晶振,上电自动复位后即可正常工作。
图2 传感器接口电路
2 mcu接口电路设计
mcu周边控制电路详细设计如图3所示。图3中l、l+控制左边路马达pwm,r、r+控制右路马达pwm。rs232接收传感器坐标数据输入。ic工作于3.3v电压,上电后自动复位。系统时钟采用4mhz外接晶振。
图3 mcu接口电路
3 左路马达控制电路
左路马达控制电路如图4所示。右路马达控制电路同左路的一样,图中q3、q4采用pnp管,l和l+不可同时为low,以免造成短路。
图4 左路马达控制电路
软件系统设计
系统上电后,首先进行初始化,对emc78p156的寄存器进行设置,使能中断标志寄存器,等待中断。图5是主程序流程图。
图5 主程序流程图
中断产生时进入中断处理子程序,首先要关闭中断标志且保护好现场,然后读取并解析xyz坐标值,分成以下几种情况。
(1)判断x轴变化,如果x值在大于14小于等于17时,马达不左右转动,然后再判断z轴坐标值的变化,如果z值也在大于14小于等于17时,马达不前后转动。
(2)如果x轴坐标值大于17,判断z轴坐标,若z值大于17,则反转右马达,之后左右马达后转;若z值小于14,则正转左马达,之后左右马达前转;否则马达不转动。
(3)如果x轴坐标值小于14,判断z轴坐标,若z值大于17,则反转左马达,之后左右马达后转;若z值小于14,则正转右马达,之后左右马达前转;否则马达不转动。
中断处理子程序的流程如图6所示。
图6 中断处理子程序流程
设计技巧
1 传感器的设计技巧
et21x111对红外线的光谱响应最好,但自然光中含有大量的红外线,所以强烈的自然光会影响传感器的数据,导致输出的坐标与实际坐标有较大的偏差,解决方法是加滤光片,但这也只能起到衰减作用,具体应用视情况而定。
2 马达控制电路设计技巧
设计控制马达正反转的电路时要注意:因mcu在上电的时候,i/o的状态是不确定的,所以程序在一开始就要将q3、q4的两个i/o设成hi(q3、q4为pnp管,如果为npn管则i/o设成low),以防止在上电的时候两个i/o都为low,使q3、q4导通形成短路。另外需要注意的是在同一时间q3、q4只能有一个是导通的。
3 mcu设计技巧
在电刷直流马达启动或转动的时候,会产生很大的电源毛刺。这对mcu的工作非常不利,所以加入此lcπ型滤波电路,如图7所示。
图7 滤波电路
4 程序设计技巧
智能小车在运行的过程中,需要一边读取传感器传过来的坐标数据,一边控制马达的pwm输出。传感器会每12ms输出一次坐标资料,所以最好的方式是采用中断来读传感器资料,而在没有资料输出的时间做pwm输出的动作。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。