基于光学传感器的智能玩具小车设计

发布者:丝语轻风最新更新时间:2010-12-14 来源: 21ic关键字:光学传感器  EM78P156  ETOMS-ET21X111  智能小车  MCU 手机看文章 扫描二维码
随时随地手机看文章

  智能机器人在当今社会的应用越来越广泛。从普通的玩具机器人到工业控制机器人,从能够炒菜的机器人到可以进行太空探测的机器人,可以预见今后智能机器人的应用将更加广泛。普通的无线遥控车大家都很熟悉,任天堂的电玩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 传感器接口电路[page]

  2 MCU接口电路设计

  MCU周边控制电路详细设计如图3所示。图3中L、L+控制左边路马达PWM,R、R+控制右路马达PWM。RS232接收传感器坐标数据输入。IC工作于3.3V电压,上电后自动复位。系统时钟采用4MHz外接晶振。

MCU接口电路

  图3 MCU接口电路

  3 左路马达控制电路

  左路马达控制电路如图4所示。右路马达控制电路同左路的一样,图中Q3、Q4采用PNP管,L和L+不可同时为LOW,以免造成短路。

左路马达控制电路

  图4 左路马达控制电路[page]

  软件系统设计

  系统上电后,首先进行初始化,对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 中断处理子程序流程[page]

  设计技巧

  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输出的动作。

关键字:光学传感器  EM78P156  ETOMS-ET21X111  智能小车  MCU 引用地址:基于光学传感器的智能玩具小车设计

上一篇:基于FPGA/MCU的光电式滚转角测量仪
下一篇:一种用于汽车电磁阀质量测试电源的设计

推荐阅读最新更新时间:2024-03-30 22:13

微控制器/模拟应用中电源、接地和噪声的管理
除了微控制器,微控制器应用经常包括低电平传感器信号和适当的电源驱动电路,需要小心设计电源和接地。本文将讨论噪声源和噪声的传播路径。我们将涉及良好布局习惯背后的理论及其对噪声的影响。我们也将讨论隔离和限制噪声元件的适当的选择和布局方法。 图1是本文中讨论时使用的系统方框图。这个系统的功能是采集重量并在LED阵列和笔记本电脑上显示结果。在需要时,可利用风扇控制器对电路板降温。 这个设计实例包括了模拟和数字两部分。这种设计的难点之一是如何将这两个部分隔离开来。先看一下该设计的模拟部分,模拟输入信号进入电路实现称重。图1的模拟接口电路包括称重、增益电路、膺频滤波器和12位模数转换器(ADC)。称重利用的是一个惠斯顿电桥,如图2所示。
[单片机]
C51单片机指针变量的定义及应用
一。 指针变量的定义 指针变量定义与一般变量的定义类似,其形式如下: 数据类型 [存储器类型1] * [存储器类型2] 标识符; [存储器类型1] 表示被定义为基于存储器的指针。无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码值如下: 存储类型IIdata/data/bdataxdatapdataCode编码值0x000x010xFE0xFF [存储类型2]用于指定指针本身的存储器空间。 1、 char * c_ptr; int *
[单片机]
C51<font color='red'>单片机</font>指针变量的定义及应用
单片机控制直流电机程序
仿真基本效果 1.按下正转按钮,绿灯长亮,电机低速正转,档位为1档。 2.按下正转按钮,绿灯长亮,电机低速正转,档位为1档。 3.在未达到最高档(3档)的情况下,按下加速按钮,电机档位加一,绿灯闪烁8次,每次闪烁的时间间隔为1秒。如果达到最高档,按下加速按钮,电机档位不变。然后判断电机的转动方向,如果正转,绿灯常亮;如果反转,红灯常亮。 4.在未达到最低档位(1档)的情况下,按下减速按钮,电机档位减一,红灯闪烁8秒,每次闪烁的室间隔为1秒。如果达到最低档,按下减速按钮,电机档位不变。然后判断电机的转动方向,如果正转,绿灯常亮;如果反转,红灯常亮。 5.按下停止按钮,蜂鸣器报警,且所有LED灯灭,电机停止,并使电机档位置1档。
[单片机]
<font color='red'>单片机</font>控制直流电机程序
基于STC89C52RC单片机控制的智能听障助理系统
带有多个处理单元的soc器件目前是产品设计链上的重要一环。本文综合各种因素评估了不同处理单元的优缺点,并通过卫星无线电接收器的设计实例帮助开发人员理解soc所涉及处理任务之间的复杂平衡并有效掌握系统功能的划分。 在准备开发目前越来越复杂的便携式系统时,设计人员面对的最大挑战之一就是采用什么样的处理器组合来实现最优化的“3p”指标,即系统性能最高、价格最低及功耗最小。系统级芯片(soc)集成使得今日的创新成为可能,但它常常涉及把不同的处理器单元结合在单一的器件之上。这些单元可以包括可编程功能,如通用微处理器(通常是risc)、dsp、fpga和加速器,而且还可能有固定功能的加速器。由于这些单元都可以专用器件形式获得,因此对设计人员
[单片机]
基于STC89C52RC<font color='red'>单片机</font>控制的智能听障助理系统
合泰单片机内部EEPROM,4*4按键及存储区切换
;内容:按按键调用EEPROM内部数据通过数码管显示出来 ;数码管段码接法A-PD0,B-PD1....G-PD6,H-PD7 ;数码管位码接法OM0-PC0...COM4-PC3 ;按键接法行PA.4-PA.7列PA.0-PA.3 ;完整源码下载:http://www.51hei.com/f/hteepr.rar ;1.内部EEPROM写与读操作 ;2.4*4按键 ;3.存储区切换 include HT66F50.inc ORG0000H JMPA1 ORG0014H ;多功能中断入口地址 JMPZD1 ORG002DH Q1: DC03FH; 0 DC006H; 1 DC05BH; 2 DC04FH; 3 DC066H; 4
[单片机]
怎样只用一个XT2晶振得到精确的高频----msp430f5529单片机
最近在用msp430f5529,终于在上周弄清了时钟方面的原理,在此记录下,唔,这也是俺第一篇博客······ 首先呢,我先插入它的原理框图 从图中可以看出ACLK、SMCLK、MCLK都可以由XT1CLK/VLOCLK/REFOCLK/DCOCLK/DCOCLKDIV/XT2CLK得到,而TI例程里面给的大多是由FLLREFCLK倍频得到DCOCLK或DCOCLK,从而得到SMCLK和MCLK,而ACLK都是由XT1CLK或REFOCLK直接获得。例程里面的FLLREFCLK来源于XT1CLK或REFOCLK。所以例程里面得到的高频都是经过大的倍频得到,这里面有个弊端,就是如果你需要很精确的频率的话由大的倍频得到的频道误
[单片机]
怎样只用一个XT2晶振得到精确的高频----msp430f5529<font color='red'>单片机</font>
单片机电子万年历,带农历显示
万年历的实物图: 电子万年历原理图如下: 仿真原理图如下 单片机源程序如下: #include reg52.h //#include DS18B20_3.H #include string.h #include intrins.h #define uint unsigned int #define uchar unsigned char #define wd 1 //定义是否有温度功能 =0时无温度,=1时有温度 #define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80) #define er 0x80+0x4
[单片机]
<font color='red'>单片机</font>电子万年历,带农历显示
数控电位器与PIC单片机的接口技术
1x9268器件描述 1X9268是Xicor公司生产的,把2个E2POT数控电位器集成在单芯片的CMOS集成电路上的一种数控电位器。它包含两个电阻阵列,每个电阻阵列包含255个电阻单元,在每个单元之间和二个端点都有可以被滑动单元访问的抽头点。滑动单元在阵列中的位置,由用户通过二线串行总线接口控制。每个电阻阵列,与1个滑动端计数寄存器(WCR)和4个8位数据寄存器(R0~R3)联系在一起,这4个数据寄存器可以由用户直接写入或读出。滑动端计数寄存器的内容,控制滑动端在电阻阵列中的位置。 数据寄存器可以由用户读出和写入。数据寄存器的内容可以传输到滑动端计数寄存器,以设置滑动端的位置。当前滑动端的位置可以被传输到与它相联系的任一个
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved