用单片机实现的脉冲编码传感器

发布者:数字冒险最新更新时间:2006-08-16 来源: 单片机及嵌入式系统应用关键字:单片机  解码  计价器 手机看文章 扫描二维码
随时随地手机看文章

引 言
  随着社会的发展,出租车成为人们生活中非常方便且较普遍的交通工具,但出租车计价器却相对较为落后。在过去,出租车采用机械式计价器,用齿轮比的方式来计算出租车所跑的里程数,并由里程数来换算车费。但是机械齿轮体积较大,计算不是很准确,而且容易磨损。后来又采用了传感器方式,利用传感器接收车的跑动信息,从而计算里程数和车费。但此方法通常使干扰信号也能产生计数脉冲,所以也不完善。笔者引用单片机技术,使用编码和解码信息传递方式来完成计价器计数脉冲的形成。单片机可以很精确的检测到传感器信号,这样计价就会非常准确。完成此装置所需器件简单,成本非常低,技术上也容易实现。

1 系统原理
  系统框图如图1所示,本文主要介绍虚线框内模块的设计。出租车驱动轮转数与转轴转数的传动比是一定的,而转轴转动时带动一小磁体转动,其传动比也是一定的,小磁体每转动一周就和磁感应传感器正对一次,磁感应传感器就会产生一个大约20 ms的低脉冲,可以通过计算磁感应传感器产生的低脉冲数来计算出租车跑的里程数及相应的车费。

  编码器的单片机通过一个I/0口来检测磁感应传感器信号,当确定为传感器产生的信号时,就通过另一个I/O口向解码器的单片机发送一组编码,而解码器的单片机则首先判断当前准备接收的数据是编码器发送的编码还是解码写入器发送的解码。当判断是解码写入器发送的解码时,解码器的单片机接收此解码,并利用12c总线协议将解码保存到E2PROM中去;当判断是编码器发送的编码时,解码器的单片机先接收此编码,然后读出自己E2PROM中的解码,将其与接收到的编码相比较,如果相同则解码器单片机通过一个I/0口向计价装置发出计价脉冲,否则不发出计价脉冲。注意:这里每一辆出租车计价器的编码和解码都是不同的,这样有利于出租车的管理以及防止计价器的盗用,解码器中的解码是使用解码写入器写入其E2PRoM中去的。每辆出租车计价器都具有一个编码器和一个解码器,而所有的出租车计价器都共用一个解码写人器。也就是说,在计价器卖出之前,用同一个解码写入器为所有的计价器的解码器写入不同的初始解码。写入初始解码以后,计价器就不再需要解码写入器了,除非此计价器坏掉需要重新更换解码器,此时需再用解码写入器给新的解码器写入初始解码。硬件电路设计图如图2和图3所示。


2 系统功能的实现
2.1 传感器

  本系统的编码器部分利用传感器来接收出租车的跑动信号,这里采用的传感器为磁感应传感器,当其与车辆转轴带动的小磁体正对时,传感器的输出引脚便会产生一个约20ms的低脉冲。

2.2编码器

  编码器部分使用的单片机为PIC12C508A,利用PIC12C508A芯片的第4个引脚GP3来检测传感器的输出信号。当检测到确定的传感器信号后,单片机将按一定的时序在其第7个引脚GP0连续发送5个十进制数据(即编码形式为5位十进制数)给解码器,每个数据都是按脉冲方式发送出去的。十进制数是多少,就发送几个低脉冲,发送一个十进制数据所用的时间要保证在255μs以内。其程序流程图如图4所示。

2.3 解码写入器
  解码写入器部分使用的单片机为AT89C51,解码写入器的功能与编码器的功能类似。由于发送的解码要能随时改变,这里可以外接5个小数字键盘,解码写入器要发送的解码可以从5个小数字键盘上获得。为了和编码器发送的编码区别开来,解码写入器需要先发送一个区别字符,使解码器能够识别出当前接收的是编码器还是解码写入器发出的数据。区别字符后面紧跟着的是解码,所有这些数据的发送方式与编码器编码的发送方式完全相同,由AT89C51单片机的P3.4口输出,其程序流程图如图5所示。

2.4 解码器
  
这部分采用的单片机是PIC12CE5C18,其内部有E2PROM。可以利用I2c协议随时从E2PROM中读出解码或者向E2PROM中写入新的编码。下面介绍工作过程。首先解码器读出内部E2PRoM中00h~04h中的5个十进制数据,分别保存到5个内部数据存储单元中。然后调用接收数据子程序,接收1个数据,并先保存到1个内部数据存储单元中,判断这个数据是否为区别字符10。若不是区别字符,说明现在接收的数据可能是编码器发送的编码,则继续接收后面的4个数据,并保存到4个内部数据存储单元中,将接收到的这5个十进制数据与前面解码器读出的内部E2PROM中00h~04h中的5个十进制数据进行比较,相等则在GP0引脚上发送一个2 ms的低脉冲作为计价脉冲,不相等则重新接收数据。若是区别字符10,说明现在解码写入器要修改解码器的解码,必须马上接收跟在区别字符后面的5个数据,并将这5个十进制数据保存到E2PROM的00h~04h中,覆盖以前的解码。其程序流程图如图6所示,其调用的子程序如图7和图8所示。

结论
  本系统解决了以往计价器计价不准确、使用寿命短等缺点,现在采用以单片机为主控制单元的编码解码技术,使每个出租车的计价器拥有不同的编码,从而防止出租车之间计价器的相互盗用,便于出租车公司对出租车的管理。同时,可以随时对单片机的外围电路进行扩展,并通过软件编程实现本系统的不断升级。

关键字:单片机  解码  计价器 引用地址:用单片机实现的脉冲编码传感器

上一篇:用单片机实现的脉冲编码传感器
下一篇:基于MSP430单片机的微功耗中文人机界面设计

推荐阅读最新更新时间:2024-12-17 15:01

基于AT89C51的时间/位移换向控制器设计
引言   在实际生产过程中,常常要用到具有自动换向功能的控制部件,如机械加工中的往返运行(位移),直流电源的正反向输出,电动机的正反转运行等现象,都是当正向(或反向)运行到一定时间或一定位置时,自动换为反向(或正向)运行,周而复始的过程。实现这一过程的自动化,就是设计一套控制电路,再配以位移传感器或时间继电器。目前市场现有的时间继电器虽然可以用多个组合来满足一些使用场合的要求,但仍存在着重复计时误差大,稳定可靠运行性不高,使用不方便灵活等问题。为此,笔者研发了以单片机为核心组成的时间/位移换向控制器SWHX-1,该系统具有成本低等特点,可完全且克服以上不足。 电路组成及工作原理   SWHX-1的内部电路如图1所示。该系统分
[应用]
基于AVR单片机Atmega16的ADC采集数码管显示仿真程序
电路图 用到的数码管是7SEG-MPX4-CC。 程序代码 #include mega16.h #include delay.h #define uchar unsigned char #define uint unsigned int flash char led_7 = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; flash char position = {0xe0, 0xd0, 0xb0, 0xf0}; char ad ; //数码管显示函数 void display() { char i; for (i = 0;
[单片机]
基于AVR<font color='red'>单片机</font>Atmega16的ADC采集数码管显示仿真程序
基于AT89S51单片机的PID温度控制系统设计
  温度控制技术不仅在工业生产有着非常重要的作用,而且在日常生活中也起着至关重要的作用。本文对系统进行硬件和软件的设计,在建立温度控制系统数学模型的基础之上,通过对PID控制的分析设计了系统控制器,完成了系统的软、硬件调试工作。算法简单、可靠性高、鲁棒性好,而且PID控制器参数直接影响控制效果。   1. 系统概述   1.1 系统总体结构   该系统利用AT89S51丰富的外设模块搭建硬件平台。系统的硬件电路包括:模拟部分和数字部分,基本电路由核心处理模块、温度采集模块、键盘显示模块及控制执行模块等组成。   1.2 系统工作流程   系统开始工作时,首先由单片机控制软件发出温度读取指令,通过数字温度传感器采集被控对象
[单片机]
基于AT89S51<font color='red'>单片机</font>的PID温度控制系统设计
51单片机控制继电器
这是典型的继电器驱动电路图,这样的图在网络上随处可以搜到,并且标准教科书上一般也是这样的电路图.(我们一位老师说过,中国的教科书,大都是你抄我,我抄你,甚至连图也照搬,所谓的教授们只为了增加他们虚伪的学术成果) 为什么要明白这个图的原理? 单片机是一个弱电器件,一般情况下它们大都工作在5V甚至更低.驱动电流在mA级以下.而要把它用于一些大功率场合,比如控制电动机,显然是不行的.所以,就要有一个环节来衔接,这个环节就是所谓的 功率驱动 .继电器驱动就是一个典型的、简单的功率驱动环节.在这里,继电器驱动含有两个意思:一是对继电器进行驱动,因为继电器本身对于单片机来说就是一个功率器件;还有就是继电器去驱动其他负载,比如继电器可以驱
[单片机]
51<font color='red'>单片机</font>控制继电器
AVR单片机4路可调PWM
#include avr/io.h #include avr/interrupt.h int main(void) { DDRA=0XFF; DDRB=0XFF; PORTA=0XFF; PORTB=0X00; TIMSK=0X00; TCNT0=0; OCR0=25; TCCR0=0B01101001; //定时器1,输出7.81220kHz的方波 TCNT1H=0x00; //计数器清零 TCNT1L=0x00; TCCR1A=0xa9; //8位快速PWM,8分频; TCCR1B=0x0a; TCCR1C=0x00; OCR1A=0x40; //OC1A 输出
[单片机]
PIC单片机编程小技巧
在pic单片机编程当中,会遇到这个问题,程序已经没有问题,也烧录成功了,硬件也上电了,但是为什么什么反应也没有呢? 后来我发现是我的configuration bits没有配置好,以下是我总结出来,如何让PIC正常工作的所需作的检查,前提是代码没有问题。 1、选择好芯片; 2、设置好Configuration Bits; 3、系统上电; 针对Configuration Bits;我在pic16f873a的设置如下: 当然不同芯片设置不同,具体参见各个cpu的数据手册了。 在系统启动后,比如振动器起振了,系统还是不如所愿,那么就检查一下代码的逻辑正确与否,当然也不能排除硬件上的问题,软硬结合才能找到问题的所在。
[单片机]
PIC<font color='red'>单片机</font>编程小技巧
基于双单片机的悬挂物体寻迹控制系统
历届全国电子设计竞赛的题目可以分为电源类、信号源类、无线电类、放大器类、仪器仪表类、数据采集与处理类和自动控制类,在2005年全国大学生电子设计竞赛中,悬挂物体控制系统就是一道典型的自动控制类赛题。本文着重介绍一种基于双单片机的悬挂物体沿板上标出的任意曲线运动的控制系统方案。 1系统设计要求和设计思路 题目要求控制物体沿板上标出的任意曲线运动,如图1所示。曲线在测试时现场标出,线宽1.5cm~1.8cm,总长度约50cm,颜色为黑色;曲线的前一部分是连续的,长约30cm;后一部分是两段总长约20cm的间断线段,间断距离不大于1cm;沿连续曲线运动限定在200s内完成,沿间断曲线运动限定在300s内完成。
[单片机]
51单片机“积木式”实验板的制作
这套实验板每块板上的元件数不多,采用万能板和敷铜板丙种方法制作均可,上图中的实物就是用l5xLOCm万能板制作的。主控板的制作要注意的是PO口的引出端,从主控板原理下图可以看到,PO口引出端接线柱的排列方向和51 芯片 的PO口引脚的排列方向正好相反,所以要接跳线,别的三个 端口 的对外接线柱排列方向和51芯片的端口引脚方向一致。这样安排主要是保证不管主板怎样摆放,板上边两个端口各自的8个接线柱排列从左到右分别按PX.7、PX.6、...、PX.1、PX.0(X为0、1、2、3)的顺序,这样容易记忆,特别是外接数码管驱动时尤为方便。 另外要注意各元件的安装高度,保证40脚锁紧式插座装上芯片后,锁紧柄按下不被板上所装的元件挡住。
[单片机]
51<font color='red'>单片机</font>“积木式”实验板的制作
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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