基于单片机与光电传感器的电动自行车速度/里程表设计

发布者:sheng44最新更新时间:2012-12-04 来源: 21IC 关键字:单片机  光电传感器  速度里程表 手机看文章 扫描二维码
随时随地手机看文章

从保护环境和经济条件许可等因素综合来看,电动自行车目前乃至今后都有着广阔的发展空间。目前市面上电动自行车的速度表和里程表都是机械的,看起来不够直观与方便。如果能用led直接显示出来里程数或速度值,就可节省用户的时间及精力处理自行车行进过程中的突发事件。

本文介绍的速度与里程表设计以单片机和光电传感器为核心。传感器将不同车速转变成的不同频率的脉冲信号输入到单片机进行控制与计算,再采用led模块进行显示,使得电动自行车的速度与里程数据能直观的显示给使用者。

系统概述

本系统由信号预处理电路、单片机at89c2051、系统化led显示模块、串口数据存储电路和系统软件组成。其中信号预处理电路包含信号放大、波形变换和波形整形。对待测信号进行放大的目的是降低对待测信号的幅度要求;波形变换和波形整形电路则用来将放大的信号转换成可与单片机相连的ttl信号;通过单片机的设置可使内部定时器t1对脉冲输入引脚t0进行控制,这样能精确地算出加到t0引脚的单位时间内检测到的脉冲数;设计中速度显示采用led模块,通过速度换算得来的里程数采用i2c总线并通过e2prom来存储,既节省了所需单片机的口线和外围器件,同时也简化了显示部分的软件编程。

系统的原理框图如图1所示。

图1 系统的原理框图

工作原理

该设计能实时地将所测的速度与累计里程数显示出来,主要是将传感器输入到单片机的脉冲信号的频率(传感器将不同车速转变成不同频率的脉冲信号)实时地测量出来,考虑到信号的衰减、干扰等影响,在信号送入单片机前应对其进行放大整形,然后通过单片机计算出速度和里程,再将所得的数据存储到串口数据存储器,并由led显示模块交替显示所测速度与里程。本设计的里程数的算法是一种大概的算法(假设在一定时间内自行车是匀速行进,平均速度与时间的乘积即为里程数)。

设计时,应综合考虑测速精度和系统反应时间。本设计用测量脉冲频率来计算速度,因而具有较高的测速精度。在计算里程时取了自行车的理想状态。实际中,误差控制在几米之内,相对于整个里程来说不是很大。为了保证系统的实时性,系统的速度转换模块和显示数据转bcd码模块都采用快速算法。另外,还应尽量保证其他子模块在编程时的通用性和高效性。本设计的速度和里程值采用6位显示,并包含两个小数位。

系统的硬件设计

脉冲发生源

本设计采用了st1101红外光电传感器,进行非接触式检测。当有物体挡在红外光电发光二极管和高灵敏度的光电晶体管之间时,传感器将会输出一个低电平,而当没有物体挡在中间时则输出为高电平,从而形成一个脉冲。

该系统在自行车后轮的轴处保持着与轮子旋转切面平行的方向延伸附加一个铝盘,在这个铝盘的边沿处挖出若干个圆形过孔,把传感器的检测部分放在圆孔的圆心位置。每当铝盘随着后轮旋转的时候,传感器将向外输出若干个脉冲。把这些脉冲通过一系列的波形整形成单片机可以识别的ttl电平,即可算出轮子即时的转速。

铝盘的圆孔的个数决定了测量的精度,个数越多,精度越高。这样就可以在单位时间内尽可能多地得到脉冲数,从而避免了因为两个过孔之间的距离过大,而车子正好在过孔之间或者是在下个过孔之前停止了,造成较大的误差。

本设计在铝盘过孔的设计上采用11个过孔,从而留下了10个同等的间距。这样在以后的软件设计中能够较为方便的计算出速度里程。脉冲发生源的硬件结构图如图2所示。

图2 脉冲发生源硬件结构图(左为正视图,右为侧视图)[page]

信号预处理电路

如图3所示,系统的信号预处理电路由二级电路构成,第一级是由开关三极管组成的零偏置放大器,采用开关三极管可以保证放大器具有良好的高频响应。当输入信号为零或负电压时,三极管截止,电路输出高电平;而当输入信号为正电压时,三极管导通,此时输出电压随着输入电压的上升而下降,这使得速度里程表既可以测量任意方波信号的频率,也可以测量正弦波信号的频率。由于放大器的放大功能降低了对待测信号的幅度要求,因此,系统能对任意大于0.5v的正弦波和脉冲信号进行测量。预处理电路的第二级采用带施密特触发器的反相器dm74ls14来把放大器生成的单相脉冲转换成与coms电平相兼容的方波信号(如图4所示),同时将输出信号加到单片机的p3.4口上。

图3 信号预处理电路图

图4 施密特触发器对脉冲的整形

利用施密特触发器状态转换过程中的正反馈作用,可以把边沿变化缓慢的周期性信号变换为边沿很陡的矩形脉冲信号。输入的信号只要幅度大于vt+,即可在施密特触发器的输出端得到同等频率的矩形脉冲信号。

从传感器得到的矩形脉冲经传输后往往发生波形畸变。当传输线上的电容较大时,波形的上升沿将明显变坏;当传输线较长,而且接受端的阻抗与传输线的阻抗不匹配时,在波形的上升沿和下降沿将产生振荡现象;当其他脉冲信号通过导线间的分布电容或公共电源线叠加到矩形脉冲信号时,信号上将出现附加的噪声。无论出现上述的那一种情况,都可以通过用施密特反相触发器整形而得到比较理想的矩形脉冲波形。只要施密特触发器的vt+和vt-设置得合适,均能受到满意的整形效果。

e2prom at24c02的应用

at24c02是cmos 2048位串行e2prom,在内部组织成256×8位。at24c02的特点是具有允许在简单的二线总线上工作的串行接口和软件协议。

如图5所示,在本设计中用芯片at24c02的sda端与单片机的p3.7口相连,scl端与单片机的p3.5口相连。因为在这个i2c总线上只有一个器件,所以把at24c02的地址设为000,即把a0、a1、a2都接地。单片机计算出来的里程数据通过sda、scl向at24c02输送数据。单片机首先向at24c02发送写信号,当确认后从单片机内部的数据储存单元提取数据然后向at24c02的内部地址传送数据。当显示里程时,单片机首先向at24c02发送读信号,然后确认后,单片机从at24c02内部的地址向单片机的读出单元字节读出数据,供显示所用。

图5 at24c02与单片机的接口电路图

[page]

显示部分

本设计的显示模块包括mc14511bcp、cd4076、74ls138和6个led显示管等器件。

mc14511是将锁存、译码、驱动三种功能集于一身的“三合一”器件。锁存器的作用是避免在计数过程中出现跳数现象,便于观察和记录。用译码器将bcd码转换成7段码,再经过大电流反相器,驱动共阴极led数码管。译码器属于非时序电路,其输出状态与时钟无关,仅取决于输入的bcd码。

74ls138的作用相当于位选的功能,当c,b,a的输入分别为“000、001、010、011、100、101”时分别选择不同的mc14511,从而在不同位上显示不同的数字和小数点。cd4076是cmos 4位三态输出d寄存器,通过74ls138的y6,y7来控制其cp的工作,从而使cd4076来控制小数点显示。图6是显示模块框图。

图6 显示模块框图

图7为系统显示部分的电路。系统中用74ls138的y0~y5选择mc14511以驱动led显示,y6、y7来控制cd40756的cp,从而达到以cd4076的q1~q4控制小数点的显示,另一个cd4076只用到其q1和q2,图中字符相对应的地方表示其引脚相连。

图7 系统显示部分的电路

系统的软件设计

系统软件框图

如图8所示,本系统软件采用模块化设计方法。整个系统由初始化模块、频率测量模块、速度,里程计算模块、数据转bcd码模块、速度显示模块、里程显示模块、数据存储,读取模块、定时器中断服务模块以及其他功能模块组成

图8 系统软件框图

数据处理

待测信号经预处理电路后加至单片机的p3.4(t0)引脚可为单片机测量信号频率提供有效的输入信号。单片机通过检测p3.4引脚电平来决定是否启动测量频率程序。当该引脚为高电平时,系统处于等待状态,要一直到该引脚出现低电平时才开始测频率。

我们可从硬件的铝盘上知道两个过孔之间在圆周上的距离。而这个距离m正好为计算速度和距离起到了基本的数据储备作用。同时可以从tl0寄存器知道在两秒内单片机检测到的n个脉冲。而m×n所得到的正是这两秒内铝盘在圆周上所走得距离s。(此时假设在这个两秒内车子是匀速前进的),距离s除以2s的时间,就可以大概的算出这2s内铝盘的线速度。再根据铝盘与自行车的轮子保持着一样的角速度,得到铝盘的线速度与轮子线速度的关系,从而算出自行车在这2s的平均速度。

至于里程的计算,根据速度计算的分析,在得到2s内铝盘在其圆周上走过的距离后。根据它与自行车轮子的圆周走过的距离有一定比例关系(通过两者角速度一样的算法)可以通过单片机的算出自行车在这两秒内走过的路程s1。把这个路程s1与存储器原来的里程数相加即可得到目前的总里程数。

通过单片机计算出来的速度和里程的数据,必须通过bcd码的转换才能输出给显示模块。总里程数的显示是设定出现在电动自行车开动,单片机开机经过初始化后显示出来,这样以来用户可以清楚的知道自己的车子已经运行了多少公里了。而速度的显示则是在计算出速度里程后立刻显示出来,体现实时性。

结论

本设计以at89c2051为核心,通过光电传感器来检测自行车的运转情况进而实现电动自行车的速度,里程的计算及里程的累计,存储,最后用6位的led能直观的将速度与里程显示给用户,并且在速度高于一定的值时可自动向用户报警,从而达到智能速度里程表。

关键字:单片机  光电传感器  速度里程表 引用地址:基于单片机与光电传感器的电动自行车速度/里程表设计

上一篇:基于ISD4004语音芯片和AT89S52单片机的语音播报记事器设计
下一篇:听技术达人细说51单片机系列

推荐阅读最新更新时间:2024-03-16 13:14

AT89C2051单片机超声波测距系统硬件原理
AT89C2051单片机超声波测距系统单片机主控芯片使用51系列AT89C2051单片机,该单片机工作性能稳定,同时也是在单片机课程设计中经常使用到的控制芯片。 发射电路由单片机输出端直接驱动超声波发送。 接收电路使用三极管组成的放大电路,该电路简单,调试工作小较小。 硬件电路的设计主要包括单片机系统及显示电路、超声波发射电路和超声波接收电路三部分。单片机采用AT89C2051。采用12MHz高精度的晶振,以获得较稳定时钟频率,减小测量误差。单片机用P3.5端口输出超声波换能器所需的40kHz的方波信号,P3.6端口监测超声波接收电路输出的返回信号。显示电路采用简单实用的3位共阳LED数码管,段码输出端口为单片机的P1口,位码输
[单片机]
AT89C2051<font color='red'>单片机</font>超声波测距系统硬件原理
关于STC单片机IO口的状态
新入职一个公司,做智能家居的,只用宏晶51单片机。好长时间没搞了,今天就遇到一个问题之前没遇到过,就是配置IO口的工作类型。 数据手册里面是这样说的,在此多说一句,数据手册做的真烂。 这里举个例子。 如果给P1M1赋值0X03,给P1M0赋值0X05,那么P1口各个引脚对应的模式就是: { P1M1=0x03=00000011b P1M0=0x05=00000101b } P1M1 P1M0 IO口模式0 0 P1.7准双向口0 0 P1.6准双向口0 0 P1.5准双向口0 0 P1.4准双向口0 0 P1.3准双向口0 1 P1.2推挽输出1 0 P1.1高阻1 1 P1.0开漏
[单片机]
关于STC<font color='red'>单片机</font>IO口的状态
单片机内部的时序分析
单片机内部的时序 单片机执行各种操作时,CPU都是严格按照规定的时间顺序完成相关的工作,这种时间上的先后顺序成为时序。 单周期指令的操作时序 双周期指令的操作时序 时钟电路 时钟电路参数: 频率范围:0~40MHz C1、C2:20~30pF
[单片机]
<font color='red'>单片机</font>内部的时序分析
基于stc51单片机的PS\2键盘通信程序
PS2键盘通信(只写了接收部分因为按键码太多译码可以根据需要选择性翻译) #include //STC12C5AxxS2系列单片机头文件 #include//包函_nop_延时函数的头文件 #define uchar unsigned char//宏定义 #define uint unsigned int//宏定义 //------------------------------------------------------------------------------------- //全局声明部分 sbit CLK=P3^2; //时钟线 sbit DATA=P1^0; //数据线 sbit LED_zs=P0^0; //运
[单片机]
单片机I/O端口驱动74LS165
  I/O接口的功能是负责实现CPU通过系统总线把I/O电路和外围设备联系在一起,按照电路和设备的复杂程度,I/O接口的硬件主要分为两大类:   (1)I/O接口芯片      这些芯片大都是集成电路,通过CPU输入不同的命令和参数,并控制相关的I/O电路和简单的外设作相应的操作,常见的接口芯片如定时/计数器、中断控制器、DMA控制器、并行接口等。   (2)I/O接口控制卡      有若干个集成电路按一定的逻辑组成为一个部件,或者直接与CPU同在主板上,或是一个插件插在系统总线插槽上。   按照接口的连接对象来分,又可以将他们分为串行接口、并行接口、键盘接口和磁盘接口等。   用I/O模拟移位寄存器的时序驱动74LS165
[单片机]
用<font color='red'>单片机</font>I/O端口驱动74LS165
单片机计算器实例
按键和液晶,可以组成我们最简易的计算器。下面我们来写一个简易整数计算器提供给大家学习。为了让程序不过于复杂,我们这个计算器不考虑连加,连减等连续计算,不考虑小数情况。加减乘除分别用上下左右来替代,回车表示等于,ESC 表示归 0。程序共分为三部分,一部分是 1602 液晶显示,一部分是按键动作和扫描,一部分是主函数功能。 /***************************Lcd1602.c 文件程序源代码*****************************/ #include reg52.h #define LCD1602_DB P0 sbit LCD1602_RS = P1^0; sbit LCD1602_RW =
[单片机]
Silicon Labs最节能32位MCU成物联网攻城利器
MCU厂商大举圈地争食物联网(IoT)市场大饼。值此万物联网与可穿戴设备商机崛起之际,机器对机器(M2M)设备与智能化嵌入式系统(Intelligent Embedded System)出货量亦快速激增,并带动低功耗的MCU需求,不仅为MCU厂商带来可观的应用商机,亦促使MCU产品规格快速演进。有鉴于此,Silicon Labs挟基于ARM Cortex-M0+处理器的全球最节能32位MCU - EFM32 Zero Gecko,可望成征服物联网与可穿戴设备等电池供电型应用的攻城利器。 Silicon Labs亚太地区MCU资深市场经理彭志昌表示,EFM32 Zero Gecko MCU具有业界最成熟的能耗管理系统,它包括五种
[单片机]
单片机控制红外编码探测障碍物
1 探测障碍的原理 在室内自动感知障碍的设备中,常使用红外线探测障碍物的存在与否。探测的基本原理是:在测量的范围内,主动向探测方向发射红外信号,如果存在障碍物,就会把发射的信号反射回发送端。在发送端,如果收到反射的信号,就确认障碍物的存在。 但是在实际应用中,红外干扰源较多;而且在有反射光的情况下,由于光线的干扰,很容易判断失误,出现虚警。因此,有些设备在发射信号时,改进为发送一串连续的红外脉冲,然后接收反射的信号。如果接收到的红外脉冲数量超过某一门限值时,就判断障碍存在。这种方法尽管在一定程度上可以降低虚警率,但实验表明,在较强的反射光和使用电子镇流器方式的日光灯起辉时,仍很容易出现干扰现象。 本文提出解决干扰的方案是:由
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved